>In my experience though projects tend to start in a single crate, without great attention to their internal dependency graph, and once compilation time becomes an issue, they have already created a spaghetti dependency graph that is difficult to refactor into smaller crates.
Maybe there should be a lint for not having modules be mutually dependent?
to me it looks like a guy that went on a dismembering spree? or maybe someone showing us his collection of weird antlers? or a guy attacking wifi signals with a sabre?
How do Linux Devs manage to not accidentally break device support constantly? I imagine this stuff is close to impossible to write automated tests for.
Generally/Ideally things break early in the release cycle, bug reports show up on the mailing lists, and fixes are applied. They are marked with a Fixes tag so as for stable releases to pick them up if relevant.
For basic stuff (as in checking if boards still boot) you have projects like kernelci.org that detect regressions on a huge variety of boards. That said, if you need to support a touchscreen, or say, an uncommon USB device, it's up to you to take care of keeping up with the releases.
I don’t think it’s arbitrary. Despite being from similar times, burials occurred decades or even centuries apart. The recipe likely evolved based on experimentation and availability of ingredients.
Maybe there should be a lint for not having modules be mutually dependent?