If there is one thing that is testimony to the power of microkernels then it is that one. And that 2011 one was avoidable, imo.
The reduction in scope is really gold, it makes it so much easier just to have a small defined interface per program. It is a bit like Erlang/OTP but with C as the core language, the IPC is so lightweight that it becomes the driver behind all library level isolation. So what in a macrokernel would be a massive monolith with all manner of stuff in the same execution ring turns into a miniscule kernel that just does IPC and scheduling and everything else is a user process, including all of the luxuries that you normally associate with user processes: dumps, debuggers, consoles.
The reduction in scope is really gold, it makes it so much easier just to have a small defined interface per program. It is a bit like Erlang/OTP but with C as the core language, the IPC is so lightweight that it becomes the driver behind all library level isolation. So what in a macrokernel would be a massive monolith with all manner of stuff in the same execution ring turns into a miniscule kernel that just does IPC and scheduling and everything else is a user process, including all of the luxuries that you normally associate with user processes: dumps, debuggers, consoles.