D
Daniel Vetter
blog.ffwll.ch · Personal blog · on HN since 2013
Daniel Vetter is a Linux kernel graphics maintainer who writes about kernel development, maintainership, and locking.
What HN saysHN links his post on why GitHub can't host the Linux kernel community, which commenters cite as a good explanation of email-based patch workflows.
29HN people shared it
10linked it in comments
24stories submitted
629story points
6 months agolast shared
2013people per year2026
Most-shared posts
- 1Why GitHub Can't Host the Linux Kernel Community8 people · 407 points · first shared 2017 · 236 comments on HN
- 2Linux Kernel Maintainer Statistics3 people · 7 points · first shared 2018 · 2 comments on HN
- 3Maintainers Don't Scale2 people · 162 points · first shared 2017 · 119 comments on HN
- 4Locking Engineering Principles2 people · 25 points · first shared 2022 · discussion on HN
- 5Upstream Graphics: Too Little, Too Late2 people · 6 points · first shared 2019 · discussion on HN
- 6On Getting Patches Merged2 people · 4 points · first shared 2016 · discussion on HN
- 7Crashcourse on Intel hardware:i915 and what the GEM does2 people · 2 points · first shared 2013 · discussion on HN
- 8Review, not Rocket Science2 people · 2 points · first shared 2017 · discussion on HN
- 9Why No 2D Userspace API in Linux Direct Rendering Manager?1 people · 3 points · first shared 2019 · 1 comments on HN
- 10Neat Intel Graphics Stuff for Linux 4.81 people · 3 points · first shared 2016 · discussion on HN
- 11Why GitHub can't host the Linux kernel community1 people · 3 points · first shared 2018 · 1 comments on HN
- 12Awesome Atomic Advances1 people · 2 points · first shared 2016 · discussion on HN
- 13Upstream, Why and How1 people · 1 points · first shared 2024 · discussion on HN
- 14Midlayers, Once More with Feelings!1 people · 1 points · first shared 2016 · discussion on HN
- 15Graphics Kernel Upstreaming Requirements1 people · 1 points · first shared 2015 · discussion on HN
What HN people wrote when they linked it
vulcan01 · 2025-02-08
https://blog.ffwll.ch/about/
> Currently I work at Intel’s Linux Cloud SE group, mostly creating havoc in kernel driver’s given my more than a decade of work in the graphics subsystem. I’m also co-maintaining the graphics subsystem. I also have been drm/i915 kernel maintainer for a few years, but handed that all off to a great new team.
dapperdrake · 2026-05-01
Here is what email patches are all about:
https://blog.ffwll.ch/2017/08/github-why-cant-host-the-kernel.html
I tried email patches with another person myself. The only reason GH won here, is because the git people made one fatal mistake: They forgot to include the tree hash and only show the commit hash in the email patch. But the commit hash is useless. When you email patch, then commits people want to treat as "the same" and talk about have different hashes. The commit times differ and there is not only the commit author, but also the committer.
We stopped doing email patches, because commit hashes became useless for communicating with each other.
GitHub made commit hashes "constant" in a way people care about.
For our purposes, tree hashes would have been much better in practice.
The git user interface is literally "git porcelain". It cuts you for no reason.
hnfong · 2021-09-17
I recently found this article, which probably repeats the same points, but with a very concrete example (Linux kernel development): https://blog.ffwll.ch/2017/08/github-why-cant-host-the-kernel.html
It was an interesting read because Linus has repeatedly dismissed github for kernel development, and he never explains why in detail (as a consequence most news reporting his soundbites are not very informative either)
cnst · 2020-08-27
This is the most upsetting part about it, IMHO. The reason Microsoft pays a salary to this person is precisely to get GitHub mentioned into these sorts of conversations -- even though it's widely known that GitHub doesn't support such usecases.
But, of course, there's never any time to mention such facts; but here's an example if anyone's curious: https://blog.ffwll.ch/2017/08/github-why-cant-host-the-kernel.html.
Yet when a one-person team tries to provide relevant examples on the issues of dealing with Microsoft, pitching a potential solution, and offering their take on it -- fully open-sourced -- they get discounted as advertisement -- even though their service is free and open source.
dfabulich · 2018-09-13
Here's a good article. https://danluu.com/monorepo/ It cites simplified organization, simplified dependencies, superior tooling, and easier cross-project changes.
https://blog.ffwll.ch/2017/08/github-why-cant-host-the-kernel.html is another good one. You can build issue/PR tools treating a monotree as containing multiple repositories; that's how Google and Facebook do their work (including checked-in OWNERS/MAINTAINERS files).
Areading314 · 2018-07-02
Here is an interesting post about the Linux project and why they don't use GitHub
https://blog.ffwll.ch/2017/08/github-why-cant-host-the-kernel.html
tremon · 2017-11-15
Probably this link: http://blog.ffwll.ch/2017/08/github-why-cant-host-the-kernel.html ?
In that case, yes, that applies to GitLab too. The main problem is how GitHub and GitLab manage subprojects: GitLab forks are strictly hierarchical in how they manage pull requests and contributions (you can only submit patches from your repo to the single repo that you forked from).
But that may not be an issue for per-package repositories like Debian has on alioth. Debian does not have a monotree like the Linux kernel, every (source) package is a standalone project so the same objection does not apply here.
qb45 · 2013-03-31
I've found quite readable and relatively high level description of memory management and command submission in Linux drivers for Intel GPUs.
http://blog.ffwll.ch/2013/01/i915gem-crashcourse-overview.html
This (plus some low-level register poking) is the stuff you would need to implement in your GPU daemon. Actual generation of drawing commands, compilation of shaders etc is performed by applications.
The overhead should be in the order of few context switches to the GPU server for each frame rendered by any application (in Linux it's few syscalls instead of context switches). Probably not terrible.
nyanpasu64 · 2022-08-19
For the longest time I viewed kernel programming as an exalted realm of "optimized bare-metal software written by visionaries and wizards" (like operating system core developers of the Dave Cutler variety). Having had the misfortune of dabbling in reverse-engineering Windows drivers and debugging in-tree Linux kernel drivers, I now believe they're often messy hackjobs written by low-paid average-skilled embedded developers, no less fallible than the average enterprise Java programmer (https://blog.ffwll.ch/2022/08/locking-hierarchy.html expresses a similar sentiment). And I feel the maintainers are sometimes spread far too thin (Dmitry Torokhov manages a good chunk of Linux's entire input system, no wonder he lets mistakes slip by in the touchpad driver, I'm just disappointed I reported a bug to the mailing lists and never got a reply after like a month).
EDIT: The wizards are out there, for example https://pvk.ca/Blog/2019/01/09/preemption-is-gc-for-memory-reordering/… but they're not evenly distributed, and perhaps the insane cutting-edge code they write (and the less insane code I write) isn't necessarily dependable, since by definition they lie on the edge of human understanding.
mananaysiempre · 2022-08-15
>> In a Flatpak you have (?) to assume the system glibc is incompatible with the bundled one either way, thus you can’t assume you can load host libraries.
> Not exactly. You must assume that the host glibc is incompatible with the bundled one, that's right.
> But that does not mean you cannot load host libraries. You can load them (provided you got them somehow inside the container namespace, including their dependencies) using the linker inside the container.
I meant that the glibcs are potentially ABI-incompatible both ways, not just that they’ll fight if you try to load both of them at once. Specifically, if the bundled (thus loaded) glibc is old, 2.U, and you try to load a host library wants a new frobnicate@GLIBC_2_V, V > U, you lose, right? I just don’t see any way around it.
>> These libraries require carnal knowledge of the kernel-space driver, thus emphatically cannot be bundled; but the previous point means that you can’t load them from the host system either.
> Yes and no; Intel and AMD user space drivers have to work with variety of kernel versions, so they cannot be too tight. Nvidia driver has tightly coupled user space and kernel space, but with the recent open-sourcing the kernel part, this will also change.
My impression of out-of-tree accelerated is mainly from fighting fglrx for the Radeon 9600 circa 2008, so extremely out of date. Intel is in-tree, so I’m willing to believe it has some degree of ABI stability, at least if an i915 blog post[1] is…