Jabber1 vs Jabber2 vs Ejabber

I planning to use Jabber1, Jabber2 or Ejabber on a large website, using web client interface (JWChat). I know that at this time the best combination is ejabberd + JWChat, because JWChat is working from now with http-polling via ejabberd (see http://sourceforge.net/forum/forum.php?forum_id=417532 , http://sourceforge.net/forum/forum.php?forum_id=410481) and ejabber project is the most active at this time.

I tested ejabber+JWChat and is working ok.

My worries is about 3 issues.

A) How long time JWChat will keep this option about ejabberd? Stefan Strigler (zeank) talk about using on the future http-binding (see for referrence http://sourceforge.net/forum/forum.php?forum_id=417532 & http://sourceforge.net/forum/forum.php?forum_id=410481) and http-binding will be available by what I see only by Jabber1, not by eJabberd (http://www.jabber.org/admin/jsc/)

B) How I can migrate a lot of users later (inclusing their roster's and rooms) from ejabberd back to Jabber1 (or Jabber2) if above will happening? And related, how I can migrate between jabber1 - ejabberd (on both directions). It's there some tools?

C) I see that ejabber have no available MySQL storage and Mnesia database looks strange for me (I just learn now about, but I think will I not use on the future on my site since I have already developed using MySql). It's there a chance for ejabberd to work with MySQL & PHP in the future, on issues like retrieving data from mysql and post on ejabber (create accounts, rooms ie)? For example: extract u/p user data from mysql, create ejabber user like using class.jabber.php (http://cjphp.netflint.net/) and, next, retrieve data from ejabber Mnesia database by php to a site by reason of show some statistics). How sustainable will be is this compatibility (changing informations between servers using other scriptiong language than erl) on the ejabber core? (I think that it's not a good idea to call erl command like ejabberctl by PHP).

Thanks,
Iulian Nastasache

--- A) How long time JWChat

--- A) How long time JWChat will keep this option about ejabberd?

JWChat is moving from WCS to httppoll/httpbind. If I understood it correctly, those two methods will be supported, the only one that is deprecated is the old WCS. Of course, if the server supports it, httpbind is preferable over httppoll. Since ejabberd httppoll implementation is only 331 lines of code (including comments), I guess that it'll not be that hard to implement httpbind on the future.

--- migrate jabberd1-jabberd2-ejabberd

Right now there are tools to migrate:

  • jabberd1 -> jabberd2
  • jabberd1 -> ejabberd
I'm not aware of any other migration tool. It'd be nice to have:
  • jabberd2 -> jabberd1
  • ejabberd -> jabberd1
So admins can move they users among those three servers. Email on the subject.

--- It's there a chance for ejabberd to work with MySQL & PHP in the future, on issues like

  • retrieving data from mysql and post on ejabber (create accounts,
  • rooms ie)?
  • extract u/p user data from mysql,
  • create ejabber user like using class.jabber.php (http://cjphp.netflint.net/) and, next,
  • retrieve data from ejabber Mnesia database by php to a site by reason of show some statistics

Do you really want to mess with a server database, instead of using the server as interface? Don't forget that even servers that use the same database backend can be incompatible at database level: look at jabberd1 sql backend and jabberd2 (are they compatible?). You should better use a standarized method if possible, so your application is the most server-independant possible, and more people will be interested in it. With XMPP you already can

  • create user (http://jrt.jabberstudio.org/ http://jrt.jabberes.org/)
  • remove user
  • change password
  • modify roster (add/remove contacts) (http://jru.jabberstudio.org/)
  • check presence of your contacts (JWChat)
  • create rooms, get participants (JWChat)
Instead of modifying the database directly, why don't use class.jabber.php or any other library and access the Jabber server at a more abstract level?

For more specific tasks, like showing statistics or getting a user password, that are server-dependant, you can extend XMPP and write a basic ejabberd module that exports the required information, for example. Maybe a lot of the ejabberd-dependant code is already written, or more people is interested in it and can collaborate if you release the code.

"For more specific tasks, lik

"For more specific tasks, like showing statistics or getting a user password, that are server-dependant, you can extend XMPP and write a basic ejabberd module that exports the required information, for example."

Statistics are standardised by JEP-0039 (Statistics Gathering), though this feature isn't implemented in all servers.

See http://www.jabber.org/jeps/jep-0039.html

--
sander

FWIW

I wrote a little tool to produce a jabberd1 spool from a jabberd2 database. I haven't seen it show up at scriptrepo though. =/ I'll make it available on my own website at some point. Anyway, that would allow you to migrate any direction you want. Of course, as far as I know, it only works for mysql databases. It may work with postgres too. (i am referring to jabberd2's db structure)

As for mnesia, I originally thought I wouldn't like something that didn't use mysql or something similar, but I've found that there's absolutely nothing I dislike about Mnesia, and in fact it has at least one tool I'm aware of to interact with it directly.

Syndicate content