I wish I were more aware of what level of burnout there is in other large open source projects. Is Rust unique? Better? Worse? How do other projects manage this (if in fact they do)?
Projects like GCC and the Linux kernel do almost all their development in the open, via mailing lists, so maybe it would be possible to analyze that data to determine, say, the rate at which contributors drop out of the project. But I’m not aware of anyone having actually done an analysis like this.
Aren’t those two projects mostly maintained by people on the job? I don’t know what’s the proportion for the rust team, but I think it’s getting much less sponsoring. Hopefully this will get better quickly
I don’t know, but historically, for GCC at least, I wouldn’t expect so, because it’s so ideologically anti-corporate.
That’s a hell of an assumption. I know a number of Arm GCC and LLVM hackers who are all employed by various companies including Arm themselves. It’s in chip designers/manufacturers interest to have good GCC support for their architecture.
Of course hardware vendors have a vested interested in GCC support, and of course there are a lot of people paid to work on GCC! But the claim above was that GCC and Linux are “mostly” maintained by people paid to work on them. I don’t actually know how to measure that (I thought I might be able to find a quick answer by googling, but no such luck), but even if it’s true now, I seriously doubt it’s been true for the majority of GCC’s very long history.
I also specifically didn’t mention LLVM because it’s very closely associated with both Apple and Google.
The other claim was that fewer Rust maintainers are paid to work on Rust. But there are in fact quite a few people paid to work on Rust full time, and there have been throughout its history; most obviously at Mozilla, but even though Mozilla has since let go of its Rust language team, Amazon has a significant team of Rust maintainers (several of them from Mozilla), and I believe Facebook, Microsoft, Intel, and possibly Google do as well.
So as far as I can tell, (early) GCC, Linux, and Rust all have a mix of paid and unpaid maintainers.
I added gitdm stats awhile back although the mappings could certainly do with some clean-up. For the last year of activity the stats are:
Top changeset contributors by employer Red Hat 1807 (17.6%) juzhe.zhong@rivai.ai 814 (7.9%) AdaCore 795 (7.8%) ARM 778 (7.6%) SUSE 649 (6.3%) Intel 475 (4.6%) Code Sourcery 366 (3.6%) Automatic Admin 360 (3.5%) pierre-emmanuel.patry@embecosm.com 347 (3.4%) IBM 201 (2.0%) Top lines changed by employer juzhe.zhong@rivai.ai 1392979 (25.9%) SiFive 1236220 (23.0%) Code Sourcery 676611 (12.6%) Red Hat 416369 (7.8%) ARM 309116 (5.8%) gaiusmod2@gmail.com 300270 (5.6%) chenxiaolong@loongson.cn 174876 (3.3%) Automatic Admin 160200 (3.0%) Intel 86657 (1.6%) AdaCore 60414 (1.1%)
I didn’t know about gitdm; that’s a handy tool! Looks like those are just based on the domain of the email addresses used for commits, so it doesn’t necessarily indicate whether the company employees people specifically to work on GCC. But I think you’re right, that does indicate quite a lot of corporate support for the project.
The gitdm scripts come from LWN who do a regular “who writes the kernel” report but can work on any git repo.
You can be fairly certain that patches coming from a corporate domain are paid for their time. You can add extra metadata to track people who use personal or org addresses if they confirm it’s a paid gig. The project I work on most is about 75% paid contributors with hobbyists and academics making up the rest. The good unpaid contributors can often get hired if they want to be.
Sorry, what project is this? GCC?
Sorry yes this was GCC, I can do the same for the rust repo if you want.
I used to work at a company that held to the concept of “don’t be a hero.” Basically, if you were having to step up, work overtime, and always go out of your normal routine to “fix” stuff, then you’re actually enabling bad processes.
I think the same concept applies here. If you can’t let any code be submitted without personally reviewing it, then there is something wrong with either the review system, the onboarding system for new devs, or the continuous integration system that should be catching mistakes. Same goes for triaging: if no one is triaging because it’s too exhausting and leads to burnout, then some other system may need to be devised for handling outstanding issues.
Obviously this is much harder to deal with in an organization where most contributors are volunteers. But if we want the project to survive and not be taken over by corporations who can afford to pay people to deal with this stuff full time, I think it should be addressed in a different way.
Thanks for the post!
I’m obviously not the target audience, but I really like the idea of treating maintaining a FOSS project as a job. Fix how much time you’ll spend on it, set expectations, etc, and remember that you can quit and rejoin at any time (just notify the rest of the team that you need a break).
I appreciate all the hard work Rust maintainers put in, and I wish I was in a position to help out (I’d just get in the way). Please take the time off you need, the Rust project is in a good spot right now and new things can wait.