[Mono-devel-list] Idea: Bittorrent and Mono.

Mike McKay mike at vdomck.org
Wed Jul 28 05:49:23 EDT 2004

Miguel de Icaza wrote:
> What I see as advantageous in having a C# implementation of Bittorrent
> (the client, and an embeddable server) is that it opens the door for
> new ideas and innovation.

The Hunting for the Snark Project (http://klomp.org/snark/) provides a 
simple Open Source BitTorrent client written in Java. I have been using 
it to write a Java Web Start client to allow people to easily deploy 
torrents to people who haven't installed BitTorrent yet. After working 
in C#, though, Java has felt like a great leap backwards.

I have been thinking that it would be a good test of the Java -> .Net 
compile magic that I witnessed at a recent LUG meeting.

Of course a natively written library that can do BitTorrent would be 
better and not too difficult. Unfortunately BitTorrent uses a funky 
Binary Encoding scheme for all of its data, which I think is not much 
more than a binary dump of a Python hash. The BitTorrent site says look 
at the Python code if you want to see how it works - in other words - 
hardly a well described spec. However, clients like Azureus are now 
offering an export/import to Xml mode, and my hope is that BitTorrent 
will move to a more friendly Xml format that will make writing clients 

My point here is that a Binary Encoder/Binary Decoder is probably the 
first step towards getting a bittorrent library going, although 
changes/improvements could be considered.

> In fact, we should effectively just use Bittorrent for bulk transfers
> everywhere.  

Here is my vision:

- The BitTorrent approach will be ubiquitous. Getting it in Mono might 
make it happen sooner, and can only increase Mono's usage and acceptance.

- Web servers should be able to offer any file type as a torrent. As 
soon as the web server notices multiple downloaders for a file, then the 
web server creates a torrent for it and becomes a seeder for that file. 
Future requesters for that file then become peers and share the 
bandwidth required to make the transfers happen. This would all be taken 
care of by the web server and would happen with html files and well as 
500 MB movie. Goodbye slashdot effect.

- Web browsers should be able to download torrents seamlessly. A torrent 
downloaded file will be treated like any other file - either displayed 
as a web page in the browser or handled by an appropriate external program.

Obviously some things need to be built for this to happen, but it would 
be great if Mono could be leading the way.


More information about the Mono-devel-list mailing list