The BitTorrent protocol works with trackers, that track the clients or peers that share a given file. This is one specific design of a peer-to-peer protocol, very appropriate for official distribution: for instance, Debian runs a tracker for distributing the installation images.
The problem
There exists many BitTorrent clients, but, for what I have seen, few BitTorrent tracker. Within Debian, I think the only trackers available are the original BitTorrent's one, and its fork BitTornado. Both suffer from serious drawbacks:
- they have been unmaintained (upstream) for years;
- they provide both a tracker and a client in the same package, whereas a BitTorrent client and a tracker do not have much in common, and most people are only interested in the client, so the package maintainer had to completely disable the tracker daemon, which complicates the task to get a working tracker;
- the tracker's logging simply sucks: they had the brilliant idea to bufferize their log, with what seems no buffer control at all, so you get half-written lines, that get complete half an hour later, and so on.
Proposed solution
Now that I have criticized a lot, let us be more constructive. All these issues could be fixed by modifying the code and the package (well, by adopting it, for the first one). I think it is not worth doing so, exactly because they implement both a client and a tracker: there are many good BitTorrent clients so there is no real need for them as clients, and because a tracker's job is quite different, and easier than a client's, it would be useless to maintain a client with the tracker.
So, I am considering coding a BitTorrent tracker. Even though the tracker protocol is based on HTTP, it is completely stateful so it would be a standalone daemon rather than a CGI-style program. I would code it in Python because this is the language I currently prefer, and I may call it tbtt (the BitTorrent tracker, or Tanguy's BitTorrent tracker, or transport blindé tout terrain (all terrain armoured transport)).
If you have any information or suggestion, please comment! Perhaps I missed some existing tracker that would do the job instead of coding a new one?
20 comments
wednesday 01 june 2011 à 23:51 Bob said : #1
wednesday 01 june 2011 à 23:52 stbuehler said : #2
wednesday 01 june 2011 à 23:52 Jochen said : #3
wednesday 01 june 2011 à 23:58 Tanguy said : #4
wednesday 01 june 2011 à 23:59 Tanguy said : #5
thursday 02 june 2011 à 00:17 Anonymous said : #6
thursday 02 june 2011 à 01:15 Bob said : #7
thursday 02 june 2011 à 03:42 Anonymous said : #8
thursday 02 june 2011 à 14:49 Cùran said : #9
thursday 02 june 2011 à 16:21 nion said : #10
sunday 05 june 2011 à 19:06 Tanguy said : #11
wednesday 08 june 2011 à 10:19 Tanguy said : #12
friday 10 june 2011 à 15:33 Jeff Schroeder said : #13
monday 13 june 2011 à 11:39 Tanguy said : #14
thursday 13 september 2012 à 16:12 erdgeist said : #15
thursday 13 september 2012 à 17:14 Tanguy said : #16
tuesday 18 december 2012 à 05:18 Ben said : #17
tuesday 18 december 2012 à 09:55 Tanguy said : #18
sunday 06 january 2013 à 18:44 gnuzer said : #19
sunday 06 january 2013 à 21:45 Tanguy said : #20