A plan for open source software maintainers
Having both written &amp; maintained open source software, and negotiating (commercial) support and development contracts, I find myself thinking about this issue every couple of months.<p>A few thoughts:<p>Bounties are a problem since each is basically a tiny contract (what to deliver, what it&#x27;ll cost, when, etc) in itself, so they need to be haggled over, ie. there&#x27;s a nontrivial transaction cost to each. In practice, you get a crossbreed between a graveyard of ignored stuff and a race-to-the-bottom wishlist amounts - FIX THIS URGENT MULTITHREADED PROGRAM FOR $15 PLZ I&#x27;M PAYING YOU! I&#x27;d rather do open source obligation-free than <i>that</i>.<p>Monthly donations (like Evan You&#x27;s Patreon campaigns that dvnguyen mentioned) can work, but from the client standpoint, it&#x27;s not really clear what you gain (&quot;if this breaks tomorrow, who I&#x27;m gonna call?&quot;), so while theoretically nice, in practice there&#x27;s not a lot of uptake.<p>As Colin mentions in the post, if there&#x27;s a large company (or a few) that use the software and see the value, they can be persuaded to support it via explicit support contracts with the developer(s) or just hiring them (I think redis is a success story here). But many projects don&#x27;t have such large companies as users (or they don&#x27;t know that they have!).<p>Another issue that I think we always stumble in these discussions is the pricing and talking about value, esp. in context of open source software. My strong opinion (feel free to disagree is): in open source, the software itself is a commodity, and its PRICE is $0. If you don&#x27;t like that, don&#x27;t do open source. However, there&#x27;s no question that the software has a VALUE that&#x27;s over $0 (otherwise why&#x27;d anyone use it). But the value of the software is not only in the code, and as patio11 always reminds us (in the context of business discussions), determine your value and charge based on value, not on cost (ie. amount of effort needed to write the code).<p>The value is that the company developers are faster (increase&#x2F;multiply their value). The RISK to the company is that the developers will have to spend their time maintaining, fixing, updating, the software if there&#x27;s no external vendor to do it (the &quot;who am I gonna call?&quot; problem), which will decrease the developers&#x27; productivity, ie reducing the software value (perhaps below zero). So, removing this risk should have business sense to the company.<p>Borrowing from risk management, we can try to estimate the probability of it happening (&quot;how often does the code need to change&quot;, &quot;how often bugs that should be fixed are found&quot;, not &quot;what is the probability of open source dev burning out&quot; since that hides the externality - developer&#x27;s labor), and the cost (&quot;if we have to maintain it ourselves, how much time (ie. money) would we spend&quot;). It&#x27;s more of a ballpark estimate rather than a rigorous calculation, but for many highly used projects, a reasonable figure can be estimated. This figure, then, is the amount the company could reasonably be expected to pay each month.<p>So the company is not paying for the software. They&#x27;re paying for their piece of mind - to minimize risks inherent in their use of unsupported software. I am convinced this argument is MUCH easier to sell to the companies than social or moral obligations.<p>On the developer side we want a steady, stream of income, so combining the two might mean a (tiered) subscription based model. For $0 (free) you use the software but the developer has absolutely no obligation to ever listen to your bug reports or feature requests. For $X (monthly), you can expect the bugs to be fixed (and prioritize which should go first), up to a specific limit in amount of hours worked, but the developer has the sole discretion over the <i>new features</i> to be implemented. There can be multiple tiers ($X, $Y, $Z... for different amounts of work).<p>The limit in amounts worked is there to set expectation of what exactly the company gets for their money, ie. what to do if the company asks for more work (bugfixing) than you&#x27;d be happy doing for the subscription amount. For $X, it&#x27;s Y hours of developers time (non-refundable retainer). $X could be set based on the calculated risk above, an Y (hours) is based from the dollar amount and a hourly consulting rate that the developer could ask for when doing a real retainer contract.<p>An example: let&#x27;s say I&#x27;m a proud developer of libwidget, an indispensable library for managing widgets in a nosql database. There&#x27;s dozens (respectable, but not high) of companies using my code. I do a few updates a month, mostly bugfixes. If I disappear each company would probably need to spend an hour of their developer time each month maintaining this, let&#x27;s say that&#x27;d cost them $100. Let&#x27;s also say my target retainer rate is $100&#x2F;hr, so this ends up being an hour of my time. (To clarify, the rate would be lower than the usual consulting rate since there is a possibility that no work will be needed in a month).<p>Based on the above, I&#x27;d set up a subscription plan that says: for $100&#x2F;mo, you can file bugfixes (private or public), and I will spend up to 1hr per month fixing those issues (if there are more of them, I&#x27;ll let you prioritize). If more work is needed, I can either set up a larger plan, or agree to do extra work for $Z ($Z &gt; $X), or any combination of the above.<p>Something like this would, I believe, scale nicely from almost no work (and getting a few bucks a month for coffee and ice cream :) to being basically fully employed in support of your work (and being paid fairly for it), while making everyone clear about what they can expect from you as a open source dev.<p>As a footnote - many companies budget for a year, so offering year subscription may work as well, or better (since it&#x27;ll be almost the same to the company financial-wise, and they&#x27;ll know they have you on support for the next 12 months). Or you can pull an oldest trick in the book and price-differentiate yearly and monthly fee so that the yearly fee looks like a better value for money. The yearly fee makes the subscription model even more smooth and with less surprises than the monthly-based one, so it&#x27;s useful to keep in mind.<p>Great thing about this is that it&#x27;s possible to do with existing infrastructure for monthly subscriptions (say, Patreon for subscriptions, github for issues, email or a separate private bug tracker for private &quot;technical support&quot;). But if a platform that nails this approach would appear, I&#x27;m betting in itself it&#x27;d be a $1B+ company (think GitHub for - gasp - git hosting - actually, no, wait - GitHub why haven&#x27;t you done this already ?!?).<p>Just my $0.02 :-)