Skip to main content

Solving open source funding through gated releases

Published on

Open source has a maintainability problem; but, we all know that. It has been a significant theme of the past few years. How do we sustainably build open source software? What makes open source sustainable? Maintenance of a project does not involve just the development of features or bug squashing. Maintaining a project requires documentation, project management, issue queue triage, support, release management, and roadmap development.

Individuals in open source are capable of fixing their bugs and writing the code for their feature requests. This is usually an initial push to meet their specific requirements and hit their deadlines.

Organizations are not afraid to pay for features; that is the way the world works. Proprietary or open source, you pay to have things added to the software.

The trend that I see is that only features and bugs which impact an individual or organization at a specific time are a concern. This leaves a large hole in ensuring all of the other tasks are taken care of.

Many mature open source projects have enough (well, a select few, probably) organizations dedicated to project management, release management, and documentation management. Smaller projects, or microcosms within an open source project's ecosystem, generally do not have the same support.

Regardless if it is a Drupal module or a React library, it can be hard to find the incentive to maintain a project because it isn't sustainable. The code was written for a finished client project or the time investment has had to move elsewhere. Maintenance has moved into the spare time available of the creator.

One trend to solve this problem has been sponsorship funding through GitHub Sponsors or Open Collective. There is a problem with that. Do organizations see value in an individual sponsorship or "in good faith" payment to a project? From what I see, it is mostly individual developers who feel connected with the project that is funding it.

One way to fix this problem is through gated releases. Paying an annual fee to receive releases covers the "hidden" costs of running a project. Organizations can still pay to have specific features implemented or prioritize certain bug fixes. But that annual revenue covers time to maintain documentation and manage releases.

As much as I have given flack to the WordPress community for having a completely paywalled and gated plugin ecosystem... it is sustainable and has some very well rounded solutions. Organizations will pay for a software license if it is required. They will not necessarily fund a project out of good faith because it is the right thing.

Even if the code is GPL, like WordPress or Drupal, it is within the author's right to charge for that release. I have always been told, "well, someone will just fork you or release the code." As time has gone on, I realize a small percentage of people who might do that. Or maybe our environment has changed, and folks recognize the value in actually paying for things. Organizations will be willing to pay for a license to ensure they have the support and up to date code.

If anything, having the code GPL makes it a perfect balance. If you're receiving payment for releases and doing a proper job keeping up with releases and having high quality code, the project is worth the cost. If the project begins to lag in quality, it is within the end user's right to take the code and make a fork to make up for lagging responsibility of the original maintainer (just like regular open source.) The ability of someone to fork the code gives incentive for the maintainer to keep high quality code and stable releases.

It would be interesting to see if GitHub, NPM, or other software repositories added gated software release support as a more reliable way to sustain open source project maintenance. Let's say the latest release is gated until the next release or for some period of time. It eventually trickles into open source but adds incentive to subscribe.

React Router has 3,853,351 weekly downloads. It's the routing component to React. Could you imagine what would happen if each organization (not even each project) paid $200 annually to receive the latest release? That project would be incredibly funded and sustainable.

Photo by Henning Kesselhut on Unsplash