Having developed for OSX in that era, IBM ViaVoice, it wasn’t a completely functional OS. The audio input was broken every alternate build, for instance. I’d come from a NeXT background and was surprised how slow OSX (OpenStep in essence) was on PPC.
I'm curious what you make of the standard narrative that OS X was a fuse of NeXTStep with UNIX and MacOS Classic. As far as I can tell that's not really accurate and OS X was basically just NeXTStep reskinned to look like MacOS, with an emulator for Classic apps bolted onto the side, and some C libraries to ease the porting process from the old Mac APIs to the new NeXTStep APIs without needing to transition to Object…
It wasn’t done very well and was clunky. The later re-write to Obj-C was an improvement.
As for the rest of OSX, most of the inbuilt apps were just direct from NeXT. Even today, Mail and TextEdit are still similar.
ProjectBuilder was much the same as on NeXT as was InterfaceBuilder. Their merging into the blob that is now XCode was a mistake IMO.
With ViaVoice, the training app was a PowerPlant port from the older Classic version. It wasn’t hard to munge PP to get it to work.
I did the UI for the VoiceCenter (a HAL-like UI intentionally) and the Preferences given my AppKit skills. One advantage we made use of is we used a UNIX voice engine that ran as a process on its own.
The OS really was just a NeXT with skinning for Apple and a few apps using PowerPlant. I think the old Sun based network management was still present (NIS??).
Obviously, a lack of Display Postscript made a difference as Apple had to develop their own renderer using the same graphics primitives. That may be why it was so slow back then.