Computer Science Canada

Rubidium - Ruby IRC Client

Author:  Cervantes [ Tue Jan 24, 2006 10:23 pm ]
Post subject:  Rubidium - Ruby IRC Client

Introducing Rubidium, an IRC Client that Hikaru79, cartoon_shark, and myself are going to create. It will be programmed in Ruby. It will be a highly modular, scriptable, textual IRC client. It will have a UI using ncurses.

We're looking for suggestions for features this IRC client can support.

Here are our current thouhts:

  • It will be able to function as a bot or a client. Much of the code will be reused, and a runtime flag will determine which mode.

  • We hope to create a to create a limited scripting language which users with little programming experience can use to develop their own small plugins and event-driven scripts.

  • We also plan to incorporate irb directly into the client, making it a great choice for those wackies who teach programming languages via IRC. Wink


One idea for incorporating irb into Rubidium is to have a side panel that acts as a mini irb terminal. Users may type ruby code, prefixed by a special character, and the irb code will appear in this side panel. This is an advantage because it allows testing of irb code, and hence will not flood the channel with incorrect code.


Please share any comments and suggestions you may have.

Author:  Hikaru79 [ Tue Jan 24, 2006 10:35 pm ]
Post subject: 

Also, if any of you guys know of a good raw IRC protocol reference somewhere, link us please Smile At the moment we're having to use Ethereal to capture our own packets and trying to reverse-engineer it from there. It's working, but only very painfully. Google has turned up nothing useful.

Thanks Smile

Author:  Martin [ Tue Jan 24, 2006 10:54 pm ]
Post subject: 

Isn't ruby a scripting language? So like, couldn't you just use that?

Author:  Hikaru79 [ Tue Jan 24, 2006 10:59 pm ]
Post subject: 

Martin wrote:
Isn't ruby a scripting language? So like, couldn't you just use that?


Yes, but the idea is to create something far simpler (a la mIRC scripting language) so that people who don't know Ruby (or programming for that matter) will be able to do things the quick and dirty way. The mini-scripting language will be trigger-based, so you can easily set up things like responses for a certain user logging into the channel. It'll be as simple as combining regular IRC commands together. The idea isn't to get people to learn a new language or anything; just to let them do thinks like write a quick WB-Message script.

To be honest, its mostly just for our own educational value. If it ends up being practical, that's an added bonus, but the top priority is just to motivate us to do some serious coding in Ruby.

Oh, and Martin, you of all people should appreciate the title of the program Wink

Author:  Martin [ Tue Jan 24, 2006 11:02 pm ]
Post subject: 

Yes I do like the title.

I'm making a MUD right now for the exact same reasons. Mostly to wrap my head around how C++ networking and threads work. Wink

Author:  Hikaru79 [ Wed Jan 25, 2006 5:59 pm ]
Post subject: 

A developer mailing list has been set up at http://rubyforge.org/mailman/listinfo/rubidium-devel . Subscribe if you want to see how progress is going.

Author:  rdrake [ Mon Feb 06, 2006 6:06 pm ]
Post subject: 

For those of you seeking more information, a site has been set up to house all of the docs and such. You can find it here.

Author:  Cervantes [ Wed Jun 07, 2006 10:09 pm ]
Post subject: 

How many months has it been. After a long time, the alpha version has been relased! You can get it here.

A little reflection: Of the three bulleted points I started this topic with, none of them have been reached. That does not mean they won't be reached, however. It also could be, in the case of the second point (creating a scripting language) that the idea was scrapped or replaced with other objectives.

Rubidium is currently a text only client. It runs right out of the command line. That means that you need a pretty good command line if you want to get any success out of it. Because of the threading and the use of the command line, Rubidium will not work well in Windows.

When Rubidium gets its GUI, it is going to be a GTK+ GUI. This means that it will run nicely in Gnome, but will also work under Windows and possibly other systems.

One neat feature of Rubidium is how commands work. Rather than typing something like,
Quote:

/kick Comrad80 Good bye spammer!
/kick Comrad81 Good bye spammer!
/kick Comrad82 Good bye spammer!

You can type:
Quote:
/kick [Comrad80 Comrad81 Comrad82] Good bye spammer!

Most IRC commands that take one or more arguments take their most important argument through square brackets. This argument can be given more than one value, separated by spaces. This will effectively execute the command once for each of those arguments, though it uses some optimization to speed the data transfers up. This may take some getting used to. Typing "/server irc.afternet.org" will get you no where. Keep this in mind when using Rubidium. If you're unsure as to what to put inside brackets, check the help file: "/help".

Rubidium is a fully functional IRC client. It communicates and understands all the major IRC commands, If there's a command that isn't functional, it's because it isn't ever used. That is, it's a command only used between servers or its a response command that is suitable to treat as a notice.

Feedback is always welcome. Smile

Author:  md [ Thu Jun 08, 2006 8:32 am ]
Post subject: 

Can you use regex's in the []s? 'Cause /kill [*] would be fun Wink

Author:  Cervantes [ Thu Jun 08, 2006 12:08 pm ]
Post subject: 

Yes, I could do that. Thanks for the idea! Twisted Evil

Though it wouldn't wouldn't work for all commands. Only the commands that I have a list of items to compare the regexp to. For the most part, that list would be the list of users in a channel.

Cornflake: If you want, you can add to the Feature Tracker. Smile

Author:  rdrake [ Fri Jun 16, 2006 10:58 pm ]
Post subject: 

For those of you who want to check out the current bleeding edge code, we have a SVN repository server set up courtesy of Cornflake. Access it with the following command:
code:
svn checkout svn://nxor.org/public/rubidium/
If it asks for a password, just hit enter. You won't be able to commit, but you can browse.

If you don't have SVN, just fetch it via your favourite package manager. Alternatively if you're stuck in winders, there's TortoiseSVN which you can search google for.

Any further questions, please direct them here or join us in the compsci.ca IRC channel.

Author:  md [ Fri Jun 16, 2006 11:56 pm ]
Post subject: 

You should really use
code:
svn co svn://svn.nxor.org/public/rubidium
as the subversion server *could* technically move to a different IP then the main server.... it's best to use the fully qualified name.

And if anyone else is looking to host a smallish project... my server is available. and if uptime is key, so far it hasn't been down in 50 days Wink


: