On Exploding PCs and Appliance Relationships
One thing I'm really looking forward to is seeing the PC explode and turn inside out, like the Home Motor. The price of processors drops, while their power increases. So far in computing, the processor has been a pricey central resource, demanding to be shared between programs and peripherals. But soon, it won't be too far fetched to think of a processor as the least precious part. In fact, computers could get so cheap as to be given away, while well-built tools and appliances--more than just software alone--become the valuable thing.
I've already ditched a central desktop computer, and sometimes this makes me feel like I'm living in the future. I used to have a machine that I used for everything-- network services, web browsing, email, IM, file storage, movies, games, et al. However, slowly but surely, all the things this one machine used to do for me are being split off into simpler, dedicated devices. It's like all the internal organs of my old PC are being splattered throughout our apartment.
At some point, my network services migrated into a dedicated Linux box, and now have gotten swallowed up by a Linksys WRT54G wireless router. It doesn't do anything other than perform firewall duties and manage my home network. The Linux box still lives on as a file server, but pretty soon I'll be migrating those responsibilities onto a Linksys NSLU2 Network Storage Link or maybe a Kurobox. Which ever one I choose, that device will focus on managing my digital stuff. In our living room, we've got a slew of dedicated gaming consoles, including a modded XBox that plays music and movies from the file server in the basement.
What's great about this is that each device generally does just one thing, does it well, and does it without much fuss or interference with the workings of the other devices. My internet connection or file server never goes down because a game crashed my computer, and maintenance of these focused devices is much simpler than looking after a single overloaded computer. My primary personal machine at this point is an Apple PowerBook, which I still use for web, email, IM, general geek hackery, and the occasional session with Microsoft Office. It's just a start, but I'm sure this trend will continue as I find more things that can each be specialized out into its own separate appliance.
For instance, imagine an Office appliance: It wouldn't have much file storage--that's what my basement fileserver is for--but it would have more than enough memory and processor to run Office. The whole Office solution (software, support, etc.) would be more valuable than the hardware to run it, so it might be simpler and easier for everyone involved (ie. the customer and Microsoft) to sell a fully configured and self-contained unit. The Office user interface would be served up to my tablet display (maybe with a keyboard & mouse) via something akin to X11. The software would be installed as firmware on flash and would be the only thing running--no danger of DLL hell here.
Imagine something like the MailStation, but imagine it not sucking. You could have a personal email server that just handles SMTP, IMAP, POP3, and spam filtering, with Thunderbird installed, dirt cheap.
Imagine other devices entirely devoted to news aggregation, or broadcatching, or pet-watching web cams. It's starting to sound like a lot of expensive toys, but a pile of these devices would all cost less than the equivalent software running on a modern PC today.
Now, think about interactions between appliances. This isn't entirely fleshed out in my head, but I think attention here can go a long way toward solving some security issues present in PCs today. Each appliance should be single-mindedly focused on its task, but if it needs functionality provided by another appliance, it should be able to negotiate for services. Think of each appliance as having a role, and access to other appliances limited by role.
What might happen if you pick up a nasty macro in a Word doc? Say the macro wants to delete all of your files. Well, you could have a current relationship between the file server and the Office appliance which limits access to only files in your current project. The Office appliance would have no business pawing through yesterday's spreadsheets, your TurboTax records, or your home videos. Maybe not perfect, but exposure could be limited.
Say instead the macro wants to fire off a million spam email messages. Well, let's assume that email isn't a service of the Office appliance. The first response to the macro would be, "Uhh, what's email?" Maybe the Office appliance can't even conceive of a such thing as SMTP or port 25. But then, say the macro author is smart enough to make Office look for a MailStation to ask for email transmission services. At this point, the macro is stymied unless it can find a way to exploit a pre-existing relationship between Office and the MailStation to send a million email messages.
More likely would be someone trying to compromise the MailStation via a maliciously-constructed email message. But, in this case, maybe the single-task simplicity of the device would make it easier to prevent such exploit availability in the first place. Avoid scriptable email transmission in a consumer device, watch out for buffer overruns or use managed code and virtual machines, reduce down to zero any possibility of sending an email without direct user input.
There's a lot of work that would need to be done here to get the right balance between inter-appliance paranoia and end-user convenience, but I think that simpler task-focused devices isolated from each other but linked by task-centered agreements could go a long way toward killing the free-for-all playground environment spyware and virus authors have today. Get all of the eggs out of one shared basket. I expect some of the things I'm thinking could be (and probably are) put in place today on general-purpose computers, but I have a lot of good hunches about benefits imparted by lots of simpler limited-purpose appliances.