What we need is an OS that doesn't include anything except for the absolute bare bones and is lightening fast.
-Carol Haynes
Speaking of duck and cover... while going head-on
against the entire thread...
My ideal OS is much more than the bare-bones kernel and abstraction layers. I can't say I care about the kernel one way or another, as long as it is rock-stable, except to say that from a user's point of view the Windows way (install driver, reboot) is preferable to the Linux way (to install driver, recompile kernel). Maybe Linux doesn't do it this way anymore; I only have un-fond memories of playing with RedHat a long time ago. But this isn't what's bothering me.
What's bothering me is the humongous proliferation of redundant, incompatible solutions to the same common tasks, repeated over and over. Quick check: how many applications do you have installed that carry their own independent spellchecker?
It's a waste of developers' efforts, since each vendor reinvents the wheel; it's waste of disk and RAM, since each implementation takes up some; it's a waste of my money, since I end up paying for that whenever I buy software; and it's a waste of my time, since each solution is subtly different, with its own shortcuts, features, etc. How many "user glossaries" do you have on your machine?
Examples abound. There's no shortage of good email clients, newsreaders, PIMs, password managers, notetakers, addressbooks... the choice is awesome, and the quality of these apps is steadily growing. The problem is that once you choose a product, you're pretty much stuck with it, or face painful and often lossy conversion process. That's wrong.
It's not just the spellcheckers, of course. Every mature ftp-capable application is going to have some kind of a uswer-defined server directory, with hosts, usernames, passwords and associated options. I have a number of such definitions in TotalCommander. Now why must I re-enter them all in FileZilla, and then again in every html editor with an ftp publishing feature? *And* in my backup application? Give me a nice clean, extensible database of my ftp connections, which applications could read and write (with my permission - there are security implications here).
Now for a counter-example. Windows has a single clipboard. All apps can use it and all apps do. Consistent features, consistent shortcuts, works everywhere in the same way, and it may well be Windows' single best usability feature ever. Developers can still extend the clipboard, hence all the, well, clipboard extenders, or apps that add their own multiple clipboards - but these are optional, and they come on top of the system functionality rather than replace it.
A counter-counter example of how to do things the wrong way: skinning. Instead of the consistent, well-tested UI that the OS provides, you have Winamp, which doesn't work well with window enhancement programs, and doesn't even change the color of the titlebar depending on whether it's active or not. So just by looking at Winamp I cannot tell if it's ready for keyboard input - to be certain, I must click it first. This is a major WTF.
Come to think of it, each application having its own spell-checker and its own addressbook built in is not unlike the skinning scenario, except that they have no choice, since the OS doesn't provide those.
So for my ideal OS, I want a well-defined database backend and a set of standard APIs for all, yes *all* these common tasks. One spellchecker. One database for addresses. One for bookmarks, one for to-dos, one for multimedia metadata, one for my email archive, and so on. No matter what email program I use, it should store the email and the addresses in the same one place, so that I can swap clients easily without affecting the data. And all browsers shouls share the same database of bookmarks. And each applications should be able to easily look up phone numbers in a system-wide database. And each application could spellcheck each and every little textbox by hooking up to the integrated spellchecker.
Now, developers would still have a choice: use the built-in database layer of build your own. But when building their own, they would have to ensure they're providing some truly exceptional, unhead-of functionality to make up for the loss of integration. Most apps would probably use the built-ins, so that developers could concentrate on stability, features and UI instead.
And oh yes, metadata for absolutely everything.
(I've typed it in EmEditor and only now noticed it
doesn't have a spellchecker. Been using it for two years. How much did I pay for it again? Check the help - ah, I need to download a plugin. See what I mean?)