Monday, October 12, 2009

My requirements for an "ideal" file sharing network

The following is a repost that I made on Reddit's programming sub-reddit. The original discussion is here.

-----------

I feel like there are a bunch of ideas floating around right now and if they were combined in the right way, then the game is over.

Any successful sustainable file sharing needs to offer the following features:

  • High performance (this is why Kazaa, Limewire, Bittorrent, and Rapidshare all did so well in their respective heyday periods, slow will always fail like Freenet and Tor's current state)
  • Anonymity between the uploaders and the downloaders to prevent MAFIAA B.S.
  • Useful search tools (any number of solutions for this, but it is tricky on a DHT system)
  • Poisoning resistance (basically, better hashing than was done in Kazaa, modern stuff generally has this solved)
  • Incentives to share (the BT trackers get this right)
  • All traffic encrypted to prevent ISPs and proxies from observing traffic (Tor/Freenet style to keep everyone that forwards traffic blind)
  • Prefer to keep everything internal to the network and have no concept of exit nodes (like Tor's hidden services or something similar)
  • Open to anyone that wants to join without invites (this eliminates friend-to-friend/darknets)
  • Flexible routing and robust storage (DHTs are great for this, also makes F2F useless IMHO)
  • Completely open source and decentralized so no companies can be sued to take the network down (BT already figured this out). More on this here: http://www.eff.org/files/p2p_copyright_wp_v5_0.pdf

There may be more requirements, but I feel like if all of these were combined, then the game is over and the nerds win. In particular, with anonymous communication and incentives to upload, downloaders can just leave all of their files available permanently, vastly increasing the performance, which further adds to the utility in a positive feedback loop.

Obviously, some of these requirements seem to conflict at first glance. But given how fast P2P systems have come in a decade, which includes the entire history from Napster to DHTs to everything else, I think they will be overcome in the relatively near future. This is a classic example of how arms races promote technology. I feel that without extremely draconian laws that outlaw cryptography and network neutrality, there is absolutely no way for big content to win this in the long run. Digital information is, for all practice purposes, a public good (it is non-rival and non-exclusive thanks to the ability to make infinite copies for almost free). The legal system is set up assuming that IP is a private good and will not change unless it is forced by outside pressure. Eventually, they will either accept file sharing or not. But if the technology makes enforcement impossible, it really doesn't matter.

One protocol that looks promising to me is BitBlinder. I have not been able to test it yet though (haven't got an invite), but the incentive structure they present might be enough to get a fast onion routing network working. Although onion routing adds computation overhead and 3x or more latency, in theory it should be able to sustain high throughput (which is all we care about for high performance file sharing) if there are enough routers in the network.

Please reply with comments on the issues I mentioned, any additional requirements you can think of, any systems you know of that meet these requirements, and anything else related.

Note: I am not here to discuss the morality of file sharing. I am not even a file sharer myself (haven't even used BT in a couple years). I just want to see innovation and see some good old fashioned creative destruction. In Reddit's meme language: I just want to see the world burn.