- Secure operating systems
- Mesh networking
- Distributed content systems / sync gets solved
Fixing these may take 20 years... but I believe they can all be solved.
Secure Operating Systems
There is a big hole in the way we currently approach computer security. The user has no way to limit the actions of a program. They are forced to trust completely that each and every byte of code does no harm. To get around this hole, layers of firewalls, virus scanners, and support personell are thrown on top of the big hole in the side of the Titanic, with similar results.
You'll know you've got a secure OS when you can run ANY program, without fear. You'll be able to throw away your virus scanner... and the technicians will stop blaming the user for clicking on the wrong button.
Until this gets fixed, the insecurity of the ends, and the need to use maintenance staff as a bandaid will be used to justify filtering, censoring, and increasingly intrusive regulation of the internet.
The internet is a very brittle tree, with few main branches, which is only reliable because of the heroic efforts of the staff of the various entities who work around problems. It's a bailing wire and duct tape affair, on a massive scale. It doesn't have to be this way.
It's possible to expand the address space, auto-assign addresses to everyone, and just get on with it... doing away with fixed IP addresses, etc. The woman who invented the protocol that makes all of our switches just work together has said so.
If we change the nature of the internet so that it actually can route around problems by itself, with the need for obscure and hard to configure protocols, it can get an order of magnitude faster, and reach into smaller crevases.
Adding wireless nodes into the mesh would make the final transition to a truely shared resource possible, with everyone chipping in to make things faster, every time they turn on their gear.
Distributed Content Systems / Sync gets solved
I'm a commuter, and have extensive experience with the woes of having multiple computers. You're always being forced to sync things, and resolve conflicts. You never seem to have the right stuff on the machine in front of you.
The promise of always on connectivity seems appealing, but doesn't actually solve the real problem, synchronization. In a single person, multiple machine environment, it's possible to us manual sync processes, with sufficient discipline... but any deviation will result in lost work.
When you scale sync problems up to groups, even a perfect file sync system (everyone sharing the same files on a server) has problems. The next problem is one of granularity of changes.
Google Wave solves this problem, by breaking up any set of changes into discreet chunks which can be broadcast and synchronized for any given number of users, across organizational bounds. There is a lot of code to be written to build upon this solution, but it will be worth it.
I've presented what I think are the 3 tipping points for the future. All of them require major changes to the code we use in order to be implemented, most of them bordering on "boil the ocean" level... but the costs will be worth it, in each case.
Thank you for your time and attention.