Simple is harder to achieve than complicated. Linux vision is a 1970's main frame. My vision is a modern commodore 64. I am more impressed by a good 20,000 line operating system than a good 50,000,000 line operating system. The C64 was 20K of 1-3 byte instructions. My operating system is 130,000 lines. There is no need for another Linux. I make sure to be distinct. Mine is just for one architecture. When I write code, I want minimal abstraction. When looking at code, the number of things you have to go look-up is minimized with my style. I can't stand when people make stupid-ass macros and shit. Keep minimal abstraction.
Do you really want to clusterfuck things so you can play two video games at once?
I don't do SMP. Only I allow real-time multicore with simple master-slave. Nobody else can do a multicored flightsimulator. If you break tasks in tiny pieces, it's too inefficient. Do a simple test of how many adds you must do to break even with multicore. I have lower overhead than anybody else.
I have code that calls back synchronously if a value is in memory and asynchronously if it has to make a network call to get it. It's simple, and I'm not persuaded by this post (or the one it recommends) to make it more complicated. In this particular use case it seems enough to know that the callback may occur asynchronously, so you can't assume that anything will still be in scope.