draft

vim ./src/drafts/open-source-sustainability.md

True Open Source Sustainability

This idea started1 as a mastodon post. This post fleshes out the basic idea in somewhat more detail.

I'm often approached by founders of startups who aim to "fix" the problem of open source sustainability. The problem is, in a nutshell:

  1. People create projects and release them as open source for a variety of reasons.
  2. If the project becomes popular, they now have inherited a full time job as a maintainer.
  3. They may be motivated to maintain it because they feel an obligation to those using the project. If they don't maintain the project, it loses popularity, and they may suffer a loss of credibility. No amount of "NO WARRANTY EXPRESS OR IMPLIED" in the license file can ever prevent this.
  4. Companies love open source. It's free!
  5. They aren't getting paid for this work, so they still need to have another normal job, which reduces how much time they have to devote to the project.
  6. Spending less time on the project increases the maintenance pressure, and since they aren't getting paid (and in fact, some of the parties using it are making money as a result), this increasing pressure also increases resentment.
  7. Eventually, the project has to be replaced, possibly because the maintainer flipped the table and stopped supporting it.

The typical approach to this problem, which I see pitched again and again, is:

  1. Make it really easy for devs to connect their Stripe or bank accounts.
  2. Make it really easy for anyone using the site to donate to developers working on open source.
  3. Market the solution as community-centric, good vibes, etc.
  4. Expect that this will work, and when it doesn't, repeat 1-3 until the startup goes under.

My prediction: No project of this sort will ever succeed.

Don't get me wrong, cynical as I may sound, I sign up for every one of these that I come across. I profoundly want someone to be successful in this space, few things would make me happier than to be able to focus on creating and giving away open source software until the end of my days.

Free as in Freedom

The core of this problem stems from the two-party political system in free and open source software, where each of the camps have different views about what "freedom" means.

There are of course many other variants in and around this spectrum, but most of them come down to this question of what exactly "freedom" means, and how best to encourage it. The assumption is that, as long as all consumers of the code are not violating the violating the intended freedom of that code, they're free to use and repurpose the software.

Free as in Labor

The problem with these two choices is that both are aimed squarely at the problems of the 20th century, and neither addresses the 21st century problems surrounding open source production.

Corporations have adopted open source. They have come to realize that there is tremendous profit to be made by participating in ecosystems where value is produced which they can consume without cost. They have become dependent on this abundantly cheap sustainence.

The problem now is, as software developers, we are producing value which is used in pursuit of profit, and we do not share in the value of our labor. Beyond being unjust, this is suboptimal for the ongoing development of innovative software, and puts corporate interests in jeopardy long term.

The main problem in software is rarely that corporate interests will take source code and try to pass it off as their own. In the modern internet era, they don't need to run the risk of legal troubles stemming from abusing licenses.

"Free as in Freedom" has won, and we are now free to give away our labor for free.

This leads to the burnout-producing pathway described above. It makes open source unsustainable.

Speaking Corporate Language

Corporations are not people, but they are organisms made of people. While corporations can speak through their human appendages in language resembling human speech2, they are not ultimately directed by human moral intuition, but rather by market forces, and their minds are at times incomprehensible to us as a result.

If we are going to interface with these entities, we must do so with the language that they speak: courts, contracts, and money.

The previous generation of open source acknowledged this. The reason that the GPL and BSD licenses have been so effective in preventing corporate restriction of source code is that they are expressed in the native language of corporations: a legal document that grants the holder limited permission to do certain things.

If we as open source producers are going to address not just the restriction of intellectual property, but the distribution of resources stemming from profitable enterprise, we must build additional structures to interface with corporations on terms that will be effective.

All of the "good vibes" based donation platforms will fail, for the simple reason that no for-profit corporation is incentivized to pay more than the bare minimum required for the marketing benefits of being seen to "love open source". This makes perfect sense when we consider that corporations are not moral agents, but rather hungry resource-gathering machines made of people.

The only companies that donate are those that depend on being able to sell products into (or hire developers from) the oss talent pool. Beyond that, it's just a bunch of underpaid workers passing the same $20 bill around.

Free as in Paid

In late-stage capitalism, the only reliable way to attain resources is "capturing value".

That means, in a nutshell, I have something you want, and I can get it for less than you are willing to pay. I charge you what you're willing to pay and thus "capture" the excess value.

Maybe this means I made the thing you want, and I sell it to you for less than it cost me to make it. Maybe that means I sell it to you for a price that is also less than it would cost you to make it, if I can do the job more efficiently.

But, maybe I just "know a guy"3, and I have some leverage to force him to give it to me at a very low rate. If you could buy it directly from him, he'd give you a better price, but I've gamed the system and gotten in between you two, so I get to capture the value, instead of letting it flow from you to him.

This is not a "good" system. But this is reality. We can wish it were different, and work on making it different, but in the meantime, I for one would like to recognize it for what it is, and as a community, harness the massive amount of leverage that we in open source posess.

The shape of a solution would be this:

  1. Open source code we produce may be used by anyone, for any purpose, so long as its freedom is maintained, except
  2. No open source code we produce may be used by any for-profit corporation, company, enterprise, 501(c)6 trade partnership, "public benefit" corporation, or other profit maximizing instutition, without express permission.
  3. Getting said permission costs money.
  4. The organization collecting this money and granting this permission is designed in such a way as to resist corporate capture, and distributes the income fairly to the participants who create and maintain the open source being licensed.

In a nutshell, "the Oracle model, but for Good".

Why This Would Work

For starters, if we all act individually, it won't. It's too inefficient, we're each individually too lazy, and a corporation won't respond to an empty threat. (Where "empty threat" means "a threat where the cost of compliance is higher than the cost of noncompliance".)

If every developer writing open source today were to release their code under the Prosperity license, each of us would have to become sole proprietorships, with all of the admin duties that entails. We'd be responsible for seeking out violations of our licenses, sending invoices, negotiating contracts, tracking license expirations, and so on.

When I say "we're all too lazy", I really mean it. My decades in open source software development have taught me that we are the laziest people on the face of the earth. Uniquely, interestingly lazy, the kind of lazy that spend 40 hours working on something to optimize away a 10 minute annoyance. But all that repeated admin work? No. We just won't do it. If we would do it, we would be doing it already.

Even if we were to, let's say we find a way to make it efficient, and tools that make it easy. Consider what this means for a large corporation. They ship a new website or something, and then get thousands of invoices, many of them for $5 or less. (I've published lots of modules to npm that I couldn't in good conscience charge more than $1 for.) The cost of just having someone take the time to pay for any of them is far greater than the expected cost of being prosecuted for violating the license. (Ie, nothing. You're not actually going to sue them over $5.)

Even if the price tag is big enough to justify caring about it, until everyone in open source is doing this, they can usually just use a different thing.

However, if a significant portion of the most prolific open source producers were to collectively put their efforts in a single organization, this would start to get interesting.

The bills being sent to corporate open source consumers would be large enough to matter. There would be a single organization that they'd know has enough motivation to pursue them aggressively if they violate the terms of the license.

Lastly, there would be cultural pressure on corporations from internally and externally to maintain good standing with the open source collective. We could, as a collective group, agree to withhold our labor from companies that refuse to pay for the value they consume. All claims of "We <3 Open Source!" would be transparently empty coming from profitable companies who don't actually foot the bill.

Hard Problems

There are, in my view, 5 extremely hard problems ahead of such an effort.









  1. framing the problem
  2. create conceptual translation layer from transactional to intrinsic motivation
  3. get devs on board
  4. figure out how to deliver funds
  5. collect funds (actually an easy problem)












Footnotes

1: Actually it "started" as a deep desire to do work I'm passionate about, which benefits as many people as possible, sharing the benefits of that work as widely as possible, while enabling as many developers as possible to do the same, and also keep eating and living indoors, as free as possible from the stresses of financial insecurity. back

2: Debatable.

3: Ie, he's my employee, and if he doesn't do what I say, he'll be fired, and starve, because I and all the other rich people have been pushing the narrative that social safety nets lead to societal ruin, and in fact pushed the narrative so hard that even suggesting universal basic income or other social welfare initiatives would be political suicide. Just, ya know, hypothetically.