Hello Nix community,
I’d like to initiate a pre-RFC (Request for Comments) discussion regarding a proposed shift in our communication platforms for Nix development. We’ve been using a combination of Matrix (IRC before the Freenode event) and Discourse for a while now, and while they have served us well, it’s becoming increasingly evident that they are not without their shortcomings. This proposal aims to address these issues by considering the adoption of a Zulip instance.
The Current State of Affairs
Our current communication tools, Matrix and Discourse, have played a significant role in our ability to collaborate, share information, and discuss development topics. However, as Nix development evolves, I have encountered several issues that need attention:
1. Matrix Deficiencies:
- Lack of Threading: The absence of proper threading [1] in Matrix discussions often makes it challenging to follow conversations, especially when several topics are discussed simultaneously. This leads to confusion and inefficiency in communication in channels like Nixpkgs Development or sometimes NixOS infrastructure.
- Resource Intensiveness and User-friendliness: Matrix is resource-intensive in many ways: the client has became a resource hog on mobile, alternative clients are not always on par for features, (encrypted) messages are lost.
I personally reached out multiple times to Element about our issues and as I understand it now, Element is not in a so-good-shape for working on community issues because of their funding situation. As far as I understand, alternative to Element could be considered but it would be hard to base our productivity platform there.
[1]: The threads as they are in Matrix are semi-broken, and are not rendered by all Matrix clients, they cannot be considered reliable IME and we often ask people to not use them.
2. Discourse Issues:
- Thread Management: While Discourse offers more structured discussions, its threading model is not always intuitive, making it difficult to track related conversations effectively.
- Overhead: Navigating Discourse can be cumbersome, with the potential for information overload, making it less efficient for developers who work on Nix on a daily basis. (this is also true of Matrix sometimes.)
Unfortunately, Discourse was not the Mailing List replacement people touted it was as far as I understand it.
Exploring a New Solution: https://zulip.com/
Given these challenges, I would like to submit to the community to consider the possibility of adopting a Zulip instance as our primary chat collaboration platform for developers. Here’s why Zulip may be a promising alternative:
Zulip propose a synchronous and asynchronous chat model with plenty of batteries (video calls, etc.), we lose the possibility of offering to our users to federate with our instance, but it’s not clear this is a feature which benefits people who just want to work on Nix, therefore, I would not say this is an active goal of a collaboration platform for the project, just a nice to have.
Zulip possess mailing list-style threading, albeit with a more modern (whatever you like it or not) web twist to it.
The mobile app is okish and more usable in my experience [2].
Self-hosting is very much possible and I worked on the matter at some point here: Package request `zulip` · Issue #50209 · NixOS/nixpkgs · GitHub and the Zulip developers seems to be interested into maybe using NixOS themselves (??? maybe that’s not the case anymore).
Of course, I recommend to use their instances like we let Element EMS host our Matrix.
Also, I do not recommend removing the Matrix, but would argue that we should carefully examine how to perform a slow transition that is respectful of everyone’s time or that we deem it impossible and accept the statut quo.
[2]: I have been using and/or participating in the Lean theorem prover, Coq theorem prover, homotopical type theory, Rust project, RustCrypto project’s Zulips with better success, for the Lean, even on a semi-daily basis at some point in my life (and I remember a smoother experience, though working on mathlib is kind of like working on nixpkgs, except you swap package for mathematics).
Considerations for the Community
Before proceeding with any changes which should probably go via RFC, it’s essential to gather feedback and insights from our active developers. I want to maintain a platform that suits the needs of our community and if most of our active developers are not interested or see alternatives or prefer to explore different solutions, I believe it would be nice to express them here.
This pre-RFC discussion serves as a starting point to gauge interest, concerns, and opinions on transitioning to Zulip or exploring other alternatives. I am completely open to suggestions, and I want to make this decision collectively, ensuring it aligns with the majority of our developers’ preferences.
Alternatives: Mailing Lists
While we aim to improve our sync and async chat collaboration, it’s worth mentioning that mailing lists remain a viable alternative for async. However, I understand that some developers might prefer a chat-based platform over mailing lists due to its immediacy and convenience.
I, for one, also prefer mailing lists for asynchronous chat collaboration, but I use NeoMutt on a daily basis, I also realize this may not be a consensual opinion and may drive off developers.
In conclusion, our current communication tools, Matrix and Discourse, have served us well, but they are not without their challenges in my humble opinion. This pre-RFC discussion is an invitation to all Nix developers to share their thoughts on a potential transition to Zulip or other alternatives that might better suit our evolving needs.
Thank you for being part of the Nix community and helping me make informed decisions for our collective benefit.