For many years I have been contributing to open source projects. In the
early days I was still at school, and contributing was something fun to do
in my free time.
Then when I entered Uni open source became much more difficult, time starts
to run out and with the costs associated with going to and from University
it becomes more difficult to fund projects as well.
After dropping out of University, reality hit. Expecting to be able to
contribute to open source for no monetary benefit is just unsustainable. I
think it takes until your early 20s to realise the importance of income and
money as a whole, and that definitely hit me hard.
People are free to donate if they enjoy/use something I have contributed to
or worked on. However the main benefit of a donations page is an easy way to
negotiate and pay for small services. See below for more information.
How to fund an open source project
Nobody likes feeling indebt to others, however open source has a few major
drawbacks when it comes to financial matters.
Because the source code must be open to all, nothing stops people reading
and compiling their own versions. This makes it difficult to directly
monetise the source code, or documentation directly.
There is an expectation for open source work to be done without any
financial gain. Many people get caught in this trap, where a hobby
project gets adopted and then people freeload off that project until the
maintainer burns out trying to keep up with no financial gain.
Lots of projects are small, they don't have the same outreach as major
projects do, and the labour of those who contribute and or run these
small projects often go ignored.
So how do we get around these problems?
Provide services, just because the source code or documentation has to be
open to be "open source", your labour doesn't need to be unpaid. If
someone wants a new feature, they ought to compensate you for it, if
someone wants support or improvements with the documentation, they also
ought to pay for it (unless of course, they are willing to do it themself
and then send you a patch to review and commit). Your labour has a value,
you just have to find those who are willing to pay for it.
Provide hosting. This is an increasingly popular option due to the rise
of SaaS (Software as a Service). The idea is simple, you are developing
some software which requires a backend, so you can provide hosting for
that software as a paid service plan, or the user can host it themself
(usually for a higher cost than a small monthly fee for you to host it
for them). The consumer gets a cheaper service than they could have ran
themself, and you get funding to continue your development.
Grants. There are many organisations out there right now which provide
grants or funding for open source projects, identifying it can be
difficult to monetise a project alone. The problem with many of these
grants is you become reliant on them, and each year you must reapply for
funding again, with a chance you will not get the funding and your
project will collapse. The other problem is a lot of these grants are
provided directly or indirectly by governments. This unfortunately shifts
open source more and more towards the financial control of government,
rather than distributed within the market, which brings up the concern of
centralisation and potentially projects being influenced by government.
Having donation pages not only allow people to fund your work out of their
own good will, but also makes it very easy negotiate prices with people who
want your labour.
The key here is services, remember your labour is worth something, and if
someone is demanding your labour, make sure they are compensating you for
it.
For example:
Someone submits an issue on a messaging app you are developing and requests
you to add support for backups to nextcloud/webdav.
You see this, and anticipate this will take you 20 hours to implement.
Traditionally open source developers would defer the issue until they could
find time, or they would work unrealistic hours to implement it for no
compensation. Instead a developer should identify that they are happy to do
this for £10/hr (ignore minimum wage, it only makes negotiating prices
harder) and thus quote the person £200 to implement the feature.
If the user doesn't pay it? defer! If the user "donates" (pays) you the
amount, then prioritise implementing it over other unpaid features.
This is pretty much the only way a project can cut their reliance on
donations or grants. Revenue allows projects to pay off their infrastructure
bills, and the costs of development (laptops, internet, power etc), and
potentially in the future pull a profit so that developers can work full
time on the project as a job.