Published On - April 27, 2023
Chasing Open Source Dreams: My bittersweet journey toward monetising free software
As someone who has spent the last 6 plus years responsible for one of the leading open source Ethereum integration libraries — Web3j, it has highlighted a number of the challenges associated with maintaining free software.
The age of abundance
The role of developers has changed significantly in the past twenty-plus years, where during the 1970s through the 90s they spent a lot of their time writing applications from scratch and deciphering manuals associated with proprietary libraries they were working with. There were few additional sources of information or help they could go to when they became stuck on an issue.
The internet changed this, with the ability to share information easily, and sites such as Stack Overflow flourishing with answers to most questions a developer is likely to encounter through their work. Engineers are now very fortunate to live in an age of software abundance where free software is available to perform almost any tasks they require.
With this abundance of open-source frameworks and libraries, the majority of developers’ work these days entails being plumbers finding ways to coordinate with these various libraries and simply converting data from one format to another.
Whilst the widespread availability of this software is incredible, and the communities continuing to create and maintain it are driven by their passions and beliefs in the technology, the manner in which it sustains itself demonstrates how many technology altruists (I used altruism in the truest sense of the word, not the SBF sense) there are out there.
When someone creates open-source software, it is a gift to developers and communities. The author is creating something they believe will solve a problem or make the lives easier of those who embrace it. At worst no one takes notice of the software and it falls by the wayside, becoming yet another graveyard in GitHub. At best it starts seeing others using it and starting to depend on it.
Gaining traction is rarely something that happens by chance. In reality, the author has to do a lot of work — writing content, docs or giving talks about their work. But the more successful the software is, the larger the burden often becomes for them.
The cost of OSS
Software is never perfect. Even if it is considered bug free, there are always ample opportunities for improvement, or simply maintenance, keeping it current so it works with the latest and greatest languages.
This maintenance has a cost — developer time. This is the burden that is placed on the authors of this software. As with any living organism, it needs to be nurtured and looked after over the long run. Unlike print or documents which once committed to a standardised format such as a book or a digital format like PDF, code is constantly evolving. This cost of developing and maintaining OSS wouldn't be an issue if it were paid for by its users. But with free software, the expectation is that it’s free in the truest sense of the word.
My own experiences
That people are willing to create software without any guarantee of payment for it, demonstrates just how generous many developers are. I remember back when I created Web3j in 2016, I saw it as an obvious gap that existed in the Ethereum ecosystem. I couldn't believe someone hadn't addressed this gap so I decided to step up and address it.
The experience was great, I got to collaborate with lots of people around the world, and in the 6-plus years the project has been going, it’s been downloaded millions of times and contributed to by 180 people with over 100 releases.
However, the cost to develop and maintain the project continues to be a consideration, as of those millions of downloads we don't see revenue from it. Just a steady stream of issues being created and pull requests being proposed that must be curated and managed.
We've been very fortunate that some organisations have given us funds in the form of grants. But grants do not self-sustain open-source software, there needs to be a commercial interest that does.
This typically comes in one of two forms:
- The software is of significant value to a commercial service, and the commercial organisation is willing to invest resources in contributing to the open-source software that underpins its service.
- The creator of the OSS obtains investment to commercialise parts of the software, often following an open-core model, where proprietary components are created and it may be offered as a SaaS product.
The former tends to be the domain of large organisations contributing to very well-known projects — think Intel or Huawei with Linux, or AWS or Microsoft with PostgreSQL. The latter case would be the likes of WordPress, Docker, Kafka or Reddit and most OSS that gain significant traction and can be presented as a platform offer.
Outside of this, the open-source software that contributes in some meaningful way to many of the commercial applications that run businesses is typically maintained by an army of passionate volunteers reliant on grant funding or simply out of the goodness of their own heart.
Web3 funding models
Web3 has provided innovation with respect to funding models, where blockchain networks, and widely used DApps have created tokens which have been used in part to create incentives to contribute to their platform. This has been very successful in building thriving ecosystems in web3. Although, the allocation of these tokens is similar to grants, insofar as it helps projects to keep going, but doesn't sustain them in the long run alone, as these payments are not made on a continual basis.
The ideal approach would be one whereby funds can be continually allocated to contributors without the need to go through a claim or grant application. However, practically speaking these are likely to be complex to do without some sort of clawback available to those providing this funding.
Traditional funding models
There are other approaches such as GitHub Sponsors which provide a convenient mechanism to support open source projects you use (Web3j just happens to have one if you'd like to contribute), or open source foundations such as the Linux and Apache Foundations which help govern open source projects.
GitHub Sponsors is a great way to directly benefit teams financially, whilst foundations tend to bring visibility and additional contributors to projects. But always, behind the scenes, there is a committed team continuing to support the software based in part on their belief in why it should exist for the long run, and this should never be overlooked, nor taken for granted. It’s never a straightforward journey.
Ways to contribute
Open-source software is an incredible force for collaboration that has seen the creation of free software solutions for almost every niche. The creation of this is not without cost. There are millions of developers contributing to this movement, and it will no doubt only become stronger.
It is my hope that over time, the mechanisms by which contributors can be funded to support this will become ever more streamlined. However, in the meantime, do spare a thought for those projects you've come to rely on in your work.
Finding ways to contribute back will always be welcomed. Be it financial, by contributing or even just discussing it will be welcomed, and help sustain it into the future.