Nadia Eghbal’s recent book Working in Public: The Making and Maintenance of Open Source Software, covers what the open source experience is like for maintainers today.
It ends with the following sentence:
“We don’t have all the answers yet, but I’m hoping this book helps point us towards the right questions.”
This felt like a very apt conclusion, for I did walk away from this book feeling a lot more sympathy for those who do work in open source, but also without any real answers or solutions for what we can do about open source.
This post is a summary of some of the things I learned from Nadia’s book. At around 250 pages it’s not too long of a read so I would definitely recommend buying the book for yourself if you have any interest in this topic.
The open source community has grown friendlier, and more inclusive
Eghbal points out that open source has come a long way in becoming a more open and inclusive community. Repositories now have codes of conduct, and there is a culture of being generally welcoming and friendly towards first-time contributors. This contrasts with the earlier “benevolent dictators” of open source like Linus Torvalds (the creator of Linux) who in 2018 apologised for his many years of "unprofessional and uncalled for" behaviour.
I’ll admit gave me a chuckle when I turned the page to see Torvalds giving the finger, juxtaposed with Sindre Sorhus surrounded by Huskies:
Github is also credited for reducing the barrier to participating in open source. Since we have standardised on Github as the place most open source repositories live, this means users are more likely to be familiar with the interface (and to already have an account). This makes it a lot easier for users to open issues when they encounter bugs or have questions, as well as to raise pull requests to fix these bugs or add new features.
Popularity can lead to maintainer fatigue
The generally welcoming nature of open source combined with the ease by which users can create PRs or issues can result in a lot of work for maintainers (especially those who maintain a repository by themselves). They may feel pressured to respond to every issue and pull request received, and to spend time helping contributors to get their pull request to a state where it can be merged.
Of course, not all contributors are a burden. It may be that by taking the time to help a first-time contributor merge a pull request, they could go on to contribute more useful pull requests in the future. But if more than 50% of contributors are one-off contributors to a project, that can be a lot of time invested by maintainers that they're not going to see a return on.
This pressure can cause some maintainers to want to quit. However even quitting can be hard! Deleting a popular repository could “break the internet” as was the case with left-pad. And finding someone to take over your repository might mean needing to put your faith in a relative stranger, who could end up adding malicious code to steal your Bitcoins.
Should open source be a one-way mirror?
One of the potential suggestions Eghbal poses to this problem is to make open source a one-way mirror. In practice, this would mean that users would be able to see the code, as well as any discussions that maintainers are having, but would no longer be able to open pull requests or issues asking for help.
Maintainers would be able to opt-in certain contributors who they know would bring value, or they could allow people who are sponsoring their project access as well.
This would drastically reduce the amount of time maintainers have to spend responding to users’ requests, and allow them to do more high-value work.
With the inclusive and welcoming nature of open source, there could be some anger directed towards maintainers who take this approach. I think it would be too drastic of a change to be widely adopted any time soon, but I think there's a lot of inspiration we can take from this idea. Maybe there's some sort of middle ground?
Looking for solutions
Eghbal has pointed out some of the problems plaguing open source today, but given this is a very hard problem to solve, understandably there are no perfect solutions yet.
To some extent, we can mitigate some of the busywork maintainers have to do by using bots and other automation (like running tests when contributors open PRs). Maintainers can also uphold a certain set of standards that a pull request must meet before it becomes reviewed, and provide clear documentation to help first-time contributors meet these standards.
Maintainers could also employ curators who could maintain a similar role to what moderators do on Twitch - weed out any low-value issues or pull requests, and surface to the maintainers only the issues and pull requests that are worth the attention.
As Github is the platform of choice for open source, maintainers are also reliant on Github to provide the features they need to work effectively. For example, users can now vote on issues by using the “thumbs up” emoji, but for a long time this feature was not available, and so maintainers had to deal with receiving notifications from users leaving “+1” comments.
Conclusion
As someone who has dabbled a little bit in the open source community, Working in Public has provided me with a lot of food for thought, and definitely makes me more sympathetic towards maintainers!
The book feels especially relevant this month with Hacktoberfest which has unfortunately caused a lot of difficulty for maintainers of open source projects.
I'm interested to see what direction the open source community takes into the future. I think the idea of curating issues/PRs on repositories (similar to Twitch moderation) could also be a great way for people to start contributing to an open source repository if they don't feel comfortable enough with the codebase, but want to help out.
Maybe there's some way we can crowdsource this and create some sort of platform so that maintainers can ask for help curating, and volunteers can step in. Could be interesting!
Top comments (9)
Being part of a free software project for 20+ years and close to that enthusiast crowd who use Linux on their desktop - the challenges are interesting and take on another dimension when working at the consumer level.
Great post - thanks for sharing.
Thank you! To be honest I wasn't really aware of that distinction between free software vs open source - something I need to read up on.
The difference is open source is a software development model that has a social contract with the community to socialize the cost of development by being more open through an open source license.
Free Software is a social movement that believes that the source code should be available to all - based on the 4 freedoms:
I used to ask this as an interview question :D
SQLite for example have been following this model for soo long, you can't create any PRs but contributions can come in form of bug-reports, etc
Can't say if it's effective for the long term or not but hey we see its clearly possible
Nice!
I'm familiar since I am part of a Free Software project - GNOME and have been for 20+ years. So being able to use a machine from use older machines and still make them useful is a great thing and actually reduces our carbon footprint - feel free to check out what my employer is doing in this regard (see the blog series I'm writing)
Thanks for the explanation!
Wow, funny to think they used to think that way and now they've acquired Github!
When I am using social contract - I'm not referring to any guidelines or anything - just the use of an OSI approved license is the social contract that's why I added the license. By using the license, you're saying I'm going to open up my code so that you all can participate. I'm not using a formality as defined by Debian Social contract.
But your comment does not invalidate the difference between Free Software and Open Source - Free Software is a social and political movement - Open Source is not - it is a method of collaborative engineering that involves the programming and non-programming public.
Since I wasn't really aware of the "free software" distinction I did a bit of reading. When you're talking values do you mean how open source today has these values of being "nice" and exclusivity? Do you think we should be swinging back towards the more "mean" approach?