The Hobbyist Maintainer Economic Gravity Well
26 points by Aks
26 points by Aks
Feel free to ask any questions, and thanks to the person that posted it!
My personal experience completely contradicts this article. So many people are treated so badly that remarkably small amounts of money can get you access to talent far in excess of what you might expect.
The thing is, most hobbyist maintainer packages do not have enough work to do to justify that much time spent on it.
I don't agree with this at all, and I'm going to make you back it up.
In my experience, every open source project that has corporate users easily has enough work for several full-time developers. I'm struggling to think up an exception.
Part-Time jobs do not exist in software.
Part-time jobs absolutely exist--we call them contracting/consulting. I'm mystified that you have never bumped into this.
To top it off, programming is now old enough that we have lots of retirees in the field. A bit of money could incentivize a chunk of them more than you think (I have done this with quite a few technical retirees). However, they are absolutely not going to put up with bullshit and will call it out if you're being a schmuck.
I do talk of freelancing and contracting later in the post.
On amount of work ... What kind of package do you have in mind?
In my case I think of left pad. Fast float to string conversion. A distributed process registry. A parser for eve online logs. Etc
In my case I think of left pad. Fast float to string conversion. A distributed process registry. A parser for eve online logs. Etc
Okay, you got me there. LeftPad is technically a library that has corporate users.
I'm thinking OpenSSL, ImageMagick, FFmpeg, etc. Stuff that is fundamental to the Internet but woefully underfunded. Javascript-anything pretty much never entered my brain.
We're on two different levels which is why we're talking past one another.
OpenSSL at least is relatively well funded
Imagemagick is a strange case.
FFmpeg is kind of a strange mix of you and me. Because it uses all the codecs that are what I talk about and adds a thin veneer.
Note that I only have one js stuff in my list. The rest is C stuff or erlang stuff.
And the C stuff is libc or that level. I care far more about the stuff things like FFmpeg and Imagemagick use themselves. Because it is a far wider and more impactful codebase.
Are you the author?
I'm a bit confused as to what kind of projects this is talking about. Is it it talking about a compiler that is 500K+ SLOC? Is it talking about a terminal pretty-printing library that fits within a few thousand lines?
There's orders of magnitude of differences in the scale of projects when considering the complexity, time-frames for shipping things, number of concurrent things in flight, and cost-of-replacement.
You wrote this:
The thing is, most hobbyist maintainer packages (emphasis added) do not have enough work to do to justify that much time spent on it.
Is this arguing against a thesis of the form of "most OSS maintainers, regardless of the overall scale of code which they are ~responsible for, should be paid a full-time wage by the companies using their software"? If so, I suppose I agree with you, but having read my fair share of blog posts talking about funding for OSS maintainers, I've rarely run into positions like that. Much more often, I see a focus on very widely used projects like Django, Linux, Rustc etc.
I am indeed the author!
I do not mean a compiler mostly, because the vast majority of FOSS is not compilers. These are exceptions. Important one ofc, but exceptions nonetheless.
I am arguing that to make "paying hobbyists maintainers would help", you need to pay the equivalent of a FTE for most of these "hobby" projects. Not just "pay them for the equivalent of the 6h they spend anyway". My problem is more that all we hear about FOSS is "pay the maintainers" without any acknowledgement that the vast majority of maintainers are hobbyists.
I’ve been paid at max about $500 a month from github sponsors. I still needed a full time salary but found the money nicer than I would have guessed. I used it on office supplies and on “buying time” like getting food delivered or hiring maintenance work instead of doing it myself. A fellow puma maintainer is currently wanting some help buying a Linux machine (they currently use windows). These “cups of coffee” type funds have some impact and are worth acknowledging.
But in my case they went away quickly and without warning and certainly were not high enough dollar amounts to be “sustaining” or changing my maintenance behavior.
I wrote a book on open source (also far from FTE salary) and came to the conclusion that the best funding mechanism we currently have was full time employment with fractional open source time. I suggested devs interested in this “put tickets on the kanban” for their open source work (such as filing issues and reproductions for upstream projects).
You’re paying the hobbiest indirectly through company time funding bug fixes and feature development. Which is also the idea behind CodeTriage. But it’s a lousy way to get paid to fund your time on your projects, unless your hobby directly intersects with your current company.
That's a fair point, thanks for clarifying.
I do not mean a compiler mostly, because the vast majority of FOSS is not compilers. These are exceptions. Important one ofc, but exceptions nonetheless.
Hmm, I'm not sure if "exceptions" is quite the right frame because certain dependencies in the software ecosystem are much more important than others. So I think there's an argument to be made that it makes sense to focus on critical dependencies first.
E.g. as a concrete example in https://jacobian.org/2024/feb/16/paying-maintainers-is-good/, Jacob Kaplan-Moss gives the following specific examples:
Closer to home, let’s look at Django. By my estimate hundreds of thousands of engineers use Django daily. How many get paid to work on Django itself? One and a half – the DSF employs one full-time and one part-time Fellow. That’s the entire population of people who get paid just to work on Django. The numbers are similar to Python itself: millions of people use Python daily, but fewer than a dozen are paid to do so
“Sustainability” would mean that something like a dozen people were being paid to work full-time on Django – and being paid something approaching the industry median. It would mean several dozen people working full-time on Python. Heck, just PyPI by itself ought to have a team of 10-15, minimum, given its scope, scale, and importance
I'm fully in agreement with you if the chosen frame is about the majority of OSS maintainers. However, I don't think that's the best frame for this kind of discussion, as the # of things that depend on a piece of software directly influences potential sources of funding for it, and the averaging effect across all OSS projects means that we end up with a reductive "the average OSS project has relatively few pieces of software that depend on it."
I mean, your Django point kinda support what I say here.
A massive project with massive impact like Django is only 1.5 dev. Which shows even more how even massive projects are heavily limited in their ability to support full time engineers.
I'm not in disagreement with what you're saying regarding supporting the % of OSS maintainers if we consider the ~entirety of OSS. Yes, a few devs gain a lot of leverage through OSS, that's one of the perks of ~zero marginal distribution costs.
My point is that if we look at critical dependencies like Django which have millions of people depending on them (see also: https://jacobian.org/2024/oct/8/dsf-one-million/), even those are underfunded relative to what their needs are (let alone average OSS maintainer Joe's library which has < 10 dependents) and so it arguably makes sense to focus on those first. Dismissing projects with high number of dependents as exceptions is arguably not good, because for projects with many dependents, the ROI is arguably higher if you were to fund their maintainers more properly.
I am not dismissing high number of dependents. Leftpad is such a project. I am dismissing massive projects with tons of code and most of the time already a paid or part time paid core team.
How does DSF have six board members and 1.5 devs?
Why not? Seven board seats are volunteer positions.
In contrast, paid development positions are limited by reliability of the funding.
I just don't get how there are only 1.5 folks paid to write Django. Django is crazy popular and also pretty wide in scope. It's not like it is in maintenance mode either. I remember there being a post about a new major release.
I have to admit that I have never used Django and I'm probably out of my lane.
1.5 folks paid by the foundation to write Django. Like you, I also do not know whether (but plausibly some?) and how many (probably not enough!) of the noticeable contributors are officially doing it as a part of their paid work hours without employment contract with the foundation itself. Other things being equal, contributing 10% of an engineer's work time to an important upstream has benefits to a company over contributing 10% of the full employee cost to the foundation in order to support more paid development.
So there is a relevant question different from how many developers DSF employs, but I cannot give any approximation to the answer.
without any acknowledgement that the vast majority of maintainers are hobbyists
Is that true? Are there any surveys that count how many people are employed to work on open source, or contribute to open source as part of their jobs, compared to hobbyists?
Yes actually! You can start with the Tidelift report from 2023. They have it for multiple years, I have not really updated my references. Note that Tidelift numbers are going to be skewed toward paid maintainers.
Hmm, I found a Tidelift report from 2024, which said they had less than 500 respondents, one fifth of who were paid by Tidelift. It’s hard to guess the error bars on their numbers, but the sample seems to be small and unrepresentative.
Part-Time jobs do not exist in software
What utter nonsense. I am working 4 days a week at my current company and am confident my previous employers would’ve agreed to let me work less hours, too.
The catch is that you probably need to apply for a full-time position job posting and negotiate to work less hours, or (as I have) transition into it after having worked at the same company a while. It also helps if you have some seniority.
Edit: come to think of it, this might be because I’m based in Europe, where companies are more concerned about long-term relationships with their employees and work-life balance is considered more important than in the US.
I am based in europe and most of my friends are too. We have all tried for years to negotiate a part time position. You, my friend, are highly lucky. None of us managed to get that.
I haven't seen anyone with a part-time job other than an internship or an entry level that was expected to convert to fulltime or leave, so I suppose it's very unevenly distributed across places and fields at the very least least.
The article in general rings true for me. I took donation buttons off of all my personal single-maintainer projects because especially after 2020, literally no one was donating anymore (before that I would get a token $1-5 once in a while). At least those are mostly OCaml libraries or standalone client-side-only web apps, so they normally don't require emergency maintenance so in most cases I'm free to choose to work on them or not to, whenever I feel like it.
In Germany they have to give it to you. They may be annoyed and make a stink, but legally there's very little they can do about it. In the Netherlands working less than 40 hours is more or less the rule.
I live in Germany and while this is true, there are ways your employer may make you regret this decision (under the veil of plausible deniability). Company culture matters a lot
Sure, but a company that would focus on that instead of just getting on with work, is not a happy and productive place to work.
Probably depends on your company (and specific country) then, so your sample size might simply be too small and local.
In my current team I have 2 people at 80%.
I had a part-time job in software at a consulting company. I negotiated it in my first interview; I think it worked for them because they were just getting started so a lower salary meant they could save up less money to be able to hire me as their first full-time employee. For 5 years, I worked three days per week. Usually I was off Monday and Friday, but if there was a holiday on Tuesday or Thursday I'd shift earlier or later to try get 3 days every week.
I didn't make too many open source contributions, but I used the time to give conference talks, write a short book on programming, begin the romantic relationship that became my marriage, and otherwise deeply enjoy life. I strongly recommend trying a reduced schedule, though I think 3d/w would be a much harder sell than 4. If you want to get below 4, the best way to get it would be to go into bootstrapped entrepreneurship.
In the US your health insurance is attached to employment, and part time jobs don't have to provide you health insurance. My understanding is that if you don't work 40 hours a week at the same employer, you're buying your own health insurance. A company might be willing to provide it anyway, but since health insurance money is taxed differently I suspect that will only last until their next financial audit.
A coworker in my company switched to part time, but it's probably the only time I've seen it happen. I have a nice company and she is a great engineer, but she either got a raise because they wanted to keep her, or she took an effective pay cut for the same on-paper salary.
It never ceases to amaze how absolutely insane things are in the USA. It really is every man for himself
TBH, I don't have much sympathy for these maintainers. If their intention was to get paid and make it a job, they should have been up front about it from the beginning, and figured out a plan for getting paid ahead of time. Otherwise, when bug reports come in, be clear that it's a hobby and that the schedule is based on your availability and free time, and that there are no guarantees. Don't put yourself in a position where you feel obligated to work on a hobby.
If it starts as a hobby and transitions into more than that, then put something in place as soon as possible to ensure you get paid. Corporations will exploit you without giving it a second thought - it's not their problem if you get paid and the whole point, for them, is to save money over developing it themselves.
Note that I do not ask for sympathy in this piece.
I am simply framing reality. It is part of a slowly growing serie aiming at building a model of how we can actually help them. Not because I have sympathy for them, but because as a society we kinda want a better level of quality over these dependencies. And yet the field makes it hard to get that.
I just don't see that as a problem. There are lots of examples where companies have stepped up and funded open source projects through paid contracts, hiring the developers, etc.
Nobody forces anyone to use hobbyist projects as dependencies. If a company exploiting a hobby project sees it as "low quality" then it's a problem of their own making for choosing to use it and then choosing not to fund the maintenance. There's no free lunch, especially not for for-profit corporations.
I understand that position, and I respect it.
I also cannot ignore that these dependencies are everywhere and the life of a lot of people now depends on them. I understand wanting to change things in the future. But FOSS won already. We were the dog running behind the ambulance and we caught it. And now we need to deal with the fact that we are driving it.
I am not saying that us, as maintainers, need to be the one putting in the work. I am saying that as a society, we cannot just say "well not our problem that engineers decided to depend on this, we will not care about the impact". It is a bit late for that.
I think when a company starts getting manipulative (e.g. trying to create a sense of urgency), making them go away is not always easy, and naming a price, preferably high enough that you can tolerate them accepting it, is tried as a possibly most efficient way to make them go away.
Personally, it wouldn't bother me to tell them to go pound sand, but I can definitely see how it could be difficult for some people to put their foot down.
The problem is also which option will achieve them actually going pounding sand faster.
I think this is correct in large part, but I think it understates how much people have different circumstances and preferences about work. For a lot of people (parents, folks with elderly parents, folks with disabilities), 40 hours a week is difficult to manage. For some people, 40 hours a week is not enough, in the sense that they'll eagerly seek out side-hustles or a second job as a landlord[0] (note that here I'm talking about reasonably well-paid software engineers, not people who take a second-job out of hardship).
The people who do significant OSS projects are, by necessity, going to have more of the second type. So incentives for OSS work would have an impact even when they don't scale to the equivalent of a full time job.
[0] You can be a purely passive landlord who makes money from capital, but most people I see who work a normal job and are also a landlord end up taking on a second part-time job--the passive returns only are effective when you have a lot money.
So let’s assume someone in NA or Western Europe, with a family, and an income of something like 5k USD-or-equivalent monthly income post-tax. Taking into consideration the cost of a family, a car, housing, food, and the rest, they probably have some leftover money, but not that much. There is some wiggle room if their partner work, but we will still consider “5k per month” as our income level goal.
I live in France (Western Europe), and I consider 5K€/month a fairly high salary: only 7% of all French salaries are higher than that. (I make sensibly less than this myself.)
On the rest: I agree it would be nice if people normalized jobs where we work four days a week. It may be the case that employers currently do not want this, but it could be a cultural habit to try to adopt collectively (things change on this front, for example remote work was unthinkable years ago and has become an option). This would free time for people to do something else (paid or not) one day a week, including participating in open source communities.
I am french too and I am at 5k/month. It is high!
It is also a 50% cut compared to what I was earning a few years ago.
Note that we are definitely talking of high percentile jobs here. We could argue on if the discrepancy should be that hard and about capitalism. But in the current economic model, having experts in highly technical and complex niche being in p5 is kinda what we should expect.
I don't see clear justifications for programming experts earning more than, say, the people working to take care of fragile elderly people in retirement homes. Their work is brutally hard, humanly extremely demanding, and literally the most important thing in the life of their patients.
You may be saying that if software maintainers could make a p5 salary working in industry, then they deserve the same salary level if they work to maintain our software commons. This is also not clear to me. (Is the idea that they would not accept being paid at lower levels, even though those levels would be perfectly adequate to live a pleasant life? Why would we think that?)
TBH, I don't have much sympathy for these maintainers. If their intention was to get paid and make it a job, they should have been up front about it from the beginning, and figured out a plan for getting paid ahead of time. Otherwise, when bug reports come in, be clear that it's a hobby and that the schedule is based on your availability and free time, and that there are no guarantees. Don't put yourself in a position where you feel obligated to work on a hobby.
If it starts as a hobby and transitions into more than that, then put something in place as soon as possible to ensure you get paid. Corporations will exploit you without giving it a second thought - it's not their problem.
Ive been thinking about what is being sold when people are paying for open source. There is a set of perverse incentives that money introduces.
In open source (non paid) “stealing work” is a good thing. Showing up and doing someone else’s chores is a wonderful act. In paid work, as the author points out, where there might not be 40 hours of work…it’s possibly cutting into someone’s bottom line.
Traditionally features and bug fixes that are aligned with a project are gifts (not entirely free, like a puppy to be cared for), and it’s clear that maintainers balance cost of maintenance with taking on new complexity naturally. But when complexity becomes a source of income, it’s unclear if: a maintainer saying “sorry you need to pay me to maintain your feature” is actually charging for the fair cost of their work or is (possibly without realizing) charging a toll for access or putting a price on acceptance.
Basically, it makes it less clear who should be getting paid for what (do you pay for code, or the original idea, or for the cost of review, or access or what) and who is really helping whom. You run the risk of hurt feelings or hurt income when everyone thinks they are getting taken advantage of.
“Regular” business is well established what can be done when there’s a dispute or people aren’t happy. They can take their money or time else where or they can quit or fire a client. Money is transactional. But open source is relational and what makes sense in one might not always be compatible with the other.
Accountability and clarity are important where transactional overlaps with relational.
I mean yes, but even more, if you go back to my previous post in this serie, you will see that I argue that paying for FOSS, due to the setup of our IP laws, goes against what made FOSS so good for society.
Looking now at:
Which reminds me of why Facebook is interested in open sourcing an LLM. They aren't an LLM company, but have an incentive to drive the cost of LLMs down.
I guess some other context around my post comes to: I'm now part of a software foundation. And companies pay it, but they can also just directly pay their own devs to work on that software. So it's an open question of what the foundation is selling. It's not the work, or if it was it would be competing on price and efficiency. It could be accountability and reporting. I don't think it should be selling access, certainly not control. But I think a foundation has a right and duty to oversee access is limited enough to be secure but open enough to be available to the best minds of the community.
I mention accountability because I've heard the phrase that volunteers are "low accountability" as in "provided without warranty". And when people open pocketbooks they expect something in return.
I'll keep reading your posts now.
I think the foundation mostly sell protection against antitrust.
And thank you!
That's really interesting and surprising. Could you say more? Do you mean literal legal protection or metaphorical protection against a competitor capturing an industry resource?
I mean literally legal.
They are collaborating with other orgs in the same field to build a tool they use together.
This is not how the law prefer corporations to work. They are supposed to have an "arm-length" relationship, with negotiations and money being exchanged.
Foundations and trade associations are the historical solution to serve a legal construct to provide distance and a hosting entity separate from the contributors. Making the hosting foundation a not-profit allows for competitors or "trust" of entities composing a large party of the field to collaborate without being legally at risk of being seen as colluding and sharing knowledge in order to gain an advantage over the rest of the field.
I am not sure what is the actual goal of those (ETA: pay-or-go-away) calls. I am also not sure the local tactical goal is always the same.
Sometimes there is a perception that the company definitely won't pay so why not put the question like that. Sometimes there is some kind of consulting offer already published, so there is in fact a way to pay that would allow a maintainer to temporarily reduce the efforts on search-for-clients. Sometimes there is actually someone among the maintainers who would be interested in being hired fulltime, with some maintenance work counted as work time, but mostly doing work in the adjacent parts of the codebase.
And as for the latter case, there are non-huge companies who happen to allocate working time to the non-company-specific project needs because they want project stability, and also relationships for easier getting some code for the company needs into upstream.
Of course the author is right that in general, at least until «pay or go away» becomes a real problem for a company for regulatory reasons and possibly even afterwards, such a move is not going to solve resource issues for projects, except in the case where efficiency of chasing companies away is in itself worth optimising.
There is no call in this one. I simply describe reality so I can link it to people when they keep bringing "pay or go away" and regulations as solutions. Because even with these, what I point out in the post will still go against being able to get impact from these actions.
Sorry, now edited to clarify that I meant «call for payments» (that are as often just calls to go away). Your post is indeed a description of real issues as they are, without any prescriptive part biasing the things.
Mixed-duties hiring, actively searching for backlog to take up with your own team (to gain in-house competence and also connections/in-project reputation), paying people de-facto retainers in the sense that the work being done is somewhat too low for the monthly total — all these approaches can be considered adding overhead, but that's in the world where negligence costs nothing.
Probably the already existing «wholesale maintenance» approach will need to be deployed more, because you are of course right that otherwise keeping track of what is safe to use becomes impractical.
What a great read. I've seen so many articles talking about how OSS should be funded. It's the first time I see one where the author actually understands the money dynamics.
Sponsor money is the equivalent of artists busking in the streets. Only do it if you care about the art and experience.
One good way to make a comfortable living with OSS is to find a rising niche, participate in it, and then companies might contact you to freelance or hire. So it's essentially marketing. If you're lucky the company will let you contribute back to the project, but not always.
One thing companies never do is hire you to add a feature to a project. They rather spend their own engineer time to do it.