[Debtorrent-devel] Gittorrent

Cameron Dale camrdale at gmail.com
Wed Apr 25 19:47:41 UTC 2007


I was just made aware of this other SoC project:

http://code.google.com/soc/git/appinfo.html?csaid=130BE24CCA0EFEAC

It's to add BitTorrent-like support to downloading large Git
repositories. For a detailed explanation of how it will work, there is
an RFC:

http://gittorrent.utsl.gen.nz/rfc.html

Since I am unfamiliar with Git it's hard to understand some parts.
However, I think they're taking the route of multiple torrents
(references) within a kind of meta-torrent, using fixed-size pieces
within a "reel", but then multiple reels to make up a gittorrent.
They've also chosen to distribute updates to the metainfo through the
protocol, either from the tracker or other peers (some security
issues, requires signing all updates). If you're more familiar with
Git, maybe you can read the RFC and better understand it.

Reading the RFC did give me some ideas on better improving the
Debtorrent protocol. In particular, they are using the Protocol Name
field like so:

    This is a character string which MUST contain the exact name of
the protocol in ASCII and have the same length as given in the Name
Length field. The protocol name is used to identify to the local peer
which version of GTP the remote peer uses. In GTP/0.1 the name is
'GTP/0.1'.

We might want to do something similar, using Debtorrent/0.1 to
identify protocols. I was thinking maybe use the 2 most significant
digits, like "0.1", for the initial testing protocols, which will all
be in clients versioned 0.1.x. Then, when a more stable release is
made, i.e. 1.0, switch to just using 1 digit, i.e. Debtorrent/1, as
the protocol identifier, and all clients that use it will be versioned
1.x.x. Since changing protocols is serious, and will probably result
in clients speaking different protocols not being able to communicate
with each other, these changes will need to be minimized. This doesn't
mean we can't use protocols 1.x though, we just have to make sure that
it is backwards-compatible with 1.0. This might lead to never reaching
protocol version 2 though, as that will require all clients to be
updated to communicate with each other.

Cameron



More information about the Debtorrent-devel mailing list