Alo Sarv
lead developer

Donate via
MoneyBookers

Latest Builds

version 0.3
tar.gz tar.bz2
Boost 1.33.1 Headers
MLDonkey Downloads Import Module Development
Payment completed
Development in progress.
Developer's Diary
irc.hydranode.com/#hydranode

Monday, August 29, 2005

What makes Bittorrent tick?

When implementing new networks, there are two factors that I consider most important:

a) How does the protocol work?
b) How does the user use the network?

Two simple questions, but wait, there's more to it. When I think "protocol", I don't just mean the raw implementation of it. I mean understanding the underlying logic, the flow, the concepts behind that, the concepts that resulted in the protocol implementation in the first place. Because if you understand the concept, the logic, then the specific implementation doesn't matter - it's just numbers, in different sequence, but the logic doesn't change. DHT-based systems are like that - for example, if you implement, say, Kademlia, by copy/pasting the code from eMule, w/o understanding HOW it works, then yes, you end up having Kademlia support, but you'v gained no knowledge on DHT's, which means next time you need to implement another DHT-protocol (either 3rd-party, or your own), you'r helpless.

And, let's face it, knowledge and understanding of how P2P systems work, finding out what logic makes something tick, is one of the things that I love about this project - you get to work with many different areas, and learn from them.

The second question was - how does a user interact with a protocol? ed2k is kinda "generic" type network - from users point-of-view, the style is shared between a number of networks, including FastTrack, G2, Ares ... you search, you queue up a lengthy list of downloads, you get your files, that's it.

However, other networks cannot be so easily thrown into same pot of tea. Bittorrent, for instance, doesn't have search, which means users go around in forums and websites, looking for torrents. Bittorrent also seems to be filled with "50x15mb-rar-torrents", something you only rarely see in ed2k. Seeding is an important part of Bittorrent, much closer to user than uploading in ed2k.

Other networks that I hope to implement in longer future also have very specific characteristics. DC++, for example, is chat-based. IRC (xdcc or smth) is a completely different beast as well. Newsgroups - whole new story - 3000-byte-messages, read by binary newsreader, merged together and hashed by some 3rd application - intrigueing topic :)

But, we'r getting off-topic. Bittorrent is the current plugin at hand, and my interest is in understanding what makes it tick, how do the users interact with the protocol, what are the problems users are having, what are the problems in the existing clients, what can we do to releave those problems... what I'm trying to avoid here is simply throwing out a ton of code, saying "ok, we have BT support", and moving on, w/o ever stopping to ask "did we solve the problem?". Heh, we don't even know yet what the "problem" is we'r trying to solve - and don't say "because HN is multi-net client and BT is a must-have-thing".

Rather, think of it like this: If I were to release a standalone Bittorrent client, what features should it have, what would it do better than the existing clients, how would it win the "market"? The rationale is that multi-net client ONLY justifies itself if EACH and EVERY ONE of it's plugins / supported networks is AT LEAST equally as strong as it would be as a standalone client. And thanks to the modular architecture of Hydranode, we actually CAN release standalone clients for different networks, as we see fit.

So what say you, long-time Bittorrent users?

Madcat, ZzZz



Comments:
In my opinion, the most important thing (beside things like multitracker support or dht) is powerful, but simple GUI. You should get all important information (such as amount of seeders/leechers, availability, filesize, percentage, UL/DL-speed) at a glance. And get more information (such as amount of parts, filesize of a part, filelist (with possibility to select/deselect files, priority), peer-list), etc. if you take a deeper look, maybe in a extra window.
 
I agree about the simple & powerful GUI. Please take a look at rtorrent: http://libtorrent.rakshasa.no/
 
bittorrent was developed to fast exchange data with the help of upload. it should not be a big database for rare files like ed2k and not an uploadmanagement hell. its just about exchanging data. that simple design made it popular.
 
One of the most important things is fairness. One of BT's strengths is the ability to shun those who don't upload, or upload little. So a fair client is essential. For example the evil BitLord client is known to be unfair, it doesnt upload much (if at all). So, most private trackers have banned it, as have users of advanced clients such as azureus.
 
Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?