Alo Sarv
lead developer

Donate via

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

Monday, May 09, 2005

Research @ BT, timeline for next 2 months, DC module

Been doing a lot of research, proof-of-concept-writing and designing regarding bittorrent module, which is our next bigger target. I have a pretty good understanding about the protocol now, and some initial tests written, but a lot of work still needs to be done regarding actual module design. There are also some things in bittorrent protocol that require slight changes in the engine itself - namely, I discovered that in BT, chunk-hashes may exceed file boundaries. Yap, that's correct - in BT, the chunkhashes are generated over the entire data of the torrent, possibly overlapping file boundaries where needed. This introduces several problems in our internal designs, which were initally not designed to support such thing (because I simply didn't know about it). I have mostly resolved it, but the design changes still need bit more work before heading to actual implementation. This change affects both PartData, and Hasher. On PartData side, we need a "guardian" PartData, one per torrent, which may contain sub-PartData objects, one for each actual file. The "guardian" PartData handles full-torrent hashing, e.g. being a "virtual file" which includes entire torrent data.

On other news, I realized that all this release-management, as well as porting / cross-platform development is taking up enormous amount of time. However, the thing is, hydranode working on many platforms is completely waste of time if the app itself isn't fully finished. I recently did a partial Solaris x86 port of hydranode (compiles, crashes on startup), and I think we have proven that hydranode IS portable, and can be ported to any OS we want. But all in due time. Right now, porting hydranode, as well as keeping all ports 100% up2date, is a waste of time - I'm still only human, and humans don't scale well. So here's an idea. I go back to full-time development on single-platform (Linux, since it has best development, profiling and debugging tools), fully finalize the base engine including the plugins. If I can stop worrying about other platforms, I can show the fast development speeds you saw during winter. This development would go on for roughly two months, starting 15th May (e.g. after new site launch and 0.1 release), during which I'll write BT plugin, and perhaps get to at least start some fast-mp3-net plugin work. Once that's done, e.g. around 15th July, our, now fulltime, designer has finished research and design of user interface, which I can then implement w/o having to spend additional time on design.

The reason for this scheme is that it speeds up development, and this is a really important point. Hydranode has taken damn long to develop, and it's development has costed quite large sums of money already (bills, hardware, food - all cost money, and full-time free software developing doesn't generate much income), so it's critical I can finish the app and release final version before financial situation gets too out of hand, and I'd have to drop the project just because of that.

To finish on a more positive note, DirectConnect module (developed by HellFire) has been added to our subversion repository, available at /testing/dc folder. It's still in rather early development stage, but most important base things are there (including a rather tricky-to-implement fileslist packing algorithm), so personally I'm very interested in how it turns out - being the first 3rd-person-developed module.

Madcat, ZzZz

PS: HydraWiki is still up and running, I just seem to have forgotten to add links to it. Improvements, updates and fixes are very welcome ;)

What about selecting files from a batch torrent? Will HN support this at all?
Post a Comment

<< Home

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