Ok programmers, here's one for you.
I'm writing an open source IM client/protocol as a learning exercise and to scratch my itch about some problems with current protocols.
However, I'm poor. I do run a server but off the back of my own low-bandwidth residential connection (which I would rather -not- saturate by running an IM server on it).
I was thinking about the problem and looked into various alternatives (this was before I considered writing my own client/protocol) but there's nothing which doesn't require -any- server hardware.
The reason for this is fairly obvious, in order to keep contact lists persistent and synchronous, the simplest solution is to store them remotely and have the user download their contact list each time they log in.
One solution I did consider was storing the contact list information on USB flash drives but that is far from ideal (not least because I don't have one myself). Another option would be to implement a peer discovery network similar to bonjour, but that would not provide a contact list of your friends, just a contact list of everyone else who's online. More feasible than the USB idea, but the function isn't ideal in this case.
Does anybody have any other ideas for a serverless IM protocol?