Mailing Lists
Mailing lists were the popular way of discussion, bug-tracking and “pull-request” handling in the nineties. They still hold advantages over newer ideas such as hosting issues and pull requests on GitHub or a similar plattform of choice.
1 Advantages
1.1 Threading
Emails allow responding to any other email message that has been sent. This allows for unlimited threading capabilities.
1.2 Offline-support
Emails can be written offline and sent when back online. Being offline might be a choice for some developers, who like to work distraction-free. But it is even more important for developers without constant internet access, although this becomes more and more rare.
1.3 No vendor-lock-in
Hosting a project on GitHub or any similar plattform locks you into their issue tracking and pull request system, with no easy way to switch from that. Since email is an open protocol, nobody is locked into using any specific client or server, except for the usually self-hosted and (easily) switchable list server.
1.4 No third-party-authentication
With GitHub, participants in discussions are required to be registered users on the plattform. Identity authentication is therefore provided by said plattform. However, with email authentication is provided by the ICANN, an international institution.
1.5 Customizability
Email clients have been around for a very long time. People can choose any of those to work with and hook them into their workflow with keyboard shortcuts, scripts and whatever else they desire. Mailing lists make it much easier (or actually possible) to follow the UNIX Philosophy.
1.6 Keeping patch history
On mailing lists contributors don’t create a git branch with suggested changes, but instead submit a list of patches in the emails. These patches will always stay as-is in the email, which means anyone can refer back to them at any time, preserving history. A gitbranch will usually be force-pushed to, to keep a clean history. That deletes any information on the old patches though, making it impossible to re-use any ideas from them, or simply refer to them.
1.7 Taking over the work from someone else
Since pull-requests on GitHub are done by forking a project, other users cannot add any commits to the branches made on the forked project. Continuing the work of another contributor who might have gone MIA requires the creation of another pull request, loosing context. On mailing lists, it’s as simple as answering to the latest message with a new set of proposed patches.
1.8 Patch formatting
Since patches are hand-crafted or at least hand-pasted into each mail, they can be edited for ease of use. This means no algorithm has to decide how exactly to calculate differences between files, but rather the author of the patch can decide how best to describe their changes.
1.9 Unification of issue discussion and implementation
In mailing lists, implementation of a discussed feature or fix is as simple as responding with a set of patches. On GitHub and similar plattforms however, issue tracking is entirely separate from implementation (pull requests), requiring a context switch and loss of easily discoverable history once the initial discussion stage is over.
2 Disadvantages
2.1 CI is harder
Tooling for repository hosting services such as GitHub or gitlab is being developed rapidly. It is very easy to set up automated software testing for any commit to a remote branch. This tooling is harder to set up for mailing lists, where you don’t have a branch to work with but instead have an evolving list of patches to apply to the project.
2.2 not as beginner-friendly
GitHub has a unified interface for all projects hosted there, and any similar services work basically the same way. That means that once a developer has learned how to contribute to one project, they have an easy time contributing to any other project hosted on the plattform as well. Mailing lists have different sets of guidelines and rules though, getting information on the project itself usually requires you to go to the website or the project’s readme, which are generally harder to get to and have an idea of how to navigate than on the plattforms, which make this experience the same for all projects. The git server is different for projects too, which makes it a different process anytime anyone wants to just look at the source code before deciding to contribute, download or otherwise interact with it.
2.3 Discoverability
Plattforms such as GitHub have a concept of starring projects, which gives social credibility to the projects. They also have a global search, which allows easy discoverability of projects for specific topics. Mailing lists on the other hand don’t have any such social credibility system in place. While older projects do just fine without, newer projects need to use tricks such as hosting a read-only mirror on github for reference and social credibility.
2.4 Bug Overview
The plattforms make it easy to see a list of all open issues and bug reports. Mailing lists do not have any intrinsic feature like this, requiring other tooling to be set-up. However, quite a few options exist here, so this issue can be fixed with a bit of setup.
2.5 Global patch state
On GitHub it is very easy to see whether a pull request has been reviewed and accepted for merging. On mailing lists however, there’s no such system in place by default, and external tools have to be set up which might or might not integrate nicely with workflows of the participants.
2.6 Accessing discussions before joining the mailing list
On GitHub all discussions are hosted on one provider, where all future participants have access to any past discussions. On a mailing list, an archiving system has to be set up (which is easy to do) and past emails have to be imported by the future reader to have easy access to them in the same way they would have access to messages after they’ve joined.