I really think people who place such importance on OS’s need to get a little less full of themselves.
An OS provides a certain amount of basic API’s that all applications need, but that’s it.
When I use an image editor, or an office application, or an application that lets me set up circuits and lay out circuit boards, those are NOT operating system functions. They use the OS to load and use OS functions, mostly loading from and saving to disk, and in some cases communicating with a remote web address.
These are functions that we expect every modern operating system to provide; it’s only the minutia that matters. We expect that our paint program, word processor, or whatever application won’t be able to alter the code the operating system itself uses, or access the files of another user on the platform.
The problem lies in the BREADTH of services an OS offers; Microsoft’s strategy has been to offer an ever-increasing breadth of services that applications can rely upon instead of having to furnish those features themselves. Want Lempel-Ziv compression? Just make an OS call instead of having to supply it yourself. Want to call up a browser? Just make an OS call instead of checking for an installed third-party one.
Every OS does all of the basic things (including security) that we might expect. The only difference is in the details (i.e. the minutia, .so files vs. .dll files, and other minutia ad nauseam). So knock off the “my OS is superior crap”. That battle was settled decades ago. The only difference nowadays is what’s third-party vs. what’s built-in.
And if you think needing to use the command-line makes your OS-du-jour superior then you’re a f*cking idiot. It merely means the difference between invoking a separate application vs. an internal OS call via a .dll or .so.
Command-line functionality vs. .dll/.so functionality: one is more flexible and can be invoked by a human, the other is more computationally efficient. Pick your poison. The ideal solution would be to designate a standard “CmdLine” function that every .dll or .so could optionally support that would let them be invoked from the command line. Then you’d get the best of both worlds. But this “my OS is superior/we are smarter because we use the command line” is unintelligent crap. You’re gaining flexibility and losing computational efficiency. You should be pursuing both.