My esteemed colleague and cofounder Tyler hacked out a 100 line message sharing server. He used Ruby and Sinatra and we chatted on it briefly this morning. But the model follows the way of Facebook and Twitter with one database back end serving as a middle man between people. Even Diaspora's proposed solution involves a server middle layer route if you opt for their suggested hosted solution (i.e. they host "seeds" on a .com domain). They're stand alone "seeds" or servers are no different than many web servers that serve html pages today, with the added promise of intercommunication. I suspect stand alone servers will be more difficult than an average user will be capable or want to set up. I'd like to offer an alternative.
Proposal: OpenGard.in a Network of Personal Gardens or Social Servers
Desired elements of a truly distributed social web network:
- It can live in the browser. As a user I can spin up a local server that lives in my current browser environment and communicate with other nodes with a simple click of a button (my OpenID). Whether I'm on or offline, other users that I give permission to can access my social data with a Push method. I may observe other nodes and they can observe me by subscribing to updates. We can have private encrypted messages, share files freely back and forth, or share public messages all determined at time of sending.
- Standard web servers can also connect and communicate with nodes, and host pages using supported web languages (protocols and standards as opposed to database apis). They can act in the same way as nodes, but provide scale to popular network super nodes (news sites),"blogstars", and celebrities. You don't have to spin up a local node server to browse public node information that you subscribe to, simply hit a known web page which curates that topic.
- Distributed Moderation is a key feature of spam resistant and quality community social networks. If users flag spam or network abusers the abuser's ID can easily be added to public blacklists.
- People need an easy way of identifying themselves and finding others. OpenID can aid universal identification, and Oauth will help connect users to existing services. To find others it should be as simple as typing in a real name or pseudonym at a web directory page or using a personal garden accessing a network directory. Anonymous users can carry a pseudonym and post, but their identities are still subject to distributed moderation. Pseudonyms can be blacklisted, continued creation of pseudonyms should be discouraged (I'm open to ideas here). Nodes aren't forced to ignore users that are blacklisted, they can opt in or out at anytime.
- Open source code, to be extended and customized as needed
- Data storage can exist simultaneously locally and in the cloud on services like Dropbox
Peer 2 Peer networks may provide guidance on infrastructure or usage patterns for dynamic social networks. In these type of networks, nodes dynamically appear and vanish. Users of personal gardens won't be able to hit a static URL like http://mark.com/ to pull my updates unless hosted by standard web servers, which are setup to serve social information in that way. Instead they are free to browse their own personal garden if they subscribe to my updates. My information goes to them (Push), they don't have to come to, or hit my page with a request.
Related Links & References:
- Open Web Protocols & Discussion Groups
- Data Silos or a Social Web Pattern
- Open Garden