Funding OSS
The topic of funding open-source software comes up relatively often on HackerNews. It’s definitely not solved but very much worth solving. The value OSS creates is immense and it makes a lot of economic sense to encourage its development.
One of the biggest problems is that everyone wants OSS but no one wants to pay for it.
There are a few ways that OSS is currently funded.
-
SaaS
There are a few examples of a project that’s open source but the organization that develops it hosts it as well. This has also resulted in a new licence where the software is open source but you aren’t allowed to run a competing service business. Examples include Elastic and Redis.
-
Patreon
Some smaller projects have the maintainer set up a patreon account from which they draw a salary. Vue is the most notable example of this I can think of.
-
Consulting, services, and support
In this model the software itself is opensource but the parent organization provides services around the software. Examples are Ubuntu and RedHat providing premium support.
-
Opencore
Opencore software has part of it open (the core) with additional features proprietary that are for sale. Examples include Gitlab and Elastic (again).
-
The Apache Foundation
The Apache Foundation doesn’t directly fund projects but it does run an incubator.
-
Tidelift
Tidelift sells subscriptions on behalf of the maintainers mainly targetted towards the enterprise. It is effectively a marketplace. The maintainers are merchants and enterprises the buyers. I do like the fact that their model distributes the subscription proportionally.
The future
I don’t think any of these are suitable for smaller projects or individual contributors. Patreon is probably the closest but it still less than ideal.
So here’s what I imagined.
The Foundation for Open Source
Open source projects would go through an application process where they’re evaluated based on usage. If they pass a set of benchmarks the maintainer would become an employee of the foundation. They would maintain ownership of the project. Depending on the usage the maintainer would be hired at a different salary level.
All employees of the organization would have their assigned projects. Often, this would be the original projects they joined. They would be free, however, to contribute to other projects as well.
Projects could also be submitted to the foundation if the maintainer is no longer in a position to continue working on them. The foundation would take ownership and the project would survive.
Projects would get re-evaluated on some periodic basis, perhaps bi-anually.
The foundation would be a non-profit but would generate income through different models above:
- Conferences and speaking engagements
- Books
- Support subscriptions
- Sponsors
- Direct patronage of individuals
I think this approach has many benefits:
- It’d provide stability to contributors: they would get regular salaries.
- It’d allow them to focus full-time on a project they’re passionate about
- Just like startup incubators it’d provide all the extras needed (such as payroll and marketing)
- It would also create career progression within open source
- It encourages smaller projects
- It establishes OSS as a viable career path
- It would help projects not die
- It would help create more cohesive ecosystems where projects that are part of the foundation would work better together
- It would be improve quality through common principles (such as having a security team that peridically audits projects)
- Maintainers of one popular package often are involved in some capacity with several and this approach would facilitate that
I think the career progression aspect of this approach is especially worthwhile. With sufficient experience a smaller project maintainer could become responsible for an entire group of projects. Or a framework. Or a language. They’d eventually become part of the foundation itself rather than tied to a project that they’re maintaining. It would establish open source development as a viable long-term career prospect. Now, that’s sort of viable if part of a large organization (eg. Chrome/React).