You pretty much hit it, exactly. I'm really trying to re-imagine the OS as a smart, object-oriented environment, that provides the user with tons of functionality that is easy to use. (As easy as Java/.NET development, at least.)
I've posted detailed information on other threads, but what I want is to be able to go to the store, buy a brand new laptop, bring it home, install an OS, and immediately be able to do things like:
- Stream video from the internet, in any (legally usable) format, and simultaneously save it to disk and display it on screen.
- Take a snapshot with the webcam every 10 seconds, and compare it to the last snapshot, and save the image if the image has changed beyond some threshold.
- Stream audio from a file on a local network DNLA server, and use the waveform data to render the waveform to the screen, while the song is playing.
These are all things that I could do using free, built-in components in Java or .NET as a developer. But as a user, these are pretty much impossible without either purchasing additional software, or finding and downloading various utilities and learning how to use each one of them.
And, as for the command line format, this is mostly just preference, but I really don't like the MS-DOS or the Unix standard for passing parameters. I think it comes down to my preference for modern IDEs, which provide you with things like Intellisense, Tooltips and Autocomplete. It would be difficult to provide these features using short, cryptic commands and parameter switches.
Code:
wget http://osdev.org
But, they make a lot more sense if you are using longer, more descriptive commands.
Code:
Web.WebPage.Download("http://osdev.org")
Plus, you can use things like classes and namespaces to organize your functions into logical groups. (Instead of dumping thousands of utilities in a /bin folder, for example)
As a matter of fact, I'd be perfectly happy getting rid of "named" programs, altogether. (wget, gcc, ls, Internet Explorer, Outlook, Firefox, Chrome, etc.) That's just more "learning-curve" that the user must go through before they can do what they actually want to do.
My phone does all of that just as well as my PC, but it doesn't make me remember which programs do what. It just says "Mail", "Maps", "Music", "App Store", etc.
Much better, in my opinion...
Edit: I probably should mention that I got this working using the dual-stack method. The autocomplete version isn't done yet, but I can now call methods and pass the results to other methods as parameters. I've been busy implementing all sorts of methods that I use in C# on a daily basis. Things like math functions, stream readers/writers, etc. I may even start working on XML parsing next.