April 26, 2004

Bits keep falling from the sky

I've been fooling around with BitTorrent lately. Nothing big, just fiddling to see how it all works and playing around a bit. (Yeah, OK, I admit it--I've been snagging manga scanslations off the shub-internet :) Definitely a cool idea, though the reference implementation lacks some things that'd make it otherwise handy. Things like a global rate limit and client cap, handy for those of us with full-time internet connections that don't mind being seeds for a directory full 'o stuff, but don't have that much bandwidth on hand. (I don't at all mind letting a torrent client run for a few days or weeks, as long as it doesn't get in the way) It's no good for the single biggest hit on the bandwidth here (the VMS perl distributions) for lack of VMS bit torrent clients, but...

Still, I've been looking around--it's a good alternative to anonymous FTP, and I figure someone has to have dealt with this by now--not everyone with a wad of stuff to be master server for has a monster pipe and sufficient IP addresses to use the basic client. That search has demonstrated one of the biggest drawbacks to peer-to-peer systems. No, it's not really badly mangled English mistranslations of Japanese. Rather, it's the lack of good server software.

Yeah, I know, it's peer-to-peer! There are no servers. Or... not, since there are. But nearly all the development is towards end-user programs with gooey GUIs and many whizzes and bangs, leaving those of us who just want to run a faceless daemon for these things sort of out of luck.

So far, the only thing I've found is BitTornado, which looks to wrap a WxWindows GUI on top of an upgraded python underpinning with better rate control and management, so I'm going to give that one a shot in a bit, as soon as SNET^WSBC un-breaks the state's DSL system and see how it looks. Hopefully it'll do what I want it to.

Now if someone just writes a BitTorrent client for VMS that can be distributed as a standalone executable... (And yeah, even if the python core works on VMS, that means someone'll have to download two huge distributions, rather than one, since neither the perl nor python distributions are at all small...)

Posted by Dan at April 26, 2004 06:41 PM | TrackBack (0)
Comments

People keep sticking GUIs on things that they shouldn't. All those clients would be wonderful, if the core was written as a headless daemon with a socket for a GUI to talk to it. Hey, maybe everyone might even contribute to the same core and just write different GUIs to suit different tastes, or even console or other clients — you know, less duplication of effort and all. Err, yeah.. right.

Posted by: Aristotle Pagaltzis at April 27, 2004 08:25 AM

Turns out that the BitTornado thing does work exactly as I need it to--you can start it up, give it a rate limit, and set it loose on a whole directory of files. Seems to be working just fine. (Granted, I'm running the curses client in a screen session, but there's a headless version as well)

I think it's time to set up a tracker and make torrents of the VMS files. There might not be too many people who'll use it, but anything's better than nothing.

Posted by: Dan at April 27, 2004 08:50 AM

I'm writing a daemon to do something similar at the moment - controlling vanilla BitTorrent clients without using up a terminal. When I figure out how to do it, it'll have global rate control, etc. It's taking a little longer than I'd hoped (when doesn't it?) because I'm writing it in C, with the eventual goal of getting my C-skills up to a good-enough level to contribute to Parrot. Well, that's the plan anyway...

Posted by: Paul Wood at April 27, 2004 08:57 PM

What people actually use seems to be Azureus from http://azureus.sf.net/ . It's a Java thing, but well worth checking out.

My biggest problem with BT is that there no way to enforce an up/down ratio. Many files are dropped out of circulation way too early, because most users cap their upload rate hard. One would think that people AT LEAST would run to a 1:1 ratio before quitting.

Posted by: jb at May 5, 2004 02:46 PM

I ended up going with BitTornado. It runs headless, allows a global rate limit, and handles added and removed torrents mostly OK. The logging capabilities are pretty lousy, but I'm hard-pressed to complain much about code I didn't have to write and can't go fix. (It's all python, and I don't do python :)

Dunno if it's what I'd use if I were setting things up more as a client downloader, but since what I need it for is as an initial seed, it works out pretty well.

Posted by: Dan at May 5, 2004 03:08 PM