People utilize open-source software every day; some know they are using it; others are less aware of their surroundings. In the web world, many open-source projects are critical to the success of many of the world's largest websites. For example, jQuery was used by 73% of the top 10 million websites in May of 2019! Even closer to home .NET is Open-Source which means that 98% of the work that I complete is being developed using some form of an open-source project.
In addition to this, I am the leader, or sole-maintainer, of several additional open-source projects, including my popular Azure DevOps Extensions and the DNN Platform project. I have noticed that although open-source software adoption is on the rise, the support of these projects and their maintainers continue to lag. From these discussions, I've learned that many individuals don't exactly understand how things work, especially when there are apparent corporate entities involved. So I thought I'd take a different approach to the problem and talk about open-source as an end-user.
Types of Open Source Projects
It is essential to understand that not all open-source projects are created equal. Yes, there are different license models; however, understanding how the project support is done is crucial. I typically group projects into two categories.
Funded projects have paid-staff responsible for developing and furthering the project as leaders/collaborators to the future direction. .NET is an excellent example of a funded open-source project, where Microsoft has a vast team that helps set the direction and implements changes. Just because the project is funded, we shouldn't downplay the importance of volunteer contributions, but these projects would still have forward velocity internally. However, that velocity might not continue for long without validation/contributions from outside.
The far more standard model for open-source is the all-volunteer model. These projects thrive on a passionate audience that will actively work, without pay, to help drive a project forward in their free time. This model is how the DNN Platform project and many others work; the goodwill of others help these projects move to the future.
Why It Matters
Understanding this distinction is critical, as expectations will be slightly different depending on the model.
Funded projects can easily manage a release pipeline and set realistic and concrete dates for releases. They have paid staff members committed to delivering features and adding additional contributions from the community. Their exact release dates might vary slightly based on contributions, but they can commit to an overall schedule.
On the other hand, volunteer projects require contributions to move forward, and their release cycle may very well be set based on the availability and interest of those in the community. Often, this means that new features will be easier to get as they are "shiny" and "fun," and longer-term strategic cleanup operations will be harder to get as they are less glamorous.
Like the release cycles, the testing & quality of releases can be influenced by the project's structure. Funded projects will often have an internal testing team, and volunteer projects will need to lean on the community for assistance. This can prove difficult for the volunteer teams for the same reason that new features are easier than fixes as the work to wrangle volunteers can be tiresome.
So, What's My Role?
I'm so glad that you asked! With a better understanding of open-source project leadership, what can you do to be a better open-source consumer?
Obviously, the best thing you can do for any project is to contribute! Contributions can be anything, though, and are not just limited to adding new code to the system.
Did you report a new bug? Verify an existing one? Test the release candidate before it was published? Update the documentation? Attend a planning meeting?
If you did ANY of these, you are helping further the projects that you support! If you aren't, can you? You don't have to be as crazy as some of us and dedicate hundreds to thousands of hours a year to the projects, but anything helps!
Is there someone within the community that always helps out when you need it? Someone that you might want to thank for all of their contributions? Well, GitHub has a solution for this as well, it is called GitHub Sponsors. Through this program, you can sponsor a developer to show your appreciation for what they do for open-source. Even a $5 sponsorship can be motivating to an open-source contributor to know that the work they are doing is appreciated! You can visit my GitHub Sponsors page to see an example.
I should be very clear here, this isn't a plea to sponsor me, it would be appreciated, though, but a plea to acknowledge and recognize others' vast contributions.
Open-source is a great thing, but it is important to look at it more than just free software!
This has been cross-posted to my personal blog on MitchelSellers.com.