Computers still suck. I admit that the iMac is a really amazing computer and OS X is a really amazing operating system. But they still suck compared to what they could be. This is what I want.
When I bring a new computer home I should be able to plug it into the wall, turn it on and immediately have access to the internet. I shouldn't have to plug an ethernet cable into a DSL modem. The computer should be able to get its internet access through the powercord. This is possible right now, but you need a separate box. Why don't they build that into the computer?
I shouldn't have to worry about plugging my camera into the computer with a proprietary cable. The computer should immediately recognize that my camera is in the same room and connect to it. Then to authorize a permanent link between the camera and computer I should be able to do something simple like take a photo of the computer and have both devices negotiate a link. This should be possible now by embedded bluetooth into the camera for the connectively and having the computer display a key which the camera could interpret. From then on the computer should be able to recognize that my camera has new photos and immediately start downloading them. If I take the camera out of the room before the download is complete the computer should stop and resume when it's able to again.
I shouldn't have to worry about backing up the hard drive, because there wouldn't be a mechanical hard drive. Instead there would be a modest amount of flash memory which would be much less likely to fail. I wouldn't need to worry about filling it up because it would really only be a local cache. My data would mostly live in several datacenters. It would be encrypted and replicated with a secret sharing scheme.
My upload speed isn't fast so when I had large amount of new data, like photos from my camera, my computer would cache them locally and slowly upload them to the server. I wouldn't worry about having to download those huge photos over the internet every time I wanted to see them because my screen can't even display all the info. My photo viewing software would download only the parts of the photo that I'm looking at and predict what I'm going to look at next (whether it's zooming in or looking at the next photo) and start downloading it in the background.
I shouldn't need to worry about patching my operating system because that will happen continuously for me in the background. Patches won't be large things that happen every few months, they will happen multiple times a day and as they are applied a battery of tests is run locally against the changes. Even if the operating system crashes it's not that big of a deal because it's not really an operating system, it's more like an application that's running on top of a rock solid basic operating system that doesn't fail because it doesn't change and really doesn't even do too much.
My applications would all really just be part of what I would call the operating system. I wouldn't need to really install any new software. I would just be able to click on the new software on its homepage and it would immediately start running. I would be able to drag it to my launch bar so that it's easy to open but it would look more like a bookmark than a software installation. If it was commercial software I could only use a subset of it for a long period of time or maybe the whole set of features for short bits of time. If I liked it I could pay for a subscription by associating my credit card icon with it by just dragging one of the icons onto the other and confirming that that's what I really wanted to do.
I wouldn't need to create a user account, type in a password or credit card number because everyone uses common credentials. I don't worry about the company accidentally revealing my credit card number to another people because they'll never see it. Instead the purchase involves a three way handshake between me, the store, and the credit card company.
I don't worry about upgrading my computer or buying an obsolete computer because computers are already fast enough, and if I really need to use some serious computing power for a demanding application it doesn't matter, because the program will use the power that it needs from the grid.
I don't have to worry about my computer hardware failing because there are no moving parts, it's all solid state. And even if capacitors blew or something else failed it wouldn't be very painful to change computers because I would just open up a door on the back and remove the flash memory card that would be the heard of the system and plug it into a new computer. Everything would look exactly like it did before because the only thing personal about my computer was this memory card.
I actually don't think that this is as far off as you might think. The crappy ass little G4 in my Mac Mini is really all of the computing power that I need, even to have cool eye candy like OS X provides. Imagine a fully contained computer like the iMac. Add an ethernet over power adapter to the power supply. Replace the powerful CPU with something cheaper and quieter that will generate less heat. Reduce the size of the fan or remove it completely if possible. Remove the hard drive. Add something like 4 gigs of RAM by default. Add a decent sized battery to keep the RAM on when the power goes out or you move your computer. Add a little door on the side or back where a place for a compact flash card. Add 2 MB ROM with a minimal installation of linux.
When you turn on your computer linux boots itself off of the ROM. It then mounts the flash card and gets the user's perferences, like where to get the internet from, what provider to get the operating system from. If it doesn't have the latest version of the guest operating system in memory or flash it automatically downloads it and starts it.
I wouldn't worry about being locked into one OS provider because the base linux operating system gets its guest operating system using open protocols. If I didn't like my provider I could subscribe to another one and they would use a common set of protocols to transfer my data from one to another. If I had a geeky member of my family he might even have downloaded an open source implementation of the software and run it on his home server for the entire family.
Companies would compete by providing better software and service, not by locking in the customers.