This crazy idea got sparked by a blog post that proposes the idea of a decentralized Twitter-like service, which made its way to me thanks to @aral and @mattgemmel.
My proposition is that this is entirely within the realm of possibility. What I intend to discover is the feasibility and practicality of such a system.
I'm thinking it might be possible to build this and hopefully make it somewhat tamper-proof by building it on a shasum system similar to what Git uses, in particular in conjunction with its signed tags that leverage GPG.
In addition by building it to function with a protocol similar to BitTorrent without trackers, it might be possible to distribute status updates between all connected clients. Essentially some form of naked P2P.
There are some immediate concerns that come to mind with a decentralized P2P approach, such as if there are few clients, each client might have tobe asked to store all recent (assuming we only want to persist status updates for a limited time) status updates. This might not be such a big ask however, as it's reasonable to assume that few clients means fewer status updates. The algorithm should perhaps be tuned during initial testing to find a reasonable distribution factor that will minimize, or hopefully eliminate, loss of status updates to due client connectivity (some form of self-adjusting redundacy factor).
In addition, how is discovery supposed to work? How do we make sure this works behind a firewall, router with NAT and similar?
- Discovery.
- Routing.
- Secure, tamper-proof messaging.
- Firewall and NAT workarounds.
- Redundancy algorithm(s).
- Distributed queries (e.g. search).
- ?
Once all (or at least most) hurdles have been crossed, we need to begin defining and documenting a basic protocol. A formal protocol is necessary for all connected clients to communicate.