BitTorrent has emerged as a de-facto standard for the transfer of large files. However, its broader adoption is pending technical and usability challenges. Downloading or publishing via BitTorrent should be as easy as downloading or publishing via the web. In fact, it could be the same, thanks to a transparent approach.
This project aims to further Transparent BitTorrent support by providing ideas and implementations for both clients and servers. Its focus is primarily on the interconnection of HTTP and BitTorrent worlds, aiming to support existing solutions instead of re-inventing the wheel. I hope that it can eventually lead to scalable solutions, and I invite anyone interested to join and contribute.
Imagine that the 10 MB word document you just saved from a webpage, or the podcast you just got with iTunes were downloaded using BitTorrent. But neither did you choose a .torrent link, nor did a BitTorrent client pop up. And your buddy who posted the document doesn't run a 24/7 BitTorrent seed - he just posted the file on his regular webspace.
We can achieve this scenario by adding BitTorrent support to traditional HTTP clients, and extending HTTP servers to also be BitTorrent servers - automatically offering, tracking and seeding their document repository via BitTorrent. Using a transparent negotiation mechanism, Transparent BitTorrent-able peers can switch a HTTP session to a BitTorrent transfer whenever beneficial.
Fig. 1: Transparent BitTorrent negotiation and transfer
Consider Figure 1: In step 1, a web browser requests an arbitrary document from a web server, signaling Transparent BitTorrent capability by including the application/x-bittorrent document type into its Accept header, i.e. the client is happy to receive a BitTorrent metainfo file for the request. The server recognizes this request, and (based on pre-configured rules) determines that the requested file is suitable for BitTorrent transfer. Accordingly, it responds with a BitTorrent metainfo document.
In step 2, the requested data is retrieved using BitTorrent. The web server thereby acts as both tracker and seed, i.e. it manages the peers and serves as the initial source of the content.
Our Transparent BitTorrent suite makes a regular Apache 2 server conform to Transparent BitTorrent - it is a compact set of scripts that interface with the standard BitTorrent distribution (first sneak available end of this week!). It will serve as a proof of concept and will hopefully be followed by a fully-fledged webserver module.
Native BitTorrent support will become available in popular Opera and Firefox browsers very soon, i.e. these browsers will process .torrent links as regular downloads of the contained content. If we can now successfully lobby the client developers to support the proposed negotiation process, then BitTorrent transfers can be seamlessly integrated into the browsing experience.
Left is niche software as well as software such as iTunes and Internet Explorer that probably won't support BitTorrent for quite a while due to political reasons. We can add BitTorrent support to these applications either by means of plug-ins, or even better, using a machine-wide local proxy that provides Transparent BitTorrent support for all legacy HTTP applications.