For Asahi, I contribute code across the entire stack: from bootloaders to the kernels to libraries to desktop environments to web browsers. I keep saying the Linux kernel development process is horrible, so what about the rest?
Let's talk about a project that does things right. KDE is a project of comparable scale to the Linux kernel. Here it its patch submission process:
1. I write the patch
2. I open the merge request *
3. The maintainer directly suggests changes using the interface, fully integrated with gitlab.
4. I click a button to accept the changes. They get turned into Git commits automatically. I don't even have to manually pull or apply patches.
5. I ask about Git history preferences, get told to squash them.
6. git pull
, git rebase -i origin/main
, clickety click, git push -f
(I wouldn't be surprised if there's a way to do this in the UI too and I just don't know)
7. They merge my MR.
The whole thing took like 5 minutes of mental energy total, once the initial patch was ready.
Seriously, look at some of the timetamps. It wasn't even 15 minutes of wall clock time from the first suggestion to final commit. Less than an hour from opening the MR. And then it got merged the next day.
And this is why I love contributing to KDE and why they're our flagship desktop environment. :)
* This of course does not consider one-time setup costs. For KDE, that was opening up an Invent account, which takes 5 minutes, and I didn't have to learn anything because I already know GitLab and anyone familiar with any forge will quickly find their way around it anyway. The kernel, of course, requires you to learn arcane processes, sign up for one or more mailing lists, set up email filters, discover tools like b4 to make your life less miserable, manually configure everything, set up your email client with manual config overrides to make it handle formatting properly, etc., and none of that is useful for any project other than the small handful that insist in following the kernel model.
@marcan there really is no logical reason to maintain the status quo from the the last century for this use case