Forum OpenACS Q&A: Jabber to-do

Collapse
Posted by Malte Sussdorff on
Björn and I sat down and wrote up what needs to be done to get Jabber going (in our opinion). Partially we had to take into account the moving target of OpenACS and Jabber as you will see.
  1. Testing postgres/nsjabber and take the latest changes (Bug Fixes) from the nsjabber/jabber package for Oracle. Testing the Postgres port of the oacs package. Integrate it with 5.1 / .LRN 2.1
  2. Porting jabber-portlet/dotlrn-jabber to postgres, porting notification implementation (started).
  3. Implement jabber notifications into forums by changing forums package to use notifications properly (looking up notification methods dynamically).
  4. Enhance jabber/www/index.tcl to display only buddies from current community (url where the package is mounted), use the common index.tcl only under one url to display the users self configured buddylist (examp.: www.server.com/pvt/home/jabber).
  5. Integrate online status into members/index.
  6. Cleanup the Buddy List display after user feedback.
  7. Implement search for conferencing protocols for postgres and Oracle.
  8. Clean up nsjabber to avoid locks/events when user (browser) closes the socket, which kills the aolserver thread
  9. Testing the jabber server xdb_sql module with postgres backend, updating postgres-database.sql and testing it for new auth_admin, and auth_crypt
  10. Improve the context_bar navigation for Jabber Package.
  11. Service contract needs to updated to allow the management of groups in the User's roster, so the user's roster will reflect his group memberships in .LRN
  12. admin unregister support for mod_acs in conjunction with xdb_sql backend.
  13. Internationalisation of the Jabber Packages
  14. Starting 1 on 1 chat between non Jabber entities (like AIM, ICQ, others). This is only possible if one of the entities is logged into the non Jabber Service (read: aim) through our Jabber Server (aim transport)
  15. Notification Bar (Someone Wants to Chat with you, obviously useful for "you got mail" or "appointment in 10 minutes" as well).
  16. Notification monitoring, count of number and bytes and wait with sending messages to transport if count_max is reached to avoid disconnect.
Collapse
2: Re: Jabber to-do (response to 1)
Posted by martin hebrank on
Ok. I don't see anything about porting this to jabberd2, any plans for that?

Also, I plan on writing a proper jabber namespace and moving many functions into that as we have other parts of the system that will need access to many of the functions offered by the jabber package. Which is another item I don't really see on the list.

** Martin

Collapse
3: Re: Jabber to-do (response to 2)
Posted by Malte Sussdorff on
The namespacing is part of the "clean up and integrate to .LRN 2.1" on the top of the list.

As for Jabberd2, yes, this is on the list, but long term, as this has some implications which Björn can talk about in more detail.

Also the idea is to extend the support for the XMPP Protocol in the long run to enable message exchange between OpenACS and  other systems (Jabber-RPC at http://www.jabber.org/jeps/jep-0009.html).

One of the biggest goal where XMPP support might get us going would be to record coccinella (http://hem.fyristorg.com/matben/) whiteboard messages, so you could have an online class using this whiteboard enabled jabber client and anyone who missed this session can at a later stage view the chat played from the OpenACS server. Though there are a couple of "if's" involved which need further investigation. And it does not stop there....

Collapse
4: Re: Jabber to-do (response to 3)
Posted by martin hebrank on
Ok. Well, These are things that I have fairly immediate plans for doing. If you guys would care to publish some of the immediate plans for this package I will gladly work with you guys on this. Do we have more than this quick list somewhere?

** Martin

Collapse
5: Re: Jabber to-do (response to 1)
Posted by Bjoern Kiesbye on
Hi ,

their is another Client which supports whiteboarding, it's called neos

http://www.neosmt.com/eng/index.html

I dont think the protokol is compatible with the concinella protocol but it runs on all win32 platforms without installing extra software (concinella needs a tcl interpreter installed on the client machine).
Might be a interesting whiteboarding Client solution.

I did check the Jabberd2 Server Code a Year ago, and it's internal architecture changed a lot. So it is not possible to just modify mod_acs a little to get it to work in Jabberd2.
To implement Admin functionality (Jabberd2 allready delivers some) we can't just use the standard api, last time (for jabber-1.4.x) we sat 2 months with 2 guys reading and undersdanding the Jabberd internals to get a proper admin implementation running, even with using the admin functionalities  allready implemented in Jabberd2 I will propably need at least 1 Month to write the additionel admin functionalities we need.

I think it's the best to stick with jabber-1.4.3 (or jabber-1.5.0 when it's released) for now. It's well tested , and runs very stable.
But upgrading to Jabberd2 is defnetly somthing to be doen in long term.

Any way their are no transports for Jabberd2 jet, so you will need an extra jabber-1.4.x server on your system, where the transports are runnig in (Jabberd2 can then connect to this transports with the uplink method). So the jabber-1.x.x project will keep on existing for a while.

I think, to make the jabber-package (it's functionality) available through out the System, we should use service contracts instead of namespaces. If we just using a  namespace (the package was developed befor tcl supported namespaces)  as api, all packages which use this api will break, unless the jabber package is installed.

Collapse
6: Re: Jabber to-do (response to 5)
Posted by martin hebrank on
I agree that we should provide service contracts, but that doesn't mean we shouldn't put all jabber tcl procs into a proper namespace.

To get started, I would propose the following basic breakdown of the namespace.

jabber::services - All the procs for service control.

jabber::user - All the procs for service control.

jabber::user::friend - All the procs for controlling a particular user's friends.

jabber::conference - All the procs for user control.

** Martin

Collapse
7: Re: Jabber to-do (response to 6)
Posted by martin hebrank on
So, is the lack of response here meant as a "well, we don't have immediate plans" or "well, we're not interested in your help"?

** Martin

Collapse
8: Re: Jabber to-do (response to 1)
Posted by Bjoern Kiesbye on
Sorry Martin,

your help is wanted, I'm just fully into geting xdb_sql for oracle runing under Debian, and preparing myself for the 'Linux Tag 2004'.

I got moste critical Bugs out of nsjabber/jabber package for postgres , and I included your jabber-drop.sql into the package (thanks 😊 ). I will set up an installation at www.theservice.de/jabber the next days , so every one can test it.

We probarbly having a Forum there to discuss further development, as well.

Regarding the function/procedure problem:

You are able to put one SELECT (postgres) statement into a  db_exec_plsql call, if you need to call more than one function you have to wrap them into a BEGIN ... END; Block.

I will upload all changes to the file storage after the 'Linux Tag' (next weekend).

Cheers

Collapse
9: Re: Jabber to-do (response to 1)
Posted by Talli Somekh on
please keep the forum for discussion of the jabber package here.

talli

Collapse
10: Re: Jabber to-do (response to 8)
Posted by martin hebrank on
Bjoern,
Ok, So what is going on in the tcl front? Unless someone has started with some work on it, I'm going to. Has there been any work done on jabber-procs.tcl? Or can I safely start using what's there to plan the namespacing?
Collapse
11: Jabber package and debian (response to 1)
Posted by Orzenil Silva Junior on
Hello,

I just put jabber package to work on postgresql this weekend. Great! Finally I have webstart applet working and I could registrate users with jb_register_aprove but I made some changes in jabber-procs.tcl and jabber-procs-postgresql.xql to get it really working.

Well, I'm thinking about providing modified debian jabber packages including mod_acs - and modified jabber.xml at install time of course - and  create new package maybe jabber-conference for conference distributed in *c* directory from jabber package. Maybe we could do the same with aolserver4 debian package including an aolserver4-nsjabber package. Anybody interested? Does anybody contact jabber and aolserver4 debian maintainers about this issue?

I checked there is a problem in debian woody repository (stable). I checked there is no jabber-aim, jabber-yahoo ... debian packages for woody - just sarge/sid - so I think it would be good if we had  this packages backported to woody. People feel more secure running stable release in servers.

Does anybody have a tutorial or howto about backporting debian packages? I checked debianplanet and backports.org and didn't find anything.

Thanks for your great work Malte, Bjorn and others.

Collapse
12: Re: Jabber to-do (response to 1)
Posted by Nima Mazloumi on
Will you commit your changes to CVS?
Collapse
13: Re: Jabber to-do (response to 12)
Posted by Orzenil Silva Junior on
Nima,

I will send changes to bugtracker. Sorry I did not do it yet because the files are in my home machine. I will do it tonight,ok?

Collapse
14: Re: Jabber to-do (response to 1)
Posted by Nima Mazloumi on
thank you very much :)
Collapse
15: Re: Jabber to-do (response to 1)
Posted by Nima Mazloumi on
Is jabber already integrated with dotLRN?
Collapse
16: Re: Jabber to-do (response to 14)
Posted by Orzenil Silva Junior on
Hi Nima,

I sent a patch with my changes to Jabber package for use with postgresql and aolserver 4 distributed by Bjoern Kiesbye

at bugtracker: https://openacs.org/bugtracker/openacs/patch?patch_number=545. If you could avaliate ... thanks..

Does anybody have a functional jabber-drop.sql to postgresql?
What about the command [tcl_to_oracle_list] at <fullquery name="get_a_friend">  in jabber/www/index-postgresql.xql file. Does anybody have some tip about this?

Collapse
17: Re: Jabber to-do (response to 1)
Posted by Bjoern Kiesbye on
Hi ,
the tcl_to_oracle_list proc is inside the  utils-extra.tcl file which you have to put inside  your servers /web/server0/tcl dir (utils-extra.tcl is not included in a standart oacs instalation, I think I should  replace it with a call to join ).

Their is a jabber-drop.tcl, I upload  a tarball including the jabber-drop.tcl and the latest bugfixes to the file storage, later today (I dont have access to cvs).

Collapse
18: Re: Jabber to-do (response to 17)
Posted by martin hebrank on
Or you could just modify all instances of [tcl_to_oracle_list $var] to be ([template::util::tcl_to_sql_list $var]) as that comes in the core tarball.

** Martin

Collapse
19: Re: Jabber to-do (response to 1)
Posted by Bjoern Kiesbye on
Hi,

the tarball with all fixes (and Martins jabber-drop.sql) is inside the file storage

The nsjabber tarball is inside the jabber/c dir, I did put the utils-extra.tcl inside the top-level dir, but I think Martins suggestion might be better (tcl_to_oracle_list should only be called once from inside jabber/www/index.tcl).

The package should now work with the newest oacs templating system (conference won't break).

The new Greenthumb Applet is included as well, but it doesn't work jet, it is split up into 2 .jar files (core and skin) and it seems that the core jar (E4-neu.jar) can not load the skin.jar (probably because it doesn't send a cookie with it's request). You can try to put the .jar files inside your server0/www dir and download them from that dir, but server0/www is usually disabled.

Does anyone know if (and how) public access (no cookies required) can be granted to a subdir of a packages www directory ?

Their is a jabber-portlet and dotlrn-jabber package (for .LRN) for Oracle but not for postgres (jet).

Hi Martin,
I'm sorry for letting you wait for a response again.

Did you start with the use of namespaces inside the jabber-procs.tcl ?
If you make a list like

jb_old_proc  jabber::util:new_proc

we can let a script replacing all old_proc_names with the new ones, (I have written a script which almost fit that need for the KNOPPIX cd, changing it will be easy).
This way it doesn't matter if the package changes meanwhile.

Collapse
20: Re: Jabber to-do (response to 19)
Posted by martin hebrank on
I have started with it. But I have not yet worked at all on converting. For the particular application that started this, I need to move many of the things that are currently done in web pages into tcl procs that can be called from elsewhere. Which is the part I'm working on.

Additionally, at the moment I don't need any of the conferencin procs. While I have written the namespace eval for the conferencing:

        # jabber::conference - All the procs for conference control.
        #  stuff that accesses jb_conferences_*
        namespace eval conference {}

I have not started any of the conversion of the old procs to the namespace.

By monday sometime I should have procs for such things as creating new jabber users (jabber::user::new & jabber::user::register), listing friends (jabber::user::friend::list) and adding/deleting friends (jabber::user::friend::add/delete).

** Martin

Collapse
21: Re: Jabber to-do (response to 1)
Posted by Tom Ayles on
Does anyone know if (and how) public access (no cookies required) can be granted to a subdir of a packages www directory ?

OpenACS 5.0 and later supports a resources directory for packages. This is located at /packages/your-package-key/www/resources/. I believe that no authentication checks are performed for items in the resources directory (it's intended for things like stylesheets, images and JARs). You can also specify the url to fetch items from this directory as /resources/your-package-key/foo.jar instead of /path/to/your/package/instance/resources/foo.jar. I'm not sure whether this is necessary to bypass the authentication checks in the request processor or not.