I’ve been very impressed with “BitTorrent”: lately. I used it a couple of times before, but never got good speeds. Lately I’ve been using “Shareaza”: which is a nice P2P client also supporting BitTorrent. What’s nice about BT(BitTorrent) is that it takes P2P file sharing out of the underground scene and offers many opportunities for legal downloads. Many linux distributions are now also offered through BT to take load off of FTP servers.

*What BitTorrent is*
In case you never used BitTorrent, this is how it works: First you install a client on your computer, such as “the original Python”: one or “Shareaza”: Then you visit websites that offer BT downloads. There are sites that offer illegal content and sites that offer legal downloads. The difference is that you won’t download the actual file from these websites, but a .torrent file. This file contains some data like the file name, the location of the tracker and checksums for the different parts of the file. When you downloaded this file (which usually is only a couple of kilobytes, depending on the size of the file you want to download) you open it with a BT client.

Your BitTorrent client will then connect to the tracker asking who’s currently offering (parts of) that file. Your client will then contact a couple of those nodes in the network and start downloading parts. At the same time other nodes will contact you and download parts from you that you have already downloaded from others. This works OK as long as there are nodes in the network that have a full copy of the file. These nodes are called seeds. Lack of seeds is the most common problem with BitTorrent, if there’s no seed, and there’s no distributed full copy of the file, you’ll end up with only a part of your file. Therefore BitTorrent encourages to keep your client running after you fully downloaded the file. Whether people actually do keep the BT client running largely depends on how the client works. The original BT client looks just like a download screen of a browser. I always close those screens when they’re finished downloading. And that’s not so weird, the screen is of no use to you anymore. You can’t do anything with it but close it.

I do leave my Shareaza client running after downloading a BT file, though. That’s because it has use. It’s a multi-protocol client and I can use it to actually find files on all kinds of networks. It does more than just downloading. That’s why I always have it running on the background.

*Improving it*
When I think about the ideal P2P sharing software it has some important properties: First of all, it has to have good downloading speeds, like BT has. Second, it has to have a simple way to find files. And that’s what BT doesn’t have. There are a couple of sites that have quite a lot of .torrent files, but the amount is not nearly as big as on other P2P networks. And it’s pretty hard to find sites with good, reliable downloads. Other than that I have some ideals that I think no P2P network has right now.

That’s why I propose something that for now I’ll just call TorrentNet. A P2P network that uses BitTorrent for downloading files and the “traditional” distribution model for distributing the .torrent files. I’d imagine the GUI to look like Napster/eMule/Shareaza. When you search the network it will search for .torrent files people have in their library. When the results are returned the trackers can be pinged to see how many people are currently downloading that file. When you choose to download the file, it would just function as a BT client. This combines the most important features of P2P networks: good download speeds and being able to find a lot of files.

The problem P2P networks usually have is that they need loads of users to become useful. If nobody runs the client and uploads files, nobody is going to use it. It’s the chicken and egg problem. Not so with TorrentNet. People already use BitTorrent and so there are loads and loads of files available for download already (and many people downloading them). The problem is to get the .torrent files in the network, but that’s much less of a problem. What you could do is write a script that rips huge amounts of .torrent files from different websites and adds them to your .torrent library. These files aren’t big, so that won’t be a problem. Just one person has to import them once into the network. Another way to get .torrent files in your library is also letting people use TorrentNet as a normal BT client, i.e. by letting them just download .torrent files from websites and let TorrentNet act as the BT client. When such a .torrent file is downloaded from the website, it will, of course, be added to the TorrentNet library.

OK, let’s assume this would work out and you’d be able to find lots of torrents on TorrentNet. What more cool things could you do with it? I have a couple ideas that I haven’t worked out fully yet. The simplest one is subscriptions. Let’s say you have a broadband internet connection and are a big Linux supporter. You’d want to help spread Linux, right? Fast downloads are important for that. So what you would be able to do is subscribe to Linux distributions. This means that as soon as somebody offers a Linux .torrent file, you would automatically start downloading it. The more people offering/having the file, the faster the files can be distributed. And with this automatic downloading you would not only have the latest Linux distributions delivered at your hard drive automatically, you also help out spreading the Linux joy. The same would go with, let’s say, Britney Spears albums. You love Britney Spears, if she has a new album out you’d want it as soon as possible. With subscriptions they would be automatically downloaded to your hard drive and you’d be helping out other Britney fans getting their copy aswell. How cool is that? That depends on who you are. Britney probably wouldn’t be doing a happy dance, but you can’t please everybody as a Britney fan.

I see you wondering already. “Wouldn’t you end up with a lot of the same files? I mean, usually there are many .torrent files for the same content.” And that’s true. It’s something that I’m still thinking about. I was thinking about something in the area of meta data and relationships between files. Users that had downloaded both files could create relationships between files. I’m thinking about things like
* is the same as;
* is same, but better quality than;
* soundtrack of;
* etc.

*And who’s going to do this?*
So, the quesion is, who’s going to code this software? I don’t know. I’m not going to, at least for now. I’ve tried to start working on it a couple of times, but always quickly quit because, well, I don’t know. Just didn’t feel like it. It’s production programming. I don’t like that. So, if there’s somebody out there who wants to start this up I’ll support it as much as I can. Probably not by doing programming, but I’m always willing to help figure out how things would be done. If you ever wanted to write your own P2P software. This is a very simple approach. You wouldn’t have to do much complicated file downloading logic dealing with multiple sources etc. BT handles the downloading for you. All you have to do is allowing search and downloading of the small .torrent files. It’s not easy of course, but it’s doable. Basic information on “how peer to peer networks work, can be found here”: