Following my previous post, I’d like to keep sharing some personal humble thoughts about on going debates around open source status. This post is focus on the so called unbalanced relationship between open source software maintainers and open source software users.
Who are the open source software maintainers? And the users?
People develop and maintain open source software. They might be doing it on their spare time, or as part of their work for a company or organization.
Contributions to open source software are not only related with code development. CHAOSS community is doing an interesting work about this topic. But, in this post, when I mention maintainers, I’ll be talking about the people that write the code.
And we have the users, people taking open source software developed by the maintainers and using it as it is, or modifying it, for their own purposes. These purposes could include to redistribute it as part of their software. Of course, these people could be doing it also in their spare time, or as part of the work being done for a company or organization.
Why this relationship is unbalanced?
One of the key arguments I keep hearing is that corporations are taking open source software for free without contributing back. And one of the typical arguments is that these corporations are making millions of dollars thanks to free work.
Another argument I’ve heard is that open source software maintainers burn out due to users complaints and requests for free support in the issue tracking systems and communication channels available in open source software projects.
The first unbalance is that, usually, the number of users exceed the number of maintainers. Is that good or bad? I think that having users for our software is good. But we need to manage expectations on both sides.
First things first: responsibilities when releasing open source software
My utopical mindset makes me believe that people (and companies) do software because they need to solve a problem. It’s been said that the most successful software projects come from scratching someone’s own itch.
In any case, I expect that people understand that once they release software as open source software, anyone will be free to use, to learn, to modify, and even to redistribute it, according to both free software definition and open source software definition.
So, I would recommend maintainers to relax and to enjoy that there are people using our software. Meanwhile, I’ll focus on ensuring the software serves the purpose it was created for: to solve a certain problem.
Do we want to avoid people from using our software for any particular reason? We don’t need to re-invent the existing definitions. Simply, don’t call it free, open source software.
Meanwhile, users keep requesting issues to be solved, and improvements to be made. This might sound unpleasant, but in my humble opinion, that’s not maintainers responsibility. From my point of view, that’s maintainers favor to the users.
I haven’t read every license clause (sorry for not being an expert on such field), but most of the ones I know specifically say that software is provided “AS-IS“. They don’t say anything about the author’s obligation to solve any issue or to implement any feature request. So, relax, don’t burn out.
Additionally, some people and companies have developed interesting business models around this problem: support, consultancy, and customization as services for open source software users.
But users also have responsibilities!
From my previous comments you might think that I support the unbalanced relationship in favor of users to take maintainers work for free. Nothing further from reality!
Users also have responsibilities when getting free, open source software. We need to understand that, as in any software we use, there are some risks: bugs, lack of certain features, vulnerabilities, etc.
I am really worried when companies say they are using a lot of free, open source software, but I don’t see them participating in those projects or buying support from third parties. And there are several ways to participate to reduce risks. To name just the two most important for me: becoming contributors, and funding initiatives.
How contributors might help to open source projects sustainability?
Previously I mentioned maintainers and users. Who are these contributors? When I talk about contributors I am talking about the people in the community that perform certain actions like:
- Solving issues listed in the project’s issue tracking system.
- Commenting and providing feedback in issues to ease their resolution.
- Answering questions in the project’s forums, questions & answers systems (like StackOverflow or Askbot)
- Submitting patches to improve the software or to solve existing issues
Contributors may help the project by reducing maintainers burn out. In my humble opinion, it’s important for the maintainers to learn to delegate to these contributors. Tip: at some point in time, some contributors could become maintainers too!
I recommend to read Mike McQuaid’s post about the open source contributors funnel. It’s been an inspiration for me. It is important to help people in open source software projects to evolve from users to contributors, and eventually, to maintainers.
In other words, the community is one of the most important assets of an open source software projects. If we don’t take care of the projects communities, we will run into risks and sustainability issues at some point. In my opinion, the community is the force that gives balance to the users – maintainers unbalance.
Probably, I will write a blog post about this users – contributors – maintainers categorization, and how people in open source projects could be a mix of profiles. They are not isolated, because a person could use, contribute, and even maintain the software.
Funding: is it all about the money?
There are great initiatives to support maintainers financially to help projects sustainability. From brilliant business ideas like Tidelift, well thought ideas like Open Collective, to incredible open source foundations like Software Conservancy. I think Chris Aniszczyk has also done a good review in his post “8 ways your company can support and sustain open source”, and I recommend to listen to Josh Simmons interview in Sustain podcast.
And last, but not least. There are companies providing support for certain free, open source projects. It might be interesting to hire them, specially if the core maintainers of the projects that matter to us work for them.
And, what about Github Sponsors? My first reaction was very positive. But currently, I feel it is some kind of open source Gig economy promotion. In my humble opinion, it doesn’t ensure any long term sustainability for the maintainers.
To wrap up …
I am worried to see that some people still believe that publishing their code in Github or GitLab is doing open source software. It could comply with the definitions mentioned earlier, but in my honest opinion, without taking care of the people using and contributing to the project, we will be running into projects sustainability issues.
By taking care, I don’t mean solving all the issues and requests, but providing means to empower users into contributing, and to delegate to contributors to become maintainers at some point.
Tip: build a community with the care you build software.
Users must contribute to the open software projects that matter to us if we want to reduce risks. And if we don’t do it, we need to understand that problems will be in our roof, not maintainers’.
In my opinion, we don’t need to break any definition, but to understand the responsibility of our actions as users, contributors, and maintainers of open source software projects.
Additionally, initiatives like Github Sponsors have created the feeling that “getting paid for doing open source” is too easy. Is that easiness a path to have Gig Coders? Do we want open source software maintainers to be Gig Workers?
Sorry for the long, and probably poorly structured, blog post. I have tried to write some thoughts, and I’d love reading your comments and ideas about this topic.