Dependency hell has very little to do with kernel design - it&#x27;s entirely a user mode problem.<p>Neither Linux or Windows NT in the modern iterations are true monolithic kernels - e.g. on Linux FUSE allows filesystems in user space, loadable and unloadable kernel modules, Windows has a User mode drivers framework which is increasingly used post Vista.<p>Neither QNX or Minix are as feature full as Linux or Windows NT - almost all development on Linux and Windows is in driver development, not core kernel work (e.g. scheduler, IO system, memory manager).<p>Windows NT remains a more modern kernel (in terms of internal consistent object model, basic kernel primitives) than either BSD or Linux, but whether it&#x27;s absolutely better is a harder argument.<p>In general the argument regarding micro&#x2F;monolithic kernels is old hat in practice we can make extra-ordinarily reliable monolithic kernels, while we can also avoid a lot of the pain associated with microkernels - e.g. minimising context switch time. The reliability, security, flexibility argument is largely made redundant by man-power dropped into modern kernels - better use Linux because although it&#x27;s theoretically inferior it has 1000s of days of development thrown at it.<p>Kernel development also appears to be transitioning to using safety in compilers to improve reliability, but that&#x27;s been a research topic for decades - the answer to &#x27;can we build a sufficiently smart compiler&#x27; has been &#x27;maybe&#x27; for a long time - though LLVM and Rust&#x27;s compiler show a way forwards.