A letter to open-source maintainers(xuanwo.io) |
A letter to open-source maintainers(xuanwo.io) |
If its only user is the developer themselves, then they're already doing more than they're ethically required to by sharing the code.
People must come around to this view and the 'volunteer open-source maintainer/developer' role must be left only to people who enjoy doing it. Require payment for your services otherwise.
Part of this is understanding what your goals -are-. It's really important because without that target it's easy to be subsumed by other people's goals.
Are you writing this for you? Or you want to build a large user base? Or you want lots of contributors? Or it's a marketing exercise for your startup? Or.....?
For example, if your goal is to write code and post it, then you're done. If your goal is marketing then really you'll spend more time marketing the project than writing it. If your goal is a huge user base, well you better fix bug reports Pronto and so on.
If your goal is to get an income from this and go full-time then that's the problem you need to solve first (before you start writing code.) Have a plan for income - nake that clear from the start.
Of course goals change, that's OK. But make sure what you are doing lines up with your goals. That's the only way to succeed.
They shouldn't do it for free, they should use every means and trick available to make it worthwhile for them to do and to get themselves paid. They need to survive for FOSS, for the software. Which means that they have to make sure the license is open and the source is available, and that it's ethical, because that's why it's worth fighting for. So everything that's ethical and open, very preferably GPL, do. If you have to write closed software to get yourself paid for your GPL software, do it. Eventually you can open that closed software up too, when (and not before) you can afford to. All FOSS licenses have different business implications, and ultimately income implications.
Morally, it'd be better if there were no software copyrights and everybody was allowed to inspect and modify all the code that they interacted with, and we all shared. You also have a moral obligation to feed yourself and your family and not go nuts, though, to have some security.
If you're not one of those people, and it's just a hobby and a charity thing for you, that's wonderful and ideal, bless you. You may have already made all your money. If you have to make a living from it though, don't let yourself be bullied into compliance and submission to the users because you need them to like you, to get work, to survive. Do whatever you have to do to be self-sufficient. It's hard out there, and you might have to be hard. Not mean, just firm about the amount of care and interest you have about individual strangers' problems with what you gave them for free.
You can leave a lot of people disappointed that they're not going to get more from you for free, yet still be ethical. Being ethical, being open, leaving people in control of their devices and in control of their lives, that's the point. Keep ethics at 100%, and put pleasing the most people as a (far) lower priority than paying your rent, and taking a vacation every once and a while, with the kids, and having health insurance.
Taking care of yourself means more FOSS in the world, more people free of black boxes in more areas of their lives. The OP seems wise.
This is exactly why I started my canvas library back in 2013. Hundreds of job applications were generating near zero interview invites. Then a recruiter told me that I was failing because I didn't have a portfolio of code to show prospective employers. I was so desperate (mid-40s looking to break into the tech industry) that I grabbed something I had been fooling around with (trying to make pretty animations in a canvas which I could share on a web page), slapped it on GitHub and started learning about PRs and stuff ... all to impress prospective employers.
It took over a year, and hundreds more applications, before I finally got a job offer.
> If you're not one of those people, and it's just a hobby and a charity thing for you, that's wonderful and ideal, bless you.
I still work on the canvas library. I'd like to think its a hobby/charity thing. The reality is that I go through bouts of obsessive computing that can take over my life for weeks at a time - I lost last Christmas to building a better text layout engine for the library.
The one thing I'm grateful for is the library's unpopularity. No issues or PRs for me to triage/manage; no users making demands etc. It's just me making stupid demands on my energy and time, which I do my best to control.
Unless you are making a lot of money by doing it, the act of sharing source code often has a negative return.
https://medium.com/neuml/grow-your-open-source-project-5b439...
https://medium.com/neuml/grow-your-open-source-project-2-0-5...
In 2024, it's hard to get anyone to know you even exist. You can work all you want on GitHub but it likely will be a couple star project unless it trends on a site like this.
With how many developers oversell what they've built, everyone is generally skeptical with any new project. People are even more skeptical if a project mentions "AI".
Then you have VC-backed companies who have their ways to get their projects noticed. They'll get stars, articles and publicity but there is no direct correlation with project quality and funding. People use these projects, they're terrible and the cycle of disillusionment continues.
Given all that, it takes a certain resolve, belief in what you're doing and commitment to keep pushing forward. There will be little carrots along the way to re-energize you. Perhaps that is good enough, perhaps it's not. It's not for the faint of heart.
I fully agree that when an open-source maintainer doesn't want to do it anymore, it's like anything else in life. We have free will and the right to decide to move on to other endeavors. Just like one does with any other job.
Technically true and a good thing to tell people who are burning out, but like always, different people need different pieces of advice at different times.
In my case, I mostly stopped my (sporadic) contributions to free software partly because I felt a sort of bystander effect where I assumed that other people would step forward and implement the features and bug fixes that I wanted.
However, in most cases this has not been the case and I think we've all seen issues that affect us that have been reported but unsolved for over a decade, if not forever.
So, in my case it is far more motivating to think that I have to step forward and do the work, because otherwise nobody else will.
Again, this is specifically for people in the opposite extreme of the open source contributor (de)motivation pipeline, so I'm not even disagreeing with OP, just hoping that other people do not get demotivated with this bystander effect.
Well, actually...
> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
I think we in the open source communities have trouble accepting that sometimes projects fail.
In the business world, companies fail all the time, in the open source world a project never really dies until the last person stops using it.
As a maintainer it can be really hard to accept that something you put your heart and soul into didn't work out. However sometimes that is what happens, and you need to allow yourself to move on to new and better things. Taking the lessons learned and applying them to some other project.
Like, it didn't manage to implement the features the author set out to?
Or more like "no one is using it", or even "it's not making any money"?
I feel like, for a passion project, only the first one applies. I have many projects that as far as I know, I am the only user of, and I am happy about that! As far as I am concerned, my project is very successful because it solved a problem I had and that no existing project addressed.
But also sometimes things change, what was a good solution once might not be a good solution now.
There is no one answer, all im saying is that there is nothing wrong with moving on if the project no longer interests you.
If we were to say “no one reads the license; it’s just boilerplate!” and add it elsewhere — say the bottom of the readme or in another file like disclaimer.md — it would quickly just become other, different boilerplate that no one reads.
You can’t solve the problem of understanding norms by writing copy. I’m resigned to everyone learning the hard way.
You can mitigate the problem by adding a short summation before or in between something they're likely to read.
This is why there's no conflict between the people who are aggrieved at OSS maintainers suddenly closing their software, and the people who say "it says no warranty right there in the license".
The default position is that there's no social contract. It's only through interacting with and building a community does a social contract (and associated expectations) arise. It's not codified in the license.
I realized that if I open sourced and maintained it and my old company used it, then I’d basically be working my old job with no pay.
It completely changed the way I view open source.
"don't look back, just forget them, and move on with your life" is a better advice.
It’s just the first time I realized this is thousands of dollars worth of work and a hefty commitment to support a profit making entity.
It just doesn’t make sense.
I’d imagine it can be done through various settings but I wonder if there is a term for such an arrangement?
We (maintainers) owe you NONE OF THAT. We gave you our code. That. Is. Enough.
And yet:
- it's also not reasonable to expect that anyone should use your project if it's not clear it's going to maintained etc
- OSS contributors should not over-state the capabilities of their project, or make untruthful comparisons to paid alternatives
Yes, it's unhealthy and unsustainable to feel like you're on the hook for the health of a project, which may not sit easily alongside your day job, school, life, and your own changing interests. Yes, it can feel like a community of users has high or unending expectations. But also, projects often invite and encourage users to use their cool new thing, develop processes or workflows that depend on the project, make claims that their project does everything that existing commercial project X does but cheaper/faster/with greater data privacy, etc. Announcements are made that "the much requested feature X is underway and is planned to be included in release y.z". These all contribute quite understandably to the expectations of the community.
The view that every contribution is a one-time gift and the world isn't entitled to your future time and attention only works if we're all clear and honest about that up front.
Here's your obligations: if you're the author, none. If you're a user, whatever the license spells out. Nothing more, nothing less.
Open source works because individual incentives can be mutually beneficial.
Ascribing too much personal meaning to OSS is what causes burnout, just touch grass and if you need money, start a real business or get a job.
The freedom to choose, not the entitlement to demand was the original promise of OSS
“only I can do” Sorry, friends, but this is incorrect.
No, not incorrect - if you have the vision for a FOSS project then you are probably the only one that can steer it. That's not to say you should reject contributions out of hand, but no need to accept them, either.
> The project lacks enough users, which might suggest it doesn’t provide sufficient value to the community.
What "community" would that be?
> I also feel angry when I see maintainers abandon a great project without providing any explanation.
Doesn't the rest of article contradict this? What right do you have to feel angry?
> “I’m changing the world” Accept my respects, friend. Please remember to revisit my post whenever you feel tired.
What?
> Now, you are tired, busy, and hurt, so you finally decide to leave
This is all just nonsense.
>Ensure your projects can continue to operate smoothly even after your leaving.
You are under no obligation to do that.
You don’t need a special right to feel angry. We all come with a right to feel whatever we feel in our heads. Of course, there are limits on the ways we should express these feelings.
https://mikemcquaid.com/open-source-maintainers-owe-you-noth...
It could be the same dynamic with the "license rug pull", like in the Redis case discussed the other day. The new Redis license seems like it would be a non-issue for most users but because they had a more liberal license before and it was taken from them, they feel irrational sense of loss? (I realize there are also valid reasons why the BSD license was objectively better than the new custom license, like the ease of compliance.)
So maybe what Redis should have done is not to pull the existing rug, so to speak, but to leave it be and lay next to it a new, better rug and offer the users sitting on the old rug to move over, if they find the new features of the new rug outweigh the drawbacks of a new license.
She says, “There’s no one more entitled than someone you’re giving something to for free.”
People responding to an ad for a free item will ask her to deliver it, load it, store it, repair it, and warranty it.
My theory is that folks who seek something out because it’s free tend to have more time than money. And that means they don’t value time very much.
You are free to fork the code and make it your problem to do the things you think the original code authors should be doing. That is your only right. Yet curiously many of the complainants don’t do this.
Might I propose one possible reason? Take, for example, the Node.js ecosystem. Someone, a while back, built some library, added it to npm, then people used that module in their projects (maybe as a dependency of another module), along with thousands of other modules, and built an application on top of it. So they don't even really know that they are using the project, have no idea about who contributed to it, never saw its page on GitHub etc. Then, maybe years later, when the project is abandoned and flagged as risky by various codebase scanning tools, some poor developer (who maybe wasn't even involved in the initial decision of using Node for the project) will have to find an alternative for the module (and possibly others that depend on it and are also unmaintained). So maybe in this case it's frustration rather than entitlement?
> So maybe what Redis should have done is not to pull the existing rug, so to speak, but to leave it be and lay next to it a new, better rug and offer the users sitting on the old rug to move over, if they find the new features of the new rug outweigh the drawbacks of a new license.
Can you provide more specifics about your idea? It sounds like Redis would need to maintain two version. Can your ideas be implemented with the same cost structure? I doubt it.How is this different from just using the old version before the "rug pull"?
What I have experienced is the long tail of changes unrelated to the core competency of the library. I have some libraries where the fundamental logic and subject matter hasn't changed at all in a decade, yet I get a few dozen PRs a year to keep up with churn in the ecosystem. Sadly there are software ecosystems that don't value backwards compatibility at all - which causes massive pain for anyone who wants to build something that last in those ecosystems.
Running in place to keep up with your dependencies is not why I code! Maintaining these projects has become 99% busy work and I regret releasing them as open source.
But from a marketing and sales point of view, it's nowhere.
For example, I can start marketing and selling a new image editor (blimp), and on my web page, in videos, Facebook yo face, I need make no mention that it's based on Gimp.
And that is -explicitly- allowed by Open Source licenses. Which is part of the Ooen Source deal - others can build on what you made, take credit for it, profit from it. That is not a bug, it's a feature which was explicitly allowed for.
You would however, need to make the source code available under the GPL license, since GIMP is licensed with GPL.
I agree entirely :) It's why I prefer to use the MIT / Apache Dual license (and generally to avoid the GPL in certain contexts).
Apache's condition is more explicit and nicer from the attribution perspective
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
I've actively said to people as a result of looking at my own Apache/MIT licensed software (as well as others) to go fork themselves. You don't need my permission to do so as by choosing that license I already gave you the permission.And at that point you basically can't disagree without looking like a ghoul.
V started from a former professional Go programmer (Alex), creating programs for himself, because he was frustrated with using Go and it missing features that he wanted[1]. He started a new language, which he used to make Volt, Vid/Ved, etc... Others, finding out about his new language, pushed him to make it public. It looks like he was in collaboration with some other developers, when working on Volt.
Others posted about his programming language and pushed him to make it public. Relatively soon afterwards, he came into conflict with creators of competing languages, like Zig (the Andrew Kelly that you mention) and some others (Odin's GingerBill). The conflict appears to have turned hot, originally, because they claimed the language did not exist. That it was something "fake" that he (Alex) made up, but was getting Patreon money from supporters. Clearly that was wrong, and the V language was released on GitHub. Soon afterwards, numerous contributors joined in the effort and gave it stars.
The main push, "of hype", looks to mostly have come from books written about V[2][3] and perhaps the addition of angry competitors constantly talking about it. Zig and Odin have only recently published books about their languages, mainly in 2024, despite that these languages have existed since around 2015 (and have not achieved 1.0 yet). The V language is of course going to get more "hype" or "attention", if it has actual books about it. While in contrast and for years, its competitors had nothing published or didn't/don't even have a Wikipedia page.
[1]: https://www.youtube.com/watch?v=_dIAcNp9bJs (A small presentation of V's features at IBM...origin story from 6 min)
[2]: https://www.amazon.com/Getting-Started-Programming-end-end-e... (2021)
[3]: https://www.amazon.com/Programming-Language-basic-Japanese-e... (2020)
You would not work for your old company with no pay, you would work for everyone interested, but most important you can make the decisions yourself. Maybe even other devs decide to work for you by submitting PRs.
Additionally you improved your skills at your old company, which they basically paid for and what led to an awesome open source project that can be used by everyone...
That's just my point oft view.
I think people (and governments!) take OSS like a “public accommodation”, without the recognition that the concept of public accommodations are legally predicated on the existence of a business with control over usage and cost. OSS is not a public accommodation but everyone treats it as such, much to the detriment of contributors.
this post exists because of the price of being an open source developer, your solution is to demand more free work?
The core takeaway is that there is a stark difference in how people treat a social obligation versus a pay-transaction, and even attempting to switch back to the prior relationship doesn’t necessarily work.
My experience is that friends and family frequently give things / items / services to the ones they love and feel social obligations / responsibilities to. I think Open Source Abusive Freeloaders think they are in this category with Open Source Maintainers, but Open Source is a strange hybrid of social obligation to people we have no friend/family/community relationship with, so some people are completely missing the expected behavior standards.
Also interesting, I saw a high profile tech journalist Dave Winder) have a mini meltdown venting about a very similar abuse of his time by strangers on LinkedIn recently.
[1] https://econlife.com/2018/09/unintended-consequences-from-fi...
In open source the free-loaders are the entitled ones, expecting maintainers to move mountains to accomodate them.
In fact, I am led to believe that they superficially look the same, but are very different phenomenons with very different results. I feel that the open source maintainer burnout is not driven by price, but by sheer scale of reaching so many "customers" worldwide of any type, which includes nasty people. If 1% of people are narcissists, and your modest library on GitHub is used by 100,000 people, you'll have to deal with 1,000 potential entitled idiots, which is very stressful for a non-paid volunteer job. I bet that if your library was sold for a nominal price, as your link shows, you'd get even more entitled users. The fact is that not many paid products reach as many users as any average open source project. Most of the world is much poorer than the Western countries, and their only choice often is open source.
The reason I put it up for free is that I value not having the item more than having it, so much more that I don't care about the 10 or maybe 100 euro that I could theoretically get for it. The idea is putting it up for free will let me quickly get rid of it, and instead of throwing something useful away, maybe someone will be happy with it. In practice this rarely works, I now much better understand why some people with limited time just toss out whatever they don't need. Getting it into someone else's hands is just too much work. The environmental impact is horrible though
Another insight: whenever i donate my time fro free (volunteer work), my time is not valued at all. We start with a 30min coffee break with strangers I have no real interest in. Then a speech thanking so and so, and then someone starts preparing and finally after over an hour I can start contributing with whatever is the cause I want to help with. What a waste...
If I charged my normal rate everyone would be prepared and make sure they make the most effective use of my hours.
So this is such a paradox: people under value what is free, so giving something for free is not appreciated enough for me to do it.
Final observation: I run a repair-cafe, and a very significant portion of appliances people come by with are cheap, ireppairable junk (often nespresso and senseo coffee machines, but also toasters etc). Im am suspecting that the people that buy more expensive coffee machines (the ones that are serviceable) are less inclined to actually take the time to repair it and just discard and buy new
Or the machines that are serviceable already have professionnal services that owner can reach and they will provide both repair and parts. The repair café is a last chance before junkyard.
I would love to know if there are professional shops where one can get e.g. a capacitor on a PCB replaced, but as far as I am aware all these kinds of repairs are done by amateurs in garages like myself.
The other day someone even gave me a broken 750 euro Jura coffee machine. The owner was not interested in getting it back, they had happily switched to nespresso. Still haven't figured out why the pcb will not power on the heater though
There may also be "choosing beggars", but they seem to be in the minority, and I'm not sure they're distinct from the more general group above.
It also gets flippers (people who grab/buy things to immediately resell them), who are not at all impaired, but some of them are trying to maximize their profit. So if some of them impose, flake, deceive, etc., I get the impression that's all intentional, to make someone else bear their cost of their optimization.
Ways I've found to avoid these people: (1) post to a free-stuff list of a nearby university, where it generally reaches penny-pinching students; (2) post on a public list, like CraigsList, but with an ostensibly nonzero price, then tell the person it's free; (3) put it on the curb with a FREE sign.
I told them to put a $10 sign on it and someone would steal it.
It was gone the next morning.
Stop treating it like they are demanding open source developers do something or are acting entitled because they aren't. They are discussing how, if a project owner wants something (more goodwill when changing licenses), they might do that effectively.
You don't have to think redis should have been handled differently but that doesn't mean you should derail this person's thread.