Alan McGovern: MonoTorrent 0.50 - The Good, The Bad, and the seriously awesome
| October 6th, 2008You can grab a precompiled binary suitable for Windows, Mac OS and Linux.
You can grab the sourcecode here as a .tar.gz archive.
There are also packages available on the OpenSuse build service, and of course the tag for the release can be gotten from svn.
Now, to the features and updates.
WebSeeding Support
There is provisional support for Http Web Seeding. This means when you're hosting a torrent, you can add standard Http servers as 'seeds'. No extra configuration is needed. This is still an experimental feature, and still has some corner cases where it doesn't work, all bug reports on this are welcome!
IP Address Banning
You can now ban individual IP addresses or IP Address ranges. Block lists from Emule, PeerGuardian and SafePeer are supported out of box by the built in parser, and any custom list can easily by loaded so long as you can parse the list into IPAddress objects. Internally the banlist is stored using the extremely efficient RangeCollection written by Aaron Bockover.
Efficent Torrent Streaming
Thanks to the efforts of Karthik Kailash and David Sanghera, we now have a special downloading mode in MonoTorrent which allows you to efficiently stream audio/video. Psuedo random piece picking is used to ensure you download pieces from a 'high priority' range before anything else. User code can set this 'High priority' range to be the next X bytes of data. When everything in the high priority range is downloaded, standard rarest-first picking is used.
Peer Exchange
uTorrent style Peer Exchange support is supported thanks to the tireless efforts of Olivier Dufour. This extension allows peer information to be passed across a bittorrent connection. In practice this means that if the tracker only gives you 1 peer, you can discover (potentially) hundreds more via peer exchange.
Enhanced compatibilty with broken clients
There are still clients out there which transmit corrupted BEncodedDictionary objects. These guys need to read the spec and ensure that their dictionaries keys are sorted using a binary comparison. In the cases where the order appears to not matter, I've implemented support for ignoring the error. This should reduce the number of clients which are disconnected due to sending corrupt messages - this means higher performance.
Simplified Threading API
The core of MonoTorrent has undergone a complete rewrite. Previously, all the worker threads interacted with the core by taking out locks, then doing their work. This meant that implementing something as trivial as cancelling a pending asynchronous request was actually pretty hard. That method was actually horrendously prone to deadlocking the engine.
Nowadays all the worker threads add a task to the main thread, and the main thread does all the work. "What about the performance" i hear you ask, well, it performs the exact same, but it's so much easier to maintain and add new features to.
It also means the engine should be deadlock free, because there are no locks anymore. Nice.
NUnit Tests
As with all big software projects, regressions are bad. A year ago I had virtually no NUnit tests. Nowadays there are over 130 NUnit tests for the engine. While this doesn't even test 1/2 the code in MonoTorrent, each test adds that little bit more certainty that I don't regress.
There are also a bunch bugfixes here and there, and more big features in the pipeline. As a taster, DHT support is already active and enabled in SVN should you wish to test it out.
One more 2.6.27 prepatch
| October 6th, 2008Dan Walsh: Heading down to DC this week.
| October 6th, 2008
I will be in Washington talking at the Red Hat Government Developers and Users Conference tomorrow. I will be running a SELinux BOF session so if anyone is going to be there and wants to stop by, you are welcome. Other then visiting Red Hat customers, I am also giving a talk on Thursday night at George Mason University on SELinux.  I do not know if this is open to the public. I have done talks at local Linux Users groups in New England, but have not been invited to talk at too many Colleges/Universities. :^(
But I do enjoy doing the talks.Â
Dan
Areca and plan/b offer Java-based backup for Linux
| October 6th, 2008Stallman vs. Clouds
| October 6th, 2008I respect Richard Stallman for the same reason I respect gravity. The man is a force of nature. He is like the iron core of the Earth: fixed, central, essential. So, when I read a story like "Cloud computing is a trap, warns GNU founder Richard Stallman", which ran in the Guardian last week, I take notice. And I'm not alone. A search on Google for stallman "cloud computing" brings up 142,000 results.
It is coming…
| October 6th, 2008There is this scene in "Gandhi", one of my all time favorite movies, where one of the policemen says "He is coming" referring to Gandhi's arrival in Champaran (See video clip here. Its quite impressive). Well, when I think of the upcoming availability of the XO laptop on Amazon starting November 17, I am reminded of that phrase - "He is coming". While the XO isn't quite Gandhi himself, its impact can be quite revolutionary. Powered by Sugar (no Windows XP for the November sale) it essentially democratizes the access to computing, and hence information. We've witnessed what crowdsourcing can do in cases of Wikipedia and Free and Open Source Software.
OpenOffice.org in the City of Katowice, Poland
| October 6th, 2008New Manju project plans to redraw desktop art
| October 6th, 2008Most free software projects produce applications for users. A minority, however, produce specifications or libraries for developers and other contributors. An example of this second type is the recently announced Manju project, whose goal is to make themes easier to create. The project's goal is to write the specifications and scripts for using scalable vector graphics (SVG) files to store widget and other theme-related information that can be used on a variety of toolkits.