Ruby BitTorrent

  • Thread starter (Curne) Simon Conrad-Armes
  • Start date
C

(Curne) Simon Conrad-Armes

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.

I thought of starting off with a simple layer of glue around libbt
(http://libbt.sf.net).
Any thoughts, ideas?

/Curne
 
M

Michael Neumann

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.
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?

Regards,

Michael
 
C

(Curne) Simon Conrad-Armes

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.
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?
 
F

Fredrik Jagenheim

Yep, it's me ;-)

Nice. I thought about doing that too. :)

But I got no further than the name[1], then my other ruby projects
started to call for attention. :/

Anyway, all I wanted to say was; if you can do it as a library with a
seperate FE; then it would be great. Your idea about a great frontend
may not be the same a mine, but I'd still be able to use your backend
code...

client = BitTorrent.new(...)

;)

//F
[1] rottenr. With some tagline like 'more rotten than usual'. Name
formed from switching 'r' and 't', since I wanted a name starting with
'r'.
 
M

Michael Neumann

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.
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).

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.

Regards,

Michael
 
G

gabriele renzi

(Curne) Simon Conrad-Armes ha scritto:
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.

I thought of starting off with a simple layer of glue around libbt
(http://libbt.sf.net).
Any thoughts, ideas?

/Curne

it seem nobody still named this:
http://aversa.rubyforge.org/
linked from bt.rubyforge.org
 
C

(Curne) Simon Conrad-Armes

(Curne) Simon Conrad-Armes ha scritto:

it seem nobody still named this:
http://aversa.rubyforge.org/
linked from bt.rubyforge.org

From the page: "Aversa is a little utility for creating and viewing
BitTorrent metainfo files."

Maybe some useful code, but I think what be even more useful was an
actual package. I was thinking along the lines of the following feature
set:

- completely isolated library or backend
- off-line mode (run in background)
- front-end can reconnect to backend
- upload/download cap (max upload setting)
- queueing (max downloads at a time)

It would be cool if the backend serviced frontends through DRB.

/Curne
 
C

(Curne) Simon Conrad-Armes

My initial goal was to write a full client (but no tracker). But I
canceled it in favor of other more important things.


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
 
T

Tom Copeland

T

Tom Copeland

On Nov 4, 2004, at 1:53 PM, gabriele renzi wrote:
From the page: "Aversa is a little utility for creating and viewing
BitTorrent metainfo files."

Yup, that's all the current release does.
Maybe some useful code, but I think what be even more useful was an
actual package. I was thinking along the lines of the following feature
set:

- completely isolated library or backend
- off-line mode (run in background)
- front-end can reconnect to backend
- upload/download cap (max upload setting)
- queueing (max downloads at a time)

Right on! A full client, a full tracker... all that good stuff.
It would be cool if the backend serviced frontends through DRB.

Sweet!

Tom
 
M

Michael Neumann

Yup, that's all the current release does.


Right on! A full client, a full tracker... all that good stuff.

Wow! That's really cool!

Regards,

Michael
 
T

Tom Copeland

Wow! That's really cool!

Oh, sorry, I should have said "a full client, a full tracker... that's
the goal of Aversa, too." Because we're certainly not there yet :)

Yours,

Tom
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,161
Messages
2,570,891
Members
47,423
Latest member
henerygril

Latest Threads

Top