Based on anecdotal data I can safely say that most people view “Open Source” as roughly synonymous with “Free” (as in beer). And in an impressive number of cases, that’s actually true. Many (maybe even most) open source developers are happy to give the fruits of their labour away for no cost at all.
This raises an interesting question: how are open source developers rewarded for their time and effort? These developers, many of whom are quite highly paid in their day jobs, must surely be receiving some kind of compensation, even if it isn’t monetary. So what is it?
Whether you’re trying to find a way to show your appreciation to a developer who helped you out, or you’re just interested in knowing why these people spend so much of their time working for ostensibly no money, let this be your guide to the mysteries of open source currency.
There Can Be Only…Three?
In my experience there are roughly three different ways open source developers get compensated for their work. I’ll tackle these in turn, in increasing order of importance.
Number 1: Money
“What? But I thought you said that open source was free?” I hear you exclaim. No, you said that. I said that you thought open source was free.
In fact, many developers make some (emphasis on some) money from their open source work, and a number make genuinely decent money. They do this in a few different ways.
Firstly, lots of projects gratefully accept monetary donations. For example, OpenSSL has a donations page. In practice, for larger projects this rarely goes directly towards paying developers (due to the difficulties of fairly assigning such money), but instead pays for vital infrastructure like CI servers, build servers, and web hosting.
Projects also frequently get donations from companies that are grateful for the project. Some good examples of this are httpbin, whose hosting costs are paid by Runscope, and Requests, which has its CI servers provided for free by Rackspace.
Newer methods of financially remunerating developers have appeared in the last couple of years. The most notable example would have to be the very exciting Gittip. Gittip is an unusual company in a number of ways, and I strongly suggest you check them out for that reason if nothing else, but they also provide a uniquely powerful way of financially rewarding developers for their work. Small donations on a weekly basis, in aggregate, become a powerful way of funding work. Some developers, such as Eric Holscher, have taken the bold step of giving up on their day jobs entirely, hoping to be funded entirely through Gittip.
Author’s Note: I am also on Gittip, and would always appreciate donations. Just saying. We now return to our regularly scheduled blog post.
The final method of remunerating developers for their open source work is to employ them full time, and allow them to spend a certain proportion of their time doing open source work. This is not entirely uncommon: aside from a few high-profile examples such as Guido van Rossum at Dropbox, companies like Intel employ a number of people who work full-time on the Linux kernel. For most open source developers, this is something they’d love. Employers, bear this in mind: you can improve your attractiveness to open source developers by letting them spend some work time on open source.
Interestingly, I’ve found that by and large this is the least important of the three methods of remuneration I’m going to talk about. The main value of the money is not, in fact, the money. Most open source developers are not sitting around trying to get filthy rich: if they are, they tend to have day jobs which will provide that income for them.
The main value of these financial contributions is the fact that it can buy things: specifically, it can buy the most important open source currency. I’ll come back to this.
Number 2: Gratitude
It’s amazing how simple rewarding open source developers can be. The key thing to recall is that all open source developers are fundamentally trying to good in the world. We believe that free (as in speech) software is the best end to which we can put our skill set, and we feel good about doing it. But sometimes we lose sight of this behind the phenomenal weight of our self-imposed responsibilities.
For that reason, taking time out of your day to contact a developer and to thank them personally for their work is one of the best ways to do it. This doesn’t need to be a big long essay about how touched you are: just something that is personal enough that the person being thanked feels like effort was put in. This can be a genuine tweet, or an IRC message, or an email. If you meet them in person, shake their hand. If you both like beer, buy them a beer. If you both like coffee, buy them a coffee. Do something nice for them.
I’m not kidding about the power of gratitude, either. One person’s genuine “thank you” can totally turn around an otherwise tremendously shitty day. If you do nothing else in response to this post, go out of your way to thank someone who works on an open source project. Not necessarily the maintainer, either! We all need thanks sometimes.
Number 3: Time
Anyone who has worked in open source for more than a month or two has come to realise the gargantuan value of someone’s time. Each one of us feels as though we’re short of time: we don’t have enough time to balance open source with our day jobs, our family, our friends and our hobbies. So we find ourselves compromising between one or more of these things, accepting that we can’t do all of them as well or as extensively as we’d like.
This means that the single biggest gift you can give an open source developer is time: either theirs or yours. This gift can take many forms. You can spend time triaging bugs for them. You can fix bugs for them. You can do something that minimises the time they spend on irrelevant things.
This is what money can buy open source developers: the time they need to get more done. Pay them enough and they can start doing four day weeks at work, and spend the fifth day contributing to open source.
For better or worse, time is the scarcest commodity in open source communities.
Give Gifts
It’s worth reiterating from time to time that we should show our appreciation to those we appreciate. This includes developers who devote hours, days, weeks and months of their lives to making our lives better.
So I implore you: take some time out of your day and give one of these gifts to a developer or two. Keep paying it forward. The world ends up better that way.