E-mail is crap. By far the biggest problem is, of course, spam, but there are countless others. E-mail is one of those technologies that was designed by copying the functionality of a pre-computer system: Actual, physical mail, usually referred to as "snail mail". E-mail works like snail mail, except slightly faster. You write a message, send it off, someone receives it, writes a reply, sends it off and so on. It might be faster than snail mail, but it's not qualitatively better.
Instant messaging has come around to supplant this with equally flawed design. All IM applications I know of start out with a basic concept: "Who's online?" Straight away, to participate in any of these communications networks, the first thing you have to do is advertise to everyone that you're available. Most of them will even happily inform everyone on your contact list when you're away from your computer for longer than 10 minutes. The privacy invasion is horrific. Imagine if whenever you picked it up or put it down, your phone advertised the fact to everyone in your phone book. Most people just don't bother.
Here's my wish list for a possible replacement for both of these useless technologies. Yes, I know Google Wave probably does most of what I ask for, but until the boys at Mountain View deign to give me beta test access I can only fantasise.
1. It has to seamlessly support multiple public identities
By public identity I mean an address through which people can reach me and a small set of optional information that I may choose to publish along with it like a name, a job title, an organisation I belong to or a physical address. All users should be able to have multiple identities - one for close personal friends, one for websites that only need the most basic information, one for work, on for your second job - as many as they want and need for their particular circumstances. When I say "seamlessly" I mean it should be possible to view, search and organise communications from all your identities in one place if you wish to do so; your identities should be completely separate as far as other people are concerned, but you should be able to manage them all from one place.
2. It has to support conversations in a native way
People don't send solitary e-mails, they're almost always part of a thread, or a conversation if you will, that consists of several messages and may involve more than two people. Support for this in e-mail and IM is very patchy and hacked-in; mail software will try and organise e-mails into threads, but most of the time it's just guessing that two e-mails with the same subject are part of a conversation, and it often gets things wrong. Most mail software tends to quote (copy) the entire message when replying, sending the same information out again and again while making it hard to actually get up to speed if you join it later on. And of course, if you want someone to join an active mail thread, the best you can do is copy them on your reply, but that doesn't let them look at the previous messages nor does it notify other people in the conversation, who may forget to include him in their replies.
What I'd like to be able to do is start a conversation with someone, add messages to it without having to copy all previous messages in every new one, and whenever I invite people to the conversation they can just browse through what was said before. I should be able to easily split a conversation at any point, or merge two conversations into one.
3. Users should be able to slip into and out of live chat seamlessly, without advertising their presence
If I want to have a live chat with someone, whether as a new conversation or continuing an existing one, all I have to do is click a button that will send a request to those in the conversation. They may accept, they may be unavailable, they may ignore me, or they may reply with a quick message saying they're busy. You shouldn't have to pre-emptively advertise your availability to all and sundry just because you want to talk to one or two people. Your instant messages and your longer, pre-composed messages should blend in seamlessly in the conversation.
4. It should require encryption and cryptographic signing
All messages and conversations should be cryptographically signed so that you can verify with absolute certainty if two messages are coming from the same source. Getting your public key signed by a well-known, trusted source can also verify that you are who you say you are, but you should also be able to use a self-signed certificate for anonymous work. Making this a basic requirement of the system and making the user interface for it a first-class item for any implementation is important if we're ever going to get end users used to using cryptography for their own security.