PeerBook is a new form of social network.
The system has three main goals:
- To emulate Facebook functionality
- To be constructed in a completely decentralised fashion
- To ensure that the user has sole control over who has access to his or her personal data
The basic idea is this: A user downloads a small (Java) program, runs it, and then has access via their web browser to a local web server acting as a gateway onto the PeerBook network. Once they’ve created a profile in much the same way as they would on Facebook, the profile is encrypted and then stored on the distributed storage network made up of all currently-online PeerBook instances.
All data is replicated to ensure that it is still available even if several copies are deleted, or if the PeerBook instance storing that copy goes offline. If this does happen, the network ‘heals’ itself – the file is copied to a new replica server(s).
A much easier approach would be to have the user store their own data locally on their own machine (I *believe* this is the approach proposed by the Diaspora project, but it is hard to be sure from what they have written). However, this means that the storage device must stay connected to the internet all the time in order for the user’s friends to view the user’s profile or post on their Wall. It might also mean that the user would have to keep the device physically on their person in case they ever wanted to log into the network from somewhere other than their home.
So far the system supports: Wall posting, personal information storage in profiles, friend addition/removal, and private message communication.
I plan to spend the summer of 2010 redesigning some of the system to support other core Facebook functionality – image storage, groups, events, etc. I also want to provide a PeerBook API to third-party developers so that it could eventually be as extensible as Facebook is now.