Comments API available

Agora, Horde's forum application, has been extended to expose a comments API to all Horde applications. This API can be used to attach discussions to arbitrary objects like news entries or gallery images. You can see this feature in action on my website.

Horde's Registry provides inter-application-communication through an abstract API. Applications can provide "named" APIs with a set of methods. In this case Agora is providing the "forums" API with methods like "postMessage" or "getThreads".

If another application wants to use this API, it calls a method like:

$registry->call('forums/getThreads', $parameters);

This is how Jonah, Horde's news application, allows to add user comments on news entries now. Using this API every Horde application can now add threaded discussions to any objects. Currently planned are comments for pictures in Ansel, the image gallery, and forums for courses in Occam, the e-learning application.

This feature has been implemented smart enough that these forums, only making sense in the applications' contexts anyway, are not shown in Agora's normal forum listing. And the forums, though completely available through the API, are only created after the first message is really submitted.

The association between an application's object and a forum is created by the application name and a unique ID that the application has to provide. This avoids name collisions between applications and doesn't require the applications to keep track of forum IDs.

One of the cool things of these Registry API methods is, that they are also available remotely through Horde's RPC server, currently as XMLRPC and SOAP methods. To avoid that everybody could now create new forums through a simple XMLRPC request, an additional callback check is made through the registry back to the application requesting a new forum.

This RPC mechanism is what I use to implement story comments on my website. If you read the "about" page, you know that the website is not powered by a Horde application but a CMS written in Perl. All website features provided by Horde applications and integrated into the normal layout are fetched by RPC calls; the news listings, the news stories, the comment threads, and the comment form.

This is all really new and has just been finished a few minutes ago, so it's probably not fail proof, comments and bug reports are appreciated.