Skip to content

Instantly share code, notes, and snippets.

@StringEpsilon
Last active November 22, 2023 19:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save StringEpsilon/5a4349a9ceb327fdafb31ccc3315a434 to your computer and use it in GitHub Desktop.
Save StringEpsilon/5a4349a9ceb327fdafb31ccc3315a434 to your computer and use it in GitHub Desktop.
FOSS Decorum

FOSS decorum

I have been using open source software for most of my life at this point. My contributions back to the ecosystem have always been a little lackluster, as my private development time is spent of weird pet projects that aren't of any immediate use even to myself. But I've filed some bugs and submitted a patch here and there and helped in triage and all that.

Of the code I gave back, I think the example I'm most satisfied with is my PHP deserializer for .NET. Which also only came about because I needed it for a yet unpublished weird pet project.

I have also used quite a lot of software that simply died over the years. The "Musca" window manager and "mirage" the image viewer come immediately to mind, but there are dozens of other little tools or add-ons to other software. Similarly, some of my own code that I published over the years (not always on github) is just dead by now. And I think that is fine that way. Part of the reason I published that code is so that me no longer supporting it does not screw over the next guy. And that perspective also means I am not mad at the maintainers of Musca and Mirage - I could just pick up the source and modernize it and have my old tools back to life.

Why

I bring that up because in recent years more so than ever, people have been trying to make FOSS "sustainable". Or have demanded that there is a problem with the way we currently do FOSS. And sure there is some truth in what these people are saying, but I believe the truth is simultaneously more complicated and a lot simpler than they make it out to be.

So why free and open source software?

Because you want to make a gift. If you do not wish to give away your work for free unconditionally to everyone who may find it useful, pick any other model.

A comment on hackernews or whatever aggregator site recently linked to the Free-rider problem in one such sustainability discussion. And that is simply not the right way to think about FOSS. You can not free-ride a gift. You are not a bad person for talking something for free and not paying the person who gave it to you with an express contract that yes, the thing is indeed free.

The only way I could fault someone for taking the gift of free software is when they then in turn generate a bunch of work for those making that software. A prime example of that was that time when Apple directed customers to the curl team for help when they are not contributing to that work. Another example would be a company filing an excessive amount of bug reports or trying to capture a project with hostile use of bounties to steer contribution in a selfish way.

But what tangible (or even intangible) negative effects has the Linux kernel endured from being shipped in WSL2?

That isn't to say that it says something, and something very negative, about companies like Microsoft and Google and Apple that they are willing to use components like OpenSSL and curl without contributing anything back. I think they absolutely should work with the maintainers of the stuff they are using. But that is not because I think they're freeloaders and cheapskates[^1] who have a moral duty to donate or contribute. But because - unless they go full Embrace, Extend and Extinguish - they'd probably make those things better, faster, more secure. And that would not only benefit their own products but also everyone else. Put a pin in that one.

Obligations

Where I live, gifts come without any conditions. This cultural norm is so engrained that part of it is even law. Ever read the warranty disclaimers practically any open source license has? In my part of the world that kind of disclaimer is wholly unnecessary because legally speaking gifts are warranty-free by default. So you may forgive me if my perspective on gift giving and the social dynamics around it seem a little different.

If you publish a piece of software on GitHub, or GitLab or SourceHut or Codeberg under a FOSS license, you do not have to do anything for your users. You can publish just what you want to do and not accept feature requests and code submissions by other people. But if you accept contributions you can accept them on your own terms and at your own pace. There may be some expectations people have around proper maintenance and you yourself may have some ideas. But your obligations, strictly speaking, don't go an inch beyond what the license you chose may dictate. If you run aGPL software and have accepted patches, for instance, you can not change the license without the agreement on that second contributor and so you must publish your changes if you operate the software, per the aGPL terms.[^2]

With the freedom for your users to modify and redistribute your code also comes the freedom for you to disengage from the project at any time and on any terms you like. I would strongly advise you to find a balance between being a good maintainer to your own personal standards and your own health and happiness. The success and longevity on your project is not as important as you having a good life.

There is a hussle culture attitude sometimes that affects maintainers as their project finds traction. They start putting in more and more time to ride the success to even more success. But you are not getting paid, remember? You can not work 8 hours in the office and then another 7 hours in the living room to run your FOSS project. And you really should not do that. And anyone who demands or expects this dual "employment" of you is frankly an asshole unless they put their money where their mouth is and hire you for the express purpose. You don't tell your auntie that the firetruck is cool, but really you expected to find more under the tree and that you're going to be really angry if she doesn't come to play with the firetruck every weekend for the next 6 months. Because that is not how gifts work.

No taking back

There is a common theme one can observe in stories relating to financing woes of maintainers: An individual or a company starting a FOSS project and using the success of that project as justification for moving away from their chosen free and open source license or trying to impose other restrictions. Notable examples here are definitely Hashicorp with their move to the Business Source License and Red Hat decision to no longer provide the RHEL sources free of charge. The former prompted the creation of OpenTofu fork under the umbrella of the Linux Foundation. The latter created an interesting alliance of CIQ, Oracle and SuSE to create the Open Enterprise Linux Association. You might want to rethink your approach if Oracle of all companies is nicer to their (and your) customers.

Of course this kind of backtracking on FOSS is not only fraught because people are always free to just fork the last FOSS-Licensed version of your software, thus creating immediate and free competition to your now proprietary product. No, it is fraught primarily because the logic is backwards. Being FOSS is not a burden on an otherwise successful Terraform - being FOSS was what made Terraform successful. Or at the very least it was a factor and probably an important factor in that success.

Turns out that being free (as in beer and as in speech) is rather persuasive marketing. To turn that upside down to demand money and fuck over your users is insulting.

Capitalism

In a perfect world the maintainers of open source software would be able to do that maintenance without also needing to work 9 to 5 in order to pay for rent and food. But taking the "Free" and the "Open" out of Free and Open Source Software does not give us a sustainable FOSS ecosystem. It just creates more proprietary software with complex licensing agreements and the impulse for the really big tech companies to find loopholes or just create a private and proprietary version of the piece of software in question. And if we bring these guns out right now, they'd be entirely in their right to fork from the last FOSS-licensed commit and not have to pay any license fees, as per above section. That particular sword cuts both ways.

No, the solution is to rethink why we live in a society in which people who do so much unpaid work for the public good have to do that 9 to 5 job[3]. Why does one have to work so many hours to make rent? Why does one have to pay rent in the first place? There is no fixing this problem within capitalism. The incentives to exploit will persist, no matter how much you change the rules of the market or the terms of your licenses. Instead of asking the question: "How to we take the free lunch away from companies?", ask instead: "How do we give free lunch to everyone?"

- IonSprite

This rambling is licensed Attribution-ShareAlike 4.0 International.

P.S.:
My advice to open source maintainers and contributors is simple: Do that work on your own pace and at your own leisure. If someone relies on your project, they can either start contributing themselves or pay you or someone else if they really need that work done urgently. Do not feel guilty for leaving bugs open or feature requests unaddressed.

I would also advice giving copyleft licenses a little more consideration when picking your license.


[1:] They are cheapskates though. Every company is. ;-)
[2:] This is simplified for brevity, please don't take the above as legal advice. CLAs for instance can change this equation.
[3:] And there are a ton of people doing unpaid labor in our society, not just open source maintaners.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment