Powered By:
Clearspace
BlatherSource: Because development won't keep quiet
Currently Being Moderated
25

IRC and XMPP

Posted by Daniel Henninger on Sep 15, 2007 8:51:01 AM

The other day I was thinking about some of the folk who had requested IRC support in the IM Gateway plugin for Openfire in the past, and how they were trying to migrate from a corporate IRC server to an XMPP server.  This is apparently no small task to encourage such a change and it got me pondering what could be done to make that transition smoother.  In my work with IRC support and with the Martyr IRC library, I've gained a strong knowledge of how IRC works and it occurred to me that it might not be that hard to provide an IRC server that sits on top of an XMPP server and just "translates" so to speak.  So instead of taking your XMPP server and having folk log in and connect to a remote IRC server, you could replace your IRC server entirely with this XMPP server that acted as both XMPP -and- IRC.  At that point you might even be able to lure some people over by saying "You know, if you simply went into pidgin and used XMPP instead of IRC for the corporate server, you'd gain a lot more cool features".

 

Would XMPP be hard to translate into IRC?  Without having written any code for it, my best gut feeling is no, not really.  You'd clearly have to sacrifice some functionality, but I think you could secretly tie the two together pretty well.  Log in with an IRC username and password, you're actually logging into an XMPP account on the backend with the same username and password.  MUC <-> IRC chatroom.  IRC WHOIS <-> XMPP vCard.  IRC ISON <-> XMPP presence check (probe?).  Lots of aspects map fairly well I think.

 

But I'm curious about interest.  I mean this seems fun and I might want to whip up a proof of concept, but what if no one wants it period?  I'd be wasting my time.  =)  So anyone listening . . . I'd love to hear your thoughts.

Tags: irc, xmpp


Add a comment Leave a comment on this blog post.
Sep 15, 2007 10:02 AM Guest Adam Nemeth  says:

It's not as easy as you may think. I usually think of making an IRC server be capable to be a muc component, but it wouldn't be easy to do either.

 

At first, there's the uniqueness of nicks: on IRC, your nick is unique to the network. On XMPP, your nick is unique only for a channel.

 

Second: off-channel private messages: I hanged around IRC for years without joining any channel, just msg-ing with people. It would be impossible to handle an off-channel private message in most scenarios.

 

Third: channel modes versus muc room configuration. They're pretty much diverse.

 

And of course, there are IRC service bots like on unreal ircd, but it'd be a long story....

 

Sep 15, 2007 10:17 AM Guest Daniel Henninger  says:

1. Unless you enforce the nick uniqueness as mapping to unique actual real account names from XMPP.  Ie if your account is myaccount@xmpp.myserver.org, force that to be your IRC nickname.  (in other words it would be more restrictive than a normal IRC server, you can't just log in as any account you want)  There are mechanisms in MUC to say "nope, you can't have that nick" and also suggest what nick you should be using.

 

2. Why would it?  You log in as myaccount just as you would into the XMPP server, and send messages to what turns out to be other XMPP accounts on the backend.

 

3. Hrm.  Not sure I agree, I was able to map them together pretty well in some of my IRC work.  There are some issues for sure, but for the most part they map together.

 

I'm also not talking about implementing the ultimate IRC server either, but rather enough functionality to ease a transition.

 

Sep 15, 2007 10:21 AM Guest Magnus Henoch  says:

I've done a simple IRC interface for ejabberd, available as "ircd" in the ejabberd-modules repository.  You can try it at basil.cd.chalmers.se:6667...

 

Sep 15, 2007 11:02 AM Guest Nÿco  says:

There is an IETF's Internet Draft for XMPP to SIP/SIMPLE mapping:

http://tools.ietf.org/html/draft-saintandre-xmpp-simple-10

 

When Jingle will be out, maybe it will be the same for a Jingle to SIP mapping.

 

Wouldn't that be more useful/clever to first write such a XMPP to IRC mapping, so that we aren't tied to only one software implementation?

 

Sep 15, 2007 11:16 AM Guest Tony Finch  says:

BitlBee is an IRC server that talks to IM networks (including Jabber) instead of other IRC servers.

 

Sep 15, 2007 11:32 AM Guest Daniel Henninger  says:

Hi Magnus!   Very cool!  Colloquy (Mac) seems to dislike it to some extent but as you say in the motd it's immature so I didn't expect a lot.  But it's very cool regardless!  Have you had a lot of interest in it?  How long ago did you write it?

 

Sep 15, 2007 11:33 AM Guest Daniel Henninger  says:

This is true, but I must admit I generally feel better about XEP proposals after I've worked with a small implementation first to work out some kinks and figure out what issues creep up before trying to turn it into a proposal.  =)

 

Sep 15, 2007 11:34 AM Guest Daniel Henninger  says:

BitlBee is indeed cool but of course is the other direction of what I'm aiming for.  =)  None-the-less it's a cool implementation!

 

Sep 15, 2007 1:05 PM Guest davux  says:

For the record, I laid down some random ideas about the idea 6 months ago. It's in French, sorry.

http://da.weeno.net/blog/2007/03/19/410-ping-pong

Just my 2 cents.

 

Sep 15, 2007 1:19 PM Guest snder  says:

Older than this page:

http://ejabberd.jabber.ru/ejabberd_ircd

 

So, probably more than 1 year ago he started with writing it.

 

btw: the PSYC people also claim to have something like this.

 

oh yes, strategically, I think it would be very worthful for Jabber servers to also become IRC servers. It would mean the IRC only server projects would lose community in favour of Jabber projects. In the end this would mean, these projects practically die. This is good because the people in these projects do not die at the same time...all potential contributors to Jabber bots, Jabber servers, Jabber clients etc.

 

Sep 15, 2007 3:28 PM Guest Daniel Henninger  says:

I wish I could read it!  =)  I'm not sure I dare try the various translation services.

 

Sep 15, 2007 3:31 PM Guest Daniel Henninger  says:

PSYC, thank you, that's one of the projects I was trying to remember the name of!  So I guess, what made y'all stop working on the ircd ejabber component?  Just lack of time?  Was it just you Magnus?

 

Sep 15, 2007 3:51 PM Guest Aredridel  says:

iWant. Very, very much.

 

Sep 16, 2007 3:38 AM Guest sander  says:

Development on this component didn't stopped AFAIK. Magnus last commits to this component were only a few months ago. And yes, Magnus is the only coder on that component AFAIK.

 

Anyway, the only way to get the ball really rolling, is to convince an open-source project to switch their IRC server to ejabberd and this patch. Feedback about real-world usage and eventually patches would be really useful AFAICS.

 

Sep 16, 2007 6:12 AM Guest Carl von Loesch  says:

Since you mentioned PSYC, some details..

 

It may be less fun to use an existing wheel, but the psyced server has been acting as an IRC server since 2001 and as an XMPP groupchat since 2003 or 2004, both in day to day use ever since. It's a mature solution and really not so hard to use:

 

Get psyced: http://www.psyced.org/download

Then ./install.sh

Then any chatroom you enter has three addresses, like in this example:

 

psyc://psyced.org/@welcome

xmpp:*welcome@ve.symlynx.com

irc://psyced.org/welcome

 

Figuring out all the historic gotchas of a good ircd takes a long while, like no RFCs tell you that IRC clients expect JOIN/PART operations to be strictly synchronous. Just an example.

Doing a conference control XEP is probably the least of your worries, since getting to the point of doing conference control is a much tougher nut to crack.

 

In fact we never implemented neither IRC MODE nor XMPP MUC simply because PSYC's programmable conference control is so much more powerful.

You just define your /-commands in your chatroom (or use our generators), which doesn't mean you can't make them /mode-compatible - go ahead and implement it. It's just that nobody ever cared to have that.

 

We may however provide a standardized ChanServ type of interface one day, according to the http://www.irc-plus.org initiative, just to be nice to graphical IRC clients. We might also emulate MUC one day, to be nice to graphical Jabber clients.

In any case both approaches would not completely reflect the power of the PSYC commands, and none of our users even ever asked for these features to be done. Be the first, or find out you don't need that stuff.

 

Sep 16, 2007 10:16 AM Guest alex  says:

Why don't they just migrate to MUCs?

What has IRC to offer that jabber has not?

And why don't we fix these things?

 

Sep 16, 2007 10:25 AM Guest Daniel Henninger  says:

Well, it's not really a matter of what's better or what is and is not working.  The 'problem' usually boils down to, we've been running this IRC server for 10 years, it's been working just fine, the techies might be interested in updating to a newer technology but other folk (bosses perhaps?) don't want to change.  So such a solution would allow those "stubborn" about changing to keep using what they are using and let the techies upgrade the server itself.

 

I know some folk disagree with me, but I think MUC itself is "just fine".  =)

 

Sep 16, 2007 10:33 AM Guest Daniel Henninger  says:

I know I've seen at least a couple big open source projects kick around the idea of switching away from IRC to XMPP, but they generally vote it down with a "why?  IRC is working fine for us".  I bet some of them would make good target audiences. 

 

Sep 16, 2007 10:35 AM Guest Daniel Henninger  says:

Very cool, thank you Carl!  I had not even heard of irc-plus.org until now.  I don't see any dates on it ... do you think it's "still moving" so to speak?

 

Sep 16, 2007 10:50 AM Guest Petteri  says:

Most of Jabber clients have poor MUC implementation. IRC clients have been designed for start to support large multiuser chats (irc channels). Really good clients like Irssi just don't exist in Jabber world.

 

Also Jabber protocol is really large. It quote work to create full featured Jabber client from scratch. And yet we see new xeps coming out all the time.

 

But I think the main problem is image. Jabber is seen as IM service. And most IM services are about one-to-one chats. Chattin one-to-one is boring. Why would some want do that, when you can just join nice communities in IRC.