DEV Community

Artem Sapegin
Artem Sapegin

Posted on • Updated on • Originally published at sapegin.me

Why I quit open source

Subscribe to my newsletter if you enjoyed this article.

GitHub published a curious article on avoiding burnout for open source maintainers. It’s an important topic that should be discussed more widely, and I appreciate that GitHub published it.

The article has a good overview of possible burnout reasons, and gives some suggestions on how to avoid it. However, I feel that the main goal of the article is to convince maintainers to keep doing what they are doing for as long as possible, meaning to keep working for free. The article briefly mentions sponsoring but for most maintainers it’s unrealistic to rely on sponsoring or donations.

I think the most healthy solution for avoiding maintainer burnout is quitting open source entirely, at least it was a solution that worked for me. Unfortunately, I had to reach the state of burnout myself to understand that, and then it took me long time to recover (or replace maintainer burnout with a burnout in other areas of my life).

I’ve talked before on why open source was attractive to me, and a bit on why I was contributing less, and eventually quit open source.

In this article I want to talk more about the reasons that led me to maintainer burnout, and to quitting open source after about ten years of contributing regularly, and publishing many projects.

So what are the reasons?

Entitlement and toxicity of users

Somehow people expect you to solve their issues or implement features they need. They’ll complain that the bug you introduced in the last version broke their build, or that they need this obscure feature for their current project at work, and that if you don’t add it quickly, their boss will go berserk because the deadline is already on the nose.

Folks seem to miss that you’re working on these projects in your free time, after a long day at your full-time job, and without any compensation. They demand that you work on whatever is, in their opinion, broken or missing, and then they get angry when you’re not doing it or not doing it fast enough.

They miss that you might be the only person working on the project, that you’re not a part of a large team that’s paid to work full-time on maintaining the project and solving issues of its users.

Somehow, open source became a synonym of free labor, not just free code, and it’s harmful for the whole community but mostly it’s harmful for maintainers of open source projects.

And then, there are all the toxic comments (see just a few examples) that tell you that your software is garbage and you should just kill yourself quit programming, all the plus-ones (“I have the same issue”), all the pings (“any update on this?”), and other spam comments that don’t add any value…

Low quality of contributions

I often felt like managing contributions takes more time than implementing the same features myself.

The overall code quality of pull request to open source projects is usually very low, and each pull request requires a lot of time and mental effort to review, requires many comments and many iterations to bring it to somewhat an acceptable quality.

It often takes several months to merge a single pull request, many get abandoned, or their authors get frustrated and angry. Often someone submits a pull request, and never comes back to it again, so you waste time and energy reviewing their code for nothing (I call such pull requests hit and run pull requests).

People often submit features they want but it doesn’t always match the project’s vision or is outside of its intended scope. They also believe that accepting their work is free for you, not thinking that you first need to review the pull request (likely multiple times), and then maintain the feature once it’s merged (likely forever).

And the darkest time for an open source maintainer is October, when during the Hacktoberfest people around the world spam maintainers with total nonsense just to get a free t-shirt.

Lack of community

Most of my projects never got popular despite all my efforts to make them useful and to market them. If nobody is using your project, why bother fixing bugs, writing documentation, making a nice site, and so on?

My last project, Squirrelsong color theme is a good example here. I’ve invested a lot of time on making this theme, and I think it’s better and different enough than many existing themes, and yet, it seems that I’m the only user.

My most popular open source project, React Styleguidist, has over 10K stars on GitHub, and yet, I couldn’t manage to build a community around it, and to make it self-sufficient. The project is too big for one person to build it, and to manage issues and pull requests.

I had some good contributions over the years on various projects, but most of the time they require a lot of collaboration from my side. A few people were interested in maintaining some of my projects but, again, they needed a lot of guidance from my side, so it never felt like it’s saving me any time and effort.

There should be enough people actively working on a project to respond to issues, review pull requests, and work on new features, so even if some of them get hit by a bus can’t work on a project right now, it’ll continue. In reality, however, if I wasn’t doing everything, the projects would stop completely, and the issues would start to pile up.

Lack of compensation

Maintaining an open source project is a hard and demanding job, as any other job. The difference is that we usually get paid to do other jobs but not for open source. Few developers could make a living (or at least any significant money) doing open source, for the majority of us it’s nothing but frustration.

The most money I got for my open source work was for React Styleguidist via Open Collective. And it was barely enough to buy a pack of stickers once in a while. The current monthly budget of the project is $8.

I’ve tried GitHub sponsors, with zero results, apart from one-time $550 contribution from GitHub itself that was mysteriously cancelled the same day.

I have a Buy me a coffee button on every project’s readme but I don’t think I ever got a single cup from there. (I got some coffees from Unsplash though, which is also nothing for over 1,5 million downloads of my photos there.)

Lack of tooling

There are two problems with tooling that open source maintainers have to deal with.

First, the complexity of tooling involved in development of a typical open source project:

  • Publishing JavaScript code (can’t speak about other languages — most of my work is JavaScript and TypeScript) in a way that it could be used by many people is very complex, and it’s getting worse.
  • Dependency upgrades often take ages, and if you have multiple projects, it could turn into a year-long adventure (I even made a tool to help with that).
  • Generally, the amount of configuration (TypeScript, linters, bundlers, releases, dependencies, testing, continues integration, changelog generation, and more, and more, and more…) is quickly getting out of hand.

Second, GitHub could do so much more (more than nothing) to protect its users from toxic people. For example, GitHub could:

  • Detect toxic comments, and either remove them automatically, or mark them for manual review.
  • Remove spam comments, and convert plus-ones to thumbs up reactions.
  • Educate users posting such comments by teaching them better behaviors, or banning them if they don’t want to change.
  • Make project status clear: make it clear whether a project is backed by a company or maintained by someone in their free time.

I had to ignore any activity on many projects on GitHub just to avoid people at-mentioning me all the time.

Conclusion

Something has to change to make open source healthy but for now I don’t want to be part of it. I don’t want to help corporations make millions on free code, and receive rude comments instead of any kind of recognition.

The worst part is that it’s getting worse, not better.

Now I consider my open source projects as personal projects whose code happened to be open. It’s convenient to keep code on GitHub and use npm to share code among several projects. I only add features that I need myself, and when I need them. I don’t receive notifications on any activity on these projects. I rarely look at the issues or pull requests, and I almost never respond to them.

Perhaps, I should either disable the issues entirely, or add a note explaining that they will likely be ignored and they may be more successful by forking the code. I guess, I still want projects to have a place for users to report bugs so that other users could suggest workarounds.

I’ve written about possible solution to these issues.

Subscribe to my newsletter if you enjoyed this article.

Top comments (43)

Collapse
 
bbkr profile image
Paweł bbkr Pabian

I wholeheartedly agree with your perspective on contribution quality. And for that reason when I spot a bug in open source project I always create issue instead of pull request. I know many iterations it takes to get pull request aligned with coding standard, coding naming, test flow, documentation style and other aspects specific to a project. Even experienced developer make not make it right on the first try. Call me lazy, but I think project maintainer will have less mental load when fixing bug himself based on well described issue than reviewing someone's code few times.

You also mentioned few things that everyone considering starting open source project should be aware of:

  • There will be no financial compensation. Ever. The only "compensation" is building portfolio and fun.
  • There will be no community. One will most likely be single maintainer of the whole project forever. Usually the only projects that have some self-sustaining community are those which were developed internally by companies at some point and made open source later.
  • There will be no fame or popularity. We are experiencing such flood of software that your project may get 1 visit monthly despite hundreds of hours put into it.

I think those should be mandatory check boxes when you click to create new repository on GitHub :P

Collapse
 
sapegin profile image
Artem Sapegin

Ah, and I forgot to mention that open source never helped me to find a better job...

Collapse
 
dumebii profile image
Dumebi Okolo

That is interesting. Isn't the generally spread notion that contributing to open source is the ticket to either finding a job or a better one?
I don't think I have ever actually contributed to open source because I don't understand it very much, and I do not believe myself to be that knowledgeable. I always thought it(my lack of contribution) was my reason for not getting a "better job".

Thread Thread
 
sapegin profile image
Artem Sapegin

It is a very widespread myths about open source, which in reality isn’t the case for most people. So don’t bother if that was your motivation ;-)

It might be useful for learning a few new things though…

Thread Thread
 
dumebii profile image
Dumebi Okolo

You're definitely right about the learning, and at this point; that's what I'm going for.
Thank you though for the article. Provided a lot of insight.

Collapse
 
discoriver profile image
Ben

Really insightful. I sometimes feel it's a personal failing when I don't contribute to my open source projects, or that I'm a lesser engineer, but now I realise that I've been manipulated by the expectations of open source.

I will continue to build and learn as my business requires, and spend my free time with my hobbies :)

Collapse
 
sapegin profile image
Artem Sapegin

Yeah, the guilt of not contributing is a thing that shouldn't be there. I'm glad you're recognizing it ;-)

Collapse
 
leandrosimoes profile image
Leandro Simões

I have a project that has just a bit more than 100 stars and I already have this problem so I can't imagine what projects with thousands of stars have to go through. This must be painful, unfortunately.

In my case, I took some actions to get a bit less stressful, like:

  1. Add forms for open issues, this way I can get as much information as possible from the user, and if the information that I need is not there I close the issue immediately with a message saying that some info is missing.
  2. I set up a GitHub action to automatically send a message to all new issues open where I explain that I work alone, with no money, and no time, so I need help and in case I don't get any help in 30 days, the issue will be automatically closed.
  3. I set up a GitHub action to automatically send a message 7 days before the issue has no updates, saying that in 7 days the issue will be closed.
  4. Note this down because it is the most important one. I DON'T CARE ABOUT COMMENTS CURSING ME FOR NOT HELPING. I usually answer saying that they are free to fork the repo and move on by their own.

Other things that can help are:

  1. Create a discord/slack channel and let the users help each other.
  2. Add more maintainers to the repo (if you trust someone)

That's it.

Or you can just quit and that is totally fine! And if you are really mad, just archive the repo or make it private for a while.

Peace!

Collapse
 
sapegin profile image
Artem Sapegin

I've gone through all of these steps and it's not enough for me. It still takes a lot of time without any significant benefit for me.

I DON'T CARE ABOUT COMMENTS CURSING ME FOR NOT HELPING.

I don't care too but I also don't want to see them, I don't want to waste my time reading them, hiding them, and then banning the author.

Collapse
 
leandrosimoes profile image
Leandro Simões

In this case, the best solution for your mental health is quitting, which is totally fine and understandable.

Collapse
 
tinchox5 profile image
Juan Martin

Hi! I like very much the actions you took. I find the point 2 useful and straightforward. Thank you

Collapse
 
fyodorio profile image
Fyodor

Sad to hear the story. But it's actually the way it is. And I see that it's getting worse with years.

Anyway dude, I like your projects very much. I hope these stories won't fully demotivate you from being a good software craftsman. This industry needs such folks.

And I like you color themes, they look so neat and well thought-out 👍 Not my option unfortunately, my poor old eyes need more contrast for day-to-day work, but I really like the look and feel, and the support for such huge range of tools, that's rare. (The project link here is broken btw, but I'd found it on your GitHub)

And your blog is really cool, added it to my inspiration list.

All in all, chear up man, you're such an example of a dedicated professional. Don't just leave everything, save something for practice and pleasure. Burnout is not eternal (been there for couple of times, and now very close to it). You have a lot to create and a lot to teach others to. Just give less f*cks to toxic people and get used to having more rest.

Collapse
 
sapegin profile image
Artem Sapegin

Thanks a lot! Well, I’m not going to change career anytime soon — everything else seems to be worse… Well, unless I find a way to have a nice life raising chickens in my (future) garden ;-)

And I’m sure I’ll need a hi-contrast version of my low-contrast theme in some 10 years…

P. S. Fixed the links ;-)

Collapse
 
shravan20 profile image
Shravan Kumar B

@sapegin : Great write up. This is a dark side of Open Source. I still believe things might be going down the wrong path, but we being part and identifying and redirecting things might help improve the situation.

I hope you still continue making quality contributions to open source and don't completely give up on it.

Collapse
 
sapegin profile image
Artem Sapegin

I'm giving up the social part of it, not taking down all my projects or making code private ☄️

Collapse
 
syntaxseed profile image
SyntaxSeed (Sherri W)

Somewhere in the last decade, the corporate world discovered the wealth of free labour embedded in FOSS and has capitalized heavily on it. It's no longer devs sharing code with each other.

A lot of these panicked demands for more free labour come from users in corporate context. Either putting pressure on maintainers at the direct request of their boss... or trickle-down pressure to finish job X which needs open source project Y.

I've scaled my own open-source work waaay back because I have no interest in writing code for companies for free.

Collapse
 
sapegin profile image
Artem Sapegin

Yup! I'm also now using open source purely as a way of storing and reusing my own code.

Collapse
 
rouilj profile image
John P. Rouillard

I wonder if part of the problem is GitHub?

I have been fortunate and have not seen any of the toxicity that you saw. I took over developing the Roundup Issue Tracker as the 4th I guess release manager/developer after the original developer got tired of it.

However, we don't use github issues. I mean we are developing an issue tracker. We probably should use it 8-). We also don't use a forum, preferring an email list or IRC.

I wonder if this additional friction drives away the "hit and run" people. It probably also reduces uptake, although being used for 15+ years as the tracker for Python was good advertising.

Patches do take reworking, but the ones that have come in while I was primary developer have been good. The significant code allowing Roundup to support Python 2 to Python 3 was high quality and done by others. I have reworked a few patches here and there however. Having to create test cases for the code is where the tedium comes in.

Tooling is an issue, but fortunately, Roundup can run using just standard Python library modules. However recently some of the standard modules used have been removed. I was able to vendor the code successfully. Also the pytest ecosystem, sphinx documentation and other tools make development easier than in javascript.

Collapse
 
sapegin profile image
Artem Sapegin

You’re probably right — I’m sure GitHub makes it too easy to “contribute”, until people realize that it require actual work and that most projects won’t merge any code just because it appears in pull request.

It’s probably also worse for JavaScript since it’s so popular now, and everyone seems to “know” it now.

Collapse
 
leob profile image
leob

Yeah you're right, enough is enough ... relax, go out, get some fresh air, there's more in the world than software development, that's my big #1 principle as a dev!

Collapse
 
sapegin profile image
Artem Sapegin

Thamks! ;-)

Collapse
 
chidiadi01 profile image
Chidiadi Anyanwu

Well written. I've always had an inkling about that. For me, it was because everyone started doing it. Everybody is trying to build his/her own project and get popular, so obviously many people will not make it. There's no way it can fulfil the promise for the millions pouring into it.

Then as you said, corporations making money off of free work is definitely a huge part of it. 😂

It's however, not a bad idea for building portfolio.

Collapse
 
sapegin profile image
Artem Sapegin

That's precisely my point: to build a portfolio you don't have to deal with the social part of open source ;-)

Collapse
 
santoshyadavdev profile image
Santosh Yadav

So sorry you had to go through this 🚀

Collapse
 
sapegin profile image
Artem Sapegin

🤗

Collapse
 
simo97 profile image
ADONIS SIMO

Interesting read, I saw this take from DHH a few days ago on the same topic, world.hey.com/dhh/the-open-source-...
it might be interesting for you as well.

Collapse
 
sapegin profile image
Artem Sapegin

Thanks! I agree with him that open source is a gift and that clear contract is a good thing. I don't like his shaming tone though ;-/

Collapse
 
thelime1 profile image
Aymen Hmani

I disagree with the author’s viewpoint on quitting open source.
Open source projects can be a great way to build a portfolio and gain valuable experience in software development, which can be beneficial when pursuing a career in computer engineering or starting a business.
and can lead to recognition and even potential job opportunities. Many companies value open source experience and actively seek individuals who have contributed to such projects.

Collapse
 
sapegin profile image
Artem Sapegin

This is one of the biggest myths that open source is somehow magically helps to find a better job. And to build a portfolio (and I already have one) I don’t need to accept pull requests, look at the issues, or be a target of entitlement and toxicity.

Collapse
 
maximsaplin profile image
Maxim Saplin • Edited

Agree with most of the points yet there're always upsides that put people in the place of OS contributor/maintainer. It is just a question of the balance that is ever changing.

My pros for doing OS:

  • Sense of accomplishment when you build something good and it is appreciated by others
  • Staying up-to-date with tech, having your brain fit
  • Visibility, OS work is a better proof of engineering skills than text in CV
  • Exposure - that's how you can build personal public profile
  • You do what you like. Professionally I've been in managerial positions for more than 10 years already. And I've seen a lot of crap legacy products, some times written in homebrew programming languages :) With open source you can do as you like
Collapse
 
sapegin profile image
Artem Sapegin

These are good points but to achieve these I don’t need to accept pull requests, look at the issues, or be a target of entitlement and toxicity.

Collapse
 
maximsaplin profile image
Maxim Saplin

I can feel the pain you described... Looking through someones PR, poorly formatted, buggy, without any tests or docs, solving some problem which the author of PR didn't bother to describe... At the moment I treat it as occupational hazard)

This winter I had a huge PR that was almost 1y old which I procrastinated to merge as it required a lot of mental capacity. Not because it was bad, but because it was a lot of good work done by one of the contributors, adding a nice feature. I event tried to engage ChatGPT as CoPilot to review and merge it (expecting to copy/paste sources and explaining there structure of the solution) - https://www.dropbox.com/scl/fi/d2dmxnm017swefp3nonla/ChatGPT-PR.jpeg?rlkey=qz0uqzv9gbj7j3328q641ie2a&dl=0

Some times it is the other way, contributors do decent job and invest a lot of effort. While maintainers (for many reasons, such as you described) fail to support them.

Btw, I think PR merging is a real pain and it can now be effectively solved with LLMs. Already tried doing some AI coding (see VSCode extension called cptX), now I'm thinking of creating something to solve the PR hell and publish it to GH Marketplace. We can chat separately on the subj, if you wish

Collapse
 
palmiak profile image
Maciek Palmowski

While I don't entirely agree with the author, he's got a point. Some great Open Source projects are truly dev-friendly, helpful, and helping you to learn. And I think I was lucky to be a part of such.

But there are also a lot of toxic projects, developers, and communities. Some examples were mentioned in the article. We also saw what happened when Turbo dropped TypeScript support.

That said - I hope you will give Open Source another chance, and I hope you'll be lucky this time. But I understand why you did what you did - we only have one life and there are better things to do than to argue over the internet with strangers over few lines of code.

Collapse
 
sapegin profile image
Artem Sapegin • Edited

I gave open source way too many chances already — it’s been about 10 years, and the effect on my mental health is too bad to try again. However, I’m not making my code private overnight, I’m just quitting the social part of it.

Collapse
 
icebob profile image
Icebob

Good job, it's a pretty perfect and detailed article about OSS maintainers!
I'm also a maintainer of many projects on Github and I have the same feelings. I don't plan to quit from it, but I spend less time on maintaining them.

Collapse
 
sapegin profile image
Artem Sapegin

🤗

Some comments have been hidden by the post's author - find out more