Alan McGovern has created a fantastic BitTorrent client library in C#. The effort was part of last year's Google Summer of Code. Alan continued to tune it and implement many of the protocol extensions after the SoC was over so it is now a very complete.
We have a very early Gnome UI that was created last year, but it has not been updated very much, and it could really use some work to get it updated.
The library these days is quite mature and the command line client works well, but we really ought to have a Gnome UI.
There is also a case to be made for a simple and clean UI for Bittorrents.
The library, as well as the simplistic UI can be downloaded from here (tarball is here).
A Winforms UI should also be possible, and am sure our friends in the Windows world would appreciate it.
Alan posted some updates on the current state of the library:
uPnP support has been enabled in MonoTorrent using Mono.Nat. So all you people with uPnP routers no longer have to worry about manually creating the port mapping in your router. It'll all be done automagically (all going well ;) )....
Disk writes are now fully asynchronous, but now will automatically throttle download speed if you are downloading faster than your harddisk can write. So you won't ever get 100s of megs of ram being used and 100% cpu usage when exceeding your write speed.
Upload and download speed calculations have been improved drastically (ish) for torrents. What i did before was calculate each individual peers upload and download speed, then sum up that for all connected peers to see a torrents overall download rate.
Posted on 17 Feb 2007