From: Simon Conrad-Armes (Curne) Date: 2004-11-05T00:18:46+09:00 Subject: Re: Ruby BitTorrent On Nov 4, 2004, at 1:38 PM, Michael Neumann wrote: > On Thu, Nov 04, 2004 at 12:58:09PM +0100, Simon Conrad-Armes wrote: >> >> On Nov 4, 2004, at 11:33 AM, Michael Neumann wrote: >> >>> On Thu, Nov 04, 2004 at 06:13:17PM +0900, Simon Conrad-Armes wrote: >>>> Has anybody started a Ruby BitTorrent transfer library? I wanted to >>>> start a RubyForge project for one but I hate duplicating the worthy >>>> efforts of others. >>> >>> Yep, it's me ;-) >>> >>> http://ntecs.de/viewcvs/viewcvs/BitTorrent/ >>> >>> I've started with the client protocol, but that in a very ungood >>> shape, >>> and is not yet commited. >> >> That's cool tho. I figured someone out there must have gotten the same >> idea :) >> Are you writing a full client or a library? From the code in repo it >> is >> difficult to see. > > My initial goal was to write a full client (but no tracker). But I > canceled it in favor of other more important things. > >>>> I thought of starting off with a simple layer of glue around libbt >>>> (http://libbt.sf.net). >>>> Any thoughts, ideas? >>> >>> hm, why not write BT in pure Ruby? >>> >> >> More work... But I suppose you are right. Coding RubyC for I/O-centric >> stuff is an old habit based on performance superstition. From other >> implementation in other than pure C, I have seen greatly varying >> transfer rates... But you have the semi-working code. Have you noticed >> any performance issues? > > But the original BT was written in Python? I assume that there's no big > difference between Python and Ruby in performance (except that Python > has native threads). Like I said. I was just being superstitious and paranoid :-) Nevermind > Nope, I never got that far. Okay, I am able to read a .bittorrent > metainfo file, connect to a tracker and then finally connect to a peer > and communicate with it a bit. The peer protocol is not yet 100% > complete, but that should be very easy to do. The hard part is really > the application logic (managing the connections, choking, unchoking > etc.). If someone is interested to write this, then I would take the > time to finish the low-level peer protocol stuff. Micheal, do you want to start a Rubyforge project? I will certianly join in, and it sounds as if a few other people would like to too. The best thing about registering it as a project is that we can create a mailing list to work on it. /Curne -- POLS is in the eye of the beholder. The difference is the community's intent to converge or diverge. I choose Ruby. --curne@curnomatic.dk