Revisiting TinyP2P

June 29, 2010 | Computer Science, Web Development, Web Programming | By: Mark VandeWettering

As I was driving in this morning, I entertained a train of thought that led me back to thinking about peer to peer networks. I recalled that I had seen a posting by Ed Felton some years ago about implementing a peer-to-peer networking scheme in a very few lines of Python. A few minutes of searching once I reached my desk reminded me that the name of this was TinyPTP, and that it was 15 lines of dense Python. A search of Ed’s Freedom To Tinker Website revealed nothing but dead links, but a few minutes with the Internet Wayback Machine resurrected it for our consumption:

TinyP2P

I recall that I tried to run this before, and had some difficulty, but haven’t tried again. Still, the basic idea is pretty interesting: you create a network of XMLRPC servers, whose basic functionality is to ensure that all network nodes have copies of all files. It uses the SimpleXMLRPCServer classes and some overly terse idioms to accomplish its task.

Here’s the thinking that leads me to here: I’ve been listening to a lot of stuff about the scalability of Facebook lately. Ironically, the scalability doesn’t contribute to user experience directly: no user uses very much of any of the Facebook resources. Facebook’s 60,000+ servers serve something like 200M+ users every day, so obviously each user is getting a very tiny fraction of any single server machine, a fraction so small that it could be easily subsumed by even the most tiny computing appliance. It is only the centralization which causes the need for scalability.

And, of course, a distributed architecture has the possibility of fixing a few of Facebook’s other ills, such as allowing more direct control over privacy.

So, here’s the idea: use ideas similar to the TinyPTP client to implement a distributed social network like Facebook. Implement it in a simple language like Python, and in a straightforward way (don’t be overly terse like TinyPTP). Pay attention to security, but also make it simple enough so that people can adopt it by downloading a single Python file and running it in a directory of their choosing on their machine at home.

It’s just a thought experiment at the moment. We’ll see if it gains traction in my head.

Share Button
Be Sociable, Share!

Comments

Comment from Ken Erickson
Time 6/30/2010 at 10:47 am

Have you heard of Diaspora? Its a project that is implementing something similar to what you describe. http://www.joindiaspora.com

Comment from Mark VandeWettering
Time 6/30/2010 at 1:45 pm

I have heard of Diaspora. I find it fascinating that they were able to raise so much money without really demonstrating even a prototype of what they wanted to build, or even to argue that they are capable of delivering on any of the features that they promise. For all I know, they really are the whiz-kids that they seem to think they are, but until we start seeing code instead of T-shirts, color me skeptical.

Write a comment






eight × = 64