The underlying OS was not amazing. There were some good parts; the relocatable module system was very elegant, if rather alien by modern standards; the ability to resize nearly all memory areas on the fly (by dragging bars in the GUI!) was great; proper pluggable filesystem modules in the 1980s were a revelation; the built-in BASIC was super fast and reasonably comfortable to program in, even though it didn't have structured types (some of the built-in ROM software was written in Basic!)...
But the bad parts are bad. The underlying technology is really primitive, being a non-preemptive OS with no memory protection that's worth anything, and then it's suffered from many years of ad-hoc organic growth... e.g. a lot of the core APIs pass flags in the top 8 bits of addresses, because back then the ARM had a 24 bit address bus. Running on a modern machine with more than 16MB of RAM? Good luck with that. APIs are duplicated everywhere with slight changes. There are lots of undeclared dependencies between modules (including recursively, which isn't really supported). Platform independence isn't really a thing, except when it was crudely bolted on for some platforms.
Plus there are some... questionable... design decisions. My favourite is the big chunk of myserious code in the main system allocator which gropes up the call stack every time you try to allocate memory. Why? It's looking for stack frames belonging to the system allocator, so that it can tell whether it's being called reentrantly. Why is it doing this? So it can detect whether it's being called from an interrupt, at which point it goes through an alternative call path and return memory from a different pool!
If anyone's interested, a few years back I wrote a proof-of-concept RISC OS kernel reimplementation called R2: http://cowlark.com/r2/index.html
Unlike the real thing, it runs everything in user mode except for a tiny stub to handle SWIs. (There's a built in ARM emulator.) It's complete enough to run Basic. While reverse engineering the operating system I found out way, way too much about how RISC OS worked inside. shudder