TAOS was peculiarly crazy and brilliant. It was written in a sort of macro assembler, essentially a form of assembler with a large number of registers, which was "compiled" to the target platform on demand. It was network transparent so nodes on the network could use devices from other nodes. There's a lot more from an ex-employee here: https://news.ycombinator.com/item?id=9806607
I wish one day that it gets open sourced (but I'd settle for a non-open read-only license) because it's unlike anything else.
It wasn't for x86 only. It ran on almost anything: ARM, SPARC, PowerPC, you name it.
In its more mature form, as Intent/Elate, it is _the_ single most radical OS there's ever been, pretty much. It makes Inferno look conservative & staid, Plan 9 no more than a tweaked Linux distro, and Minix 3 a tweak of NetBSD.
But we are in a universe where GNU/NT is a real thing :)
And to your point: I'm not sure which of kernel or userland is harder. Userland is the part I actually interact with most of the time, so I tend to think of that as the main part of the OS. But it may be fair to say that both halves count.
I remember reading about Taos in Byte and thinking this was brilliant. It later turned into something called Elate, which in turn morphed into a semi-boring JVM for small systems. I wish we had the source code of the original, though.
This was interesting to program. Apart from having to use assembler (which was no big deal in '95), you had to structure your program as lots of tiny objects which communicated through messages.
There was no obvious way of running a program which was not designed for this architecture on the OS, except for making one massive object, which then lost all the other benefits.
I wish one day that it gets open sourced (but I'd settle for a non-open read-only license) because it's unlike anything else.