I absolutely support this approach. I've actually been advocating this half a year ago.
You can develop the individual layers / components more independently. Prerequisite is a stable and complete interface between the layers. Then breaking one component doesn't neccessarily mean breaking the whole.
More developers will also make more noise. Recompiling the whole OS due to a small fix in some user mode app seems to be an archaic method. The build times won't decrease and the number of commits per day (hopefully) also won't decrease. A layered structure also in the sources would help to decrease build times and avoid breakages or at least make them less fatal.
"make ntdll_clean" + "make bootcd" ...Will lead to a relink of all usermode stuff. Did someone change the ntdll exports? Probably not. Can I exclude all dlls from build? No way. The apps require the import libs. Exclude all apps? No, some dlls require explorer to be built. I highly suggest seperating the import libraries from the dlls and keep them in a seperate sdk. That would be the first step of unlinking the modules. The sdk should only be modifies very conservatively, because it can cause full rebuilds.
Then a seperation in layers / components would be great. The core (like MinWin), the win32 core, Highlevel dlls, networking, audio, tools.
Just my 1st 2 cents Timo
PS: yes, kjk, I know it won't work ;-)