BitTorrent is a rather different concept and implementation of a file sharing software that was developed by Bram Cohen. It is written completely in Python, and also has a portable GUI in Python using wxWindows. It is different from eDonkey in such a way that it is easier to maintain as a server, much more portable, bandwidth optimized, and allows for sharers to concentrate on the distribution of single files.

Serving high demand large files to many users using conventional httpd servers is very bandwidth consuming, because your server will need to be able to send file-size*user-count amount of bytes in a rather short time. BitTorrent solves this by enveloping around the normal web file download procedure, allowing the concurrent downloaders of a single file to collaborate on the specific download and send parts of the file to each other in a bandwidth optimized way, lowering the load of the server back to the file-size scale. It does this by temporarily creating a large network of all the clients downloading the same file and swarming the file between all clients in a peer to peer style network, using the TCP/IP protocol.

More technically, the program works this way: One who would like to send a large file to a big amount of users, fires a BitTorrent tracker server, and in the same time generates a BitTorrent metainfo file. The metainfo file is small, around a few KB. The metainfo file basically contains the URL of the tracker, and SHA-1 hashes of all the pieces the file is composed from. One source client, who has a complete file, connects to the tracker. Later, clients download the metainfo file and fire their BitTorrent clients on that metainfo file. Soon, the first client starts sending parts to the other clients, and the other clients start distributing these parts between each other. The job of the tracker is to keep track of all the clients that are available of the file, telling clients about each other, and gather data such as which of these clients have uploaded and how much they have downloaded. After a while, assuming all the parts were sent by the first client, it can disconnect and let the swarm of new clients continue sharing the file with others.

From a user perspective, using BitTorrent is just like downloading a regular file off the web, besides the upload. If the user completes the download and keeps his/her client open, the client will continue uploading the file. The faster and the longer you upload to others, the faster your own download will go.

Comparing eDonkey to BitTorrent, I noticed that though eDonkey averages around 10KB/sec even for new and popular files, I can easily and quickly get up to 60KB/sec and more using BitTorrent for the same popular files. The #bittorrent channel in the Undernet IRC network is used for the distribution of metainfo files. It supplies huge amounts of TV episodes, and Anime.