* Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote: > On Fri, Sep 20, 2019 at 9:35 AM Brendan Higgins > <brendanhiggins@xxxxxxxxxx> wrote: > > > > Sorry about that. I am surprised that none of the other reviewers > > brought this up. > > I think I'm "special". > > There was some other similar change a few years ago, which I > absolutely hated because of how it broke autocomplete for me. Very few > other people seemed to react to it. FWIW, I am obsessively sensitive to autocomplete and overall source code file hieararchy and nomenclature details as well, so it's not just you. Beyond the muscle memory aspect, nonsensical naming and inanely flat file hierarchies annoy kernel developers and makes it harder for newbies to understand the kernel source as well. The less clutter, the more organization, the better - and there's very few valid technical reasons to add any new files or directories to the top level directory - we should probably *remove* quite a few. For example 'firmware/' was recently moved to drivers/firmware/, and in a similar fashion about a third of the remaining 22 directories should probably be moved too: drwxr-xr-x arch drwxr-xr-x block drwxr-xr-x certs # move to build/certs/ dir drwxr-xr-x crypto # move to kernel/crypto/ or security/crypto/ drwxr-xr-x Documentation drwxr-xr-x drivers drwxr-xr-x fs drwxr-xr-x include drwxr-xr-x init drwxr-xr-x ipc # move to kernel/ipc/ drwxr-xr-x kernel drwxr-xr-x lib drwxr-xr-x LICENSES drwxr-xr-x mm drwxr-xr-x net drwxr-xr-x samples # move to Documentation/samples/ drwxr-xr-x scripts # move to build/scripts/ drwxr-xr-x security drwxr-xr-x sound # move to drivers/sound/ drwxr-xr-x tools drwxr-xr-x usr # move to build/usr/ drwxr-xr-x virt # move to the already existing drivers/virt/ -rw-r--r-- COPYING -rw-r--r-- CREDITS -rw-r--r-- Kbuild -rw-r--r-- Kconfig -rw-r--r-- MAINTAINERS -rw-r--r-- Makefile -rw-r--r-- README There's a few borderline ones: - 'block' could in principle move to drivers/block/core/ but it's fine at the top level too I think. - 'init' could in principle be moved to kernel/init/ - but it's not wrong at the top level either. The remaining top level hierarchy would look pretty sweet and short: drwxr-xr-x arch drwxr-xr-x block drwxr-xr-x build # new drwxr-xr-x Documentation drwxr-xr-x drivers drwxr-xr-x fs drwxr-xr-x include drwxr-xr-x init drwxr-xr-x kernel drwxr-xr-x lib drwxr-xr-x LICENSES drwxr-xr-x mm drwxr-xr-x net drwxr-xr-x security drwxr-xr-x tools -rw-r--r-- COPYING -rw-r--r-- CREDITS -rw-r--r-- Kbuild -rw-r--r-- Kconfig -rw-r--r-- MAINTAINERS -rw-r--r-- Makefile -rw-r--r-- README I'm volunteering to do this (in a scripted, repeatable, reviewable, tweakable and "easy to execute in a quiet moment" fashion), although I also expect you to balk at the churn. :-) Thanks, Ingo