Every month or so we hear of another high profile open source developer who flips the table and rages about open source because of burnout, most recently Ian Cordasco and Ryan Bigg. Does this sound familiar?
- Spend many hours writing software.
- Spend many hours supporting users and solving their problems.
- Make $0.
If you were a freelancer and did that with clients, you'd be:
- Overwhelmed with people asking for your help.
- Quickly starve with an empty bank account.
So why is it noble for OSS developers to do it? If a library would cost a client $5000 in your time to develop, why not sell the library as a product and charge each user one hour of your time, say $150? Money doesn't solve burnout but think of it this way: almost every issue email you get is a net negative on your mental health, almost every sale email you get is a net positive.
"Corporations need to step up."
99% of corporations will do what they are legally obligated to do, no more or less. So make them do something! The easiest way to make someone value your time and software is to charge for it. The goal of this blog post is not to rant about hypotheticals but rather show you how easy it is to charge for your work.
I don't want to argue freedom and capitalism in the comments. If software freedom comes at the expense of burning out software developers, that's not freedom, that's tragedy of the commons. By charging for your work, you stop its exploitation.
Remember: Open Source != Free Software. The source may be viewable on GitHub but that doesn't mean anyone can use it for any purpose. There's no reason you can't make your source code accessible but also charge to use it. As long as you are the owner of the code, you have the right to license it however you want.
- Make sure your project documents the fact that contributors must assign all rights to you. This allows you to accept pull requests. Some projects require a CLA; I think that's overly conservative but IANAL.
- License the project as AGPL by default by adding a
LICENSEfile with the AGPL in it. The AGPL requires users to open source any software which uses your library; businesses will pay to avoid it. This is exactly what we want.
- Add an MIT license in a
- Note in your README that the licensing is AGPL by default but an MIT license is available for purchase.
Note this is the simplest thing that might work, not what I do. MIT contains a number of serious problems for commercial software; a real business would want to use a custom license which forbids redistribution and sublicensing.
This assumes you are in the United States.
- Open a Plasso account. You'll also open a Stripe account as part of the signup, connected to your bank account. (I have no connection with Plasso aside from being familiar with their platform as I use it to sell Sidekiq Pro. I've also seen people use Wufoo or FastSpring.)
- Determine your pricing. Decide if you want to charge one-time or as a subscription. More complex projects can easily justify ongoing payment. You can also charge per major version, like books do with first edition, second edition, etc. For small libraries with no guaranteed support, I think charging your hourly rate per major version is entirely reasonable.
- Once you have created a product page in Plasso, put the link in your README. Here's Sidekiq Pro's product page on Plasso for example.
- Money will appear in your bank account two days after purchase. You'll get an annual 1099-K from Stripe which (IIRC) you report as miscellaneous income on your annual tax return.
That's it! Upon purchase, the customer gets an email receipt from Plasso that says they bought the commercial license option for their records.
Well done, you just became a professional open source developer and thought leader in our industry. Tweet at @mperham so I can congratulate you personally!
Just because you charge for something doesn't guarantee you will make any money. But if you don't charge for it, I guarantee you will make no money.
Consider what we've done here: your project is still Open Source but we've added a method for grateful users to support you and a legal mechanism forcing businesses to pay if they want to use your library and not open source their application due to the AGPL.
Now it's up to you how much time and effort you want to spend evangelizing and supporting your work. If you think having users feels good, just wait until you get a few customers and can pay for a vacation each year with your OSS work. Good luck!
- "But what about..." Money doesn't solve all problems. This won't work for every developer, every library or every project. The world is complex and your mileage may vary.
- Having unpaid collaborators can feel a little weird at first but reality is most smaller OSS projects have a single person doing 95% of the work. If this is true, be grateful for unpaid help but don't feel guilty about keeping 100% of the income.
- "Then users will just use some other free library" - and you just reduced your support load. You don't want free users who don't value your effort. Let someone else deal with them and suffer the burnout. Focus on making the best, most useful library you can that solves your own need.
- "Great, now I've got two jobs!" You have just as much commitment as you had when building a free library. You aren't guaranteeing any support.