The Phases of an Open Source Project Maintainer
nibblestew.blogspot.com
nibblestew.blogspot.com
Your project didn’t just scratch your own itch, but also that of a powerful large commercial entity. It copied your permissively licensed mouse trap into its moneymaking SAAS machine. You start questioning yourself using such words as fairness and attribution. You are annoyed that you’re unable to find that 2019 talk by a german Elastic guy on HN about the commercial realities of open source software.
Realization that no one else will be contributing
Realization that programmers capable of really contributing probably think "filing a bug" was "contributing" and will bug you about timelines
Realization that people in paid jobs are pressuring you for bug fixes and feature timelines
Realization that being asked for free support from perfectly nice people has a mental cost, either in not providing it, or in providing it
Realization that open source zealots will judge you, and companies will avoid you, if you choose any other license, but at the same time, none of the problems above have solutions...
Feeling that your work provides charity to for-profit enterprises
Ennui/Abandonment: A strange game. The only winning move is not to play.
The contradiction is that of course a dev doesn't want to be used (meaning: taken advantage of); yet, a dev wants their projects to be used - the dev wants to have "users".
I've open-sourced a couple of tools throughout the years and all it's done is prove to me that I don't have the emotional energy to deal with it.
I still get emails that somehow both call me a piece of s&#t but still asking me to add features to a piece of software that's been irrelevant for 7+ years...
I found the same thing when I would play music publicly - I love music, I hate the audience. Writing a piece of software for other devs/SWEs to consume is often hell - we are a demanding, incredibly opinionated, pissy bunch of folks. (I say that last bit 110% self-aware that historically I'm part of the problem.)
Realization that while the project is very popular, it no longer interests you
Realization that due to your technical decisions, others can't simply fork and maintain it
Realization that indulging enthusiastic amateurs costs you 10x the time than simply implementing the feature yourself
Realization that thousands of users are suffering because your project is still by far the best choice even as it rots
Realization that no matter how well you document the tool, users will still ignore it and feel entitled to your direct support
Man, even making something popular sucks.
That means accepting contributions? Code reviewing, giving feedback, showing how to rewrite the PR in better ways?
E.g. from the article:
> Once the first version exists and is found usable, the next step is to make it production ready.
Why? Why does open source ever have to get to this stage at all? What are people's expectations? Is there a - potentially unconscious - expectation that all open source projects need to end up at the scale of linux or kubernetes or firefox or whatever?
Why can't open source just be some twiddly little bit of fun that captures your imagination for a week or two, ends up on github and is then abandoned?
Don't be so hard on yourselves. Create things for the joy of it.
It's a nutty situation we've gotten ourselves into.
However, I'd say if you're maintaining something and don't enjoy one or more of these hats then keep in mind that totally dominating a problem space doesn't need to be the end goal. There is such a thing as a lifestyle OS project and you can still make a success out of it, gain a loyal (perhaps modest) community, and enjoy taking it slow.
Thankfully, maintaining them and using them has been great, user interactions have been super friendly and very pleasant.
So, despite me wanting to be popular, it is perhaps a good thing none of my projects made it big and that I can still consider myself at around stage #1
The maintainers take good care of the project and I admire the energy and consistency that maintainers like Trevor Brown have.
I try really hard to contribute sometimes by responding to issues and closing them. But that is all the energy I can spare for the project.
At this point I would rather focus on anything that pays money than work on something purely for the sake of open source.
What I wish I knew 12yrs ago:
* Money is not a bad thing to take/have. * Irrespective of whether projects are opensource or paid, they need to be sustainable.
If be surprised if any worth while prospective employer did not look favourably upon it. It's often the most visible past software work you have.
Most of the rest, I’m at Stage 4, with ambivalence towards moving past that.
A couple of projects didn’t make it past Stage 2.
I keep a lot of irons in the fire.
Luckily for me, I kept scope small and the project is 8 years old, so I was able to manage documentation as well as UI polish, while keeping bugs to a minimum. These days I'm still adding features and improving the onboarding experience.
Now to get people using it…
I actually value software that is mostly static.
Then again this website is extremely biased towards people who develop network services, which for some reason tends to require constant maintenance.
I wonder if a 'rules of the road' sort of document in repos would help? A sort of 'here is what you can expect from the maintainer of this repo'. I think some people end up taking on too much and then you find out some key bit of infrastructure is done by 1 guy in his spare time, and managing their own job. Then others come along and expect you to fix it for them when you pretty much have abandoned the project. For example many of my projects would be in a 'AS-IS' category, if I made them public. I am not going to really revisit a project from 6 years ago that did something specific I needed. Not even if you show up with a nice pull request unless I am feeling particularly charitable that day.
I also have a number of opensource projects published. Some of them get picked up by the popular distros, and I know (most of them) are in the same situation so I may be inclined to help them out. However, I have to ponder what goes in the minds of the people who bombard me with "Please add support for my odd usecase no one other than me could possibly want" emails.
PS If someone sents you a patch to a 6 year abandoned project which you don't even care any longer, just apply it without even trying to check if it builds. Most likely it does.
For my personal case my private repos are mine and have no license/rules of the road because they are private.
The world rots, and software must be maintained to match it, to keep working.
It is my common in my area (engineering/industrial) to see software that is 30-40 years old where the only maintenance required is to keep up with the ever-changing operating systems (i.e. it is software who changes more than the rest of "the world").
Because at some point DOS ain't going to run on Windows 11 anymore.
My wording didn't express what I meant.
In particular Phase Eight, making the flip from engineer/senior-engineer to manager causes friction when the new manager can't let go of the code.
That's me... I can't let go of the code =\ Worst still - I'm not even that good at coding.
I think Guido van Rossum is a prominent example, but I can't think of anyone else right now.