Today I have released the next version of DebTorrent. It's been over a month since the last release, which means there are lots of new features in this one.

This is also the first release that I consider actually useable, as it now listens for HTTP requests from APT for packages to download, and feeds the downloaded packages back to APT. It also includes a backup HTTP downloader that will use a Debian mirror to download packages from, only when no peers can be found that have them. This means your download always works, even if you're an early adopter (which I hope you are) and there aren't that many peers available. Finally, the larger packages have now been split into multiple pieces, which makes downloading them much more efficient.

Here's the changelog:

  • Add proxying capability to listen for HTTP requests from APT
  • Add caching for all files downloaded
  • Add automatic starting of torrents when Packages files are downloaded
  • Modify startup to initialize all torrent downloads to download nothing
  • Add automatic enabling of files to download based on requests from APT
  • Add a backup HTTP download from a mirror when no peers can be found for a package
  • Modify torrent creation to break large packages into multiple pieces based on the information from http://merkel.debian.org/~ajt/extrapieces/ (thanks to aj for most of this)
  • Add download status information available from http://localhost:9988/
  • Add lots more documentation

I've already started work on the next release, which will include almost no new features, but will be much easier (I hope) to use. It will also be distributed in a .deb binary format for the first time, and (again I hope) be available in the Debian archive. Here are the plans I've come up with for the steps to complete for the next release:

  1. Make a debtorrent daemon script based on btlaunchmany
  2. Make a config file with lots of explanations
  3. Load configuration info from /etc
  4. Save downloads and state to /var/cache
  5. Log all messages to /var/log
  6. Clean up the debug logging, possibly add debug levels
  7. Use bittornado packaging files (debian/)
  8. Add init script

I've never created/packaged a daemon before, so hopefully I haven't made any blunders in those plans.