Jan `06-Present — Volunteer Developer: Debian GNU/Linux


The Debian Project is an association of diverse individuals spread all over the world who have made a common cause to create a free operating system. The operating system is called Debian GNU/Linux, because it is based on Linux, and also consists of over 15,000 software packages. I am responsible for developing 2 of those packages and maintaining 3 of them:

  • Apt-P2P: apt helper for peer-to-peer downloads of Debian packages
  • DebTorrent: BitTorrent proxy for downloading Debian packages
  • TorrentFlux: a web based, feature-rich BitTorrent download manager
  • BitTornado: a bittorrent client with GUI and curses interfaces
  • libphp-adodb: the ADOdB database abstraction library for PHP

I applied and became an official Debian Developer in 2008, which will allows me to upload packages to the archive myself and to vote in elections. This process takes about a year to complete (on average).

Apt-P2P

Apt-P2P is a helper for downloading Debian packages files with APT. It will download any needed files from other Apt-P2P peers in a peer-to-peer manner, and so reduce the strain on the Debian mirrors. It uses a Distributed Hash Table to find peers that have the requested files, but will fall back to HTTP downloads from a mirror if no peers are found.

I developed Apt-P2P as a part of the research I did for my Master's in Computing Science, which was published in a conference paper: "apt-p2p: A Peer-to-Peer Distribution System for Software Package Releases and Updates"

DebTorrent

DebTorrent is a proxy for downloading Debian packages files with APT. It will download any needed packages from other DebTorrent peers in a bittorrent-like manner, and so reduce the strain on the Debian mirrors.

I developed DebTorrent as a part of the Google Summer of Code. For more information on it's motivation and implementation, see the GoogleSoC page.

TorrentFlux

TorrentFlux is a PHP based BitTorrent controller that runs on a web server. It can manage all of your BitTorrent downloads from anywhere through a convenient and easy-to-use web interface.

TorrentFlux enables you to run BitTorrent downloads unattended on a monitor-less or remote server 24 hours a day, while still maintaining complete control from any web browser. Now you can control your downloading on your firewall, or keep up with downloads while on vacation. It uses the BitTornado client to download files, and also requires a web server with PHP.

Some of the many features:

  • Upload Torrents via URL or File Upload
  • Start, Stop, and Delete Torrents with ease
  • Advanced Torrent start options (ports, speeds, etc.)
  • Multi-user interface
  • RSS Feeds, download Torrents files with a click
  • Run several torrents at once
  • View Download Progress of all torrents at a glance
  • View drive space at a glance
  • View Torrent file meta information
  • Built-in User management and Security
  • Private Messaging
  • Themes (selectable per user)
  • Upload History
  • Detailed User Administration
  • Admin Searchable Logs
  • Torrent Search (many popular sites)
  • Language Support
  • Make your own torrents
  • Add torrents to a download Queue
  • NFO / Text viewer

This was my first Debian package, and my introduction to the world of Debian development. I use this software frequently myself, and seeing that it was not available in the Debian software archive, I took it upon myself to package it. I have been maintaining this package since January 2006. Unfortunately the upstream maintainer seems to have stopped developing it, so TorrentFlux's future is unclear.

BitTornado

BitTornado is a next generation bittorrent client based on the original BitTorrent. This client features an enhanced console/curses mode as well as a GUI, lots of new features under the hood, and is generally one of the most advanced clients out there. Get this if you need to limit your bandwidth, or you want more control of your torrents. It does everything the original bittorrent does, plus more...

The original maintainer of this package is Micah Anderson, who I came into contact with when he sponsored my first upload of TorrentFlux. As he was quite busy, he asked for my help in maintaining the BitTornado package, with the intention that I could take over full maintenance of the package once I become an official Debian Developer. I have been maintaining this package since March 2006.

libphp-adodb

ADOdb is a library for PHP, to allow for a universal way to access databases. ADOdb stands for Active Data Objects Data Base. Currently supported databases are MySQL, PostgreSQL, Interbase, Firebird, Informix, Oracle, MS SQL, Foxpro, Access, ADO, Sybase, FrontBase, DB2, SAP DB, SQLite, Netezza, LDAP, ODBTP, and generic ODBC.

Many popular web applications such as ACID, PostNuke, Xaraya, phpWiki, Mambo, PHP GACL, TikiWiki, eGroupWare and phpLens App Server are using ADOdb as their database abstraction layer. Some reasons why ADOdb is popular include:

  • Designed for speed. It is probably the fastest open source database abstraction library available for PHP
  • Provides extensive portability support such as date and type-handling and portable schema creation
  • Support many enterprise features such as database backed sessions (with session expiry notification), SQL code generation, pivot tables, SELECT LIMIT emulation for all databases, performance monitoring
  • Easy to learn, especially if you have Windows programming experience, as it uses many ADO conventions
  • Extensive QA, every release is unit-tested on Access, MySQL, PostgreSQL, MS SQL, and Oracle 9
  • Mature, continuously developed since August 2000, and has a large community of users

I first noticed this package in March 2006, as my TorrentFlux package was being added to the archive. TorrentFlux uses this library for it's database access. I immediately noticed that the package was out of date with the upstream developer, and had several open security vulnerabilities. I created fixes for these vulnerabilities, including porting changes in recent versions back to old versions that were available in older releases of Debian. The package was finally orphaned in November 2006, at which time I took over maintenance of it.