honestly, I do blame them for the state of the documentation because it's abnormally bad.
The amount of times I've been trying to understand behaviours of major areas of the network stack and it's completely undocumented and I have ended up reading the source code is far too high. It really is shocking how often fancy features get introduced with zero documentation and to use them you have to reverse engineer either the kernel or the one user space application that uses it.
In a clean C codebase, there are often aspects you have questions about or which aren't initially clear. The Linux kernel isn't a clean codebase; it's a pig sty.
And this isn't an inherent requirement of anything that the developers are building. The BSDs are *not like this*.
