Why XMPP Will Be Huge Very Soon
intridea.com
intridea.com
And this: "XMPP servers, which are essentially make or break an XMPP application, are rapidly maturing beyond instant messaging."
Have he ever tried to actually debug ejabberd? Cause it's very painful and time consuming.
Now, I'm not bashing xmpp, it's pretty cool, but it's not exactly "the next big thing", IMO.
We're actually abandoning it for AMPQ.
Describe the weird things, please. I'm about to deploy ejabberd for a production site, and I'm interested in your experience.
That said, word on the street is that ejabberd is the best implementation of an XMPP server. AMQP supposedly offers better reliability (with RabbitMQ) as well as a whole lot of pretty cool features that Jabber really doesn't.
If you start it up in "live" mode (ejabberdclt live), we see "Replacing connection..." sometimes, which then throws a "Broken Pipe" error in our rails app. But again, we can't isolate what's happening there.
You're missing hours of headaches working through over-engineered ridiculously overly complicated horrible XML protocol. Stick with IRC ;)
<field var='muc#roominfo_occupants' label='Number of occupants'>
<value>3</value>
</field>
Sorry, but you can't really look at that protocol and say it's not ugly and verbose beyond reason. The number of occupants in a room is surely used enough to deserve an encoding of less than 75 characters to specify a number.Identity and S2S federation. IRC is fine for a closed system, but XMPP's global namespace has a lot of potential for integration between different real-time systems.
Remember when Prodigy users couldn't mail Compuserve users, or AOL users couldn't mail Usenet users? That's where IM is right now, held back by the fact that it consists of nothing but a series of closed gardens.
XMPP makes it work like email. Your JID looks like an email (and can also end up being an email identifier), and the servers know how to route amongst one another.
If you can't see how this might be a nice feature, it is only because you've become too used to the status quo to see.
Identity comes from the fact that your JID is now generally accessible from anywhere in the world, and thus your JID can be used as your identity, just as your email address can, and, like I said, they can even be exactly the same.
Further, since XMPP was designed to work this way from day one, it means that all other XMPP services work across servers this way. Presence subscriptions are correctly handled, one server can host conferences and people from other servers can participate, etc.
We are a geographically distributed company that uses ICQ for a whole lot of communication, so when it goes down for any reason, work just about halts. Also, we routinely discuss very sensitive things (but we call each other if we need to discuss root passwords), so a dedicated eavesdropper could learn more than we'd like him or her to.
Also, if your company needs to be able to log the IMs for compliance reasons, that doesn't solve that either.
(Disclaimer: I work for a company that builds IM servers for companies. But... the above isn't exactly controversial.)
i used to work for an isp and we had a private irc server that was very valuable in the case of outages when we needed to broadcast information to other departments. if i had to deploy it again now i'd choose an xmpp server, but either way, relying on an off-network communication server is not a good idea for a variety of reasons.
I have seen a resurgence of applications built on xmpp and instant messaging in general, I dont think a lot of people will know they are using xmpp, but it will be lurking in the back
With Google driving some adoption and (hopefully) smaller IM networks seeing that XMPP would be in their interests (since it would help them overcome a lack of users), XMPP could see decent enough growth. However, if other networks have desired features that XMPP doesn't offer, the interoperability argument is countered by the lacking of things users want.
1) there were very few docs that explain the terms (roster, what a conference server is and why that is different from your regular connect server) in the context of other messaging protocols (AIM, for example). Yeah, I know now that "roster" is the equivalent of the buddy list, except it's not because there are operations that can happen on the roster and it's not complete clear which component maintains the roster and a lot of roster operations can happen asynchronously (due do its distributed nature) even when you're disconnected. None of this was obvious.
2) The docs that did exist, even for abstraction libraries, talked about creating XML stanzas and the XML stream and all the different XML namespaces (none of which were explained well enough to know when you would use 'em) and XML this and XML that. I don't want to write XML, I want to connect to a server and send and receive messages. That it is XML stream based is beside the point--and this was always touted as the reason that XMPP was so awesome, but we all know that it got caught up in the XML hype of the period in which it was conceived.
Eventually, libraries started being written that provided the correct level of abstraction for developers rather than protocol designers. Last one I used was Net::Jabber::Bot (cpan), which was okay, but there's still a lot of data extraction from partially cooked XML structures.
"G1 = A gateway that translates between XMPP and the protocol(s) used on a foreign (non-XMPP) messaging network"
I don't think my question was not vague at all. It just might be out of the ordinary. Most people are interested in XMPP client implementations. I want a pre-existing open-source project that would be a good first step towards building an XMPP gateway.
So, I can help you out. The only library that I know of that is designed specifically for the purpose of implementing gateways is Thrasher Bird: http://developer.berlios.de/projects/thrasher/ (git at http://repo.or.cz/w/thrasher.git ). I am the lead developer of that library. While the "sales pitch" is that it wraps libpurple, it is actually designed so that the "gateway" part of the library is separate from the "protocol" part of the library, unlike every other gateway I've seen.
It's in Perl, and it's still a bit alpha-ish, but it is also exactly what you are looking for and in active development, so you'll have to decide whether that meets your needs.
If you're interested in more information or need help, contact me at jbowers@barracuda.com . Compiling may be a bit of a chore, but I've managed it on a couple of different Linux systems now.