From my experience (though it was with CE 7) I got the impression that core kernel code is decent, but the rest of stack is haphazard collection of barely working hacks. APIs look like their NT equivalents, but not really, often missing crucial functionality. Documentation is often wrong or outdated, especially in BSP area, where it frequently mixes up how OAL interacts with the kernel with details of the optional PQOAL library. Same thing with driver documentation, where it confuses driver interface with describing MDD libraries. Finer semantics of the interfaces are mostly guesswork. Multiple barely documented touch device stacked on top of each other, with various ways of loading the driver and sending events to GWES. And the build system... that thing is just hideous.
If I remember right, Bill set several teams to writing an os for devices. The one that finished first, shipped. The 'winners' weren't even OS programmers. Thus, the naïve implementations of so many critical OS functions (drivers, timers, interrupt handling, flash)