From Organic Design
Revision as of 17:51, 29 December 2018 by Nad (talk | contribs) (See also)
Legacy.svg Legacy: This article describes a concept that has been superseded in the course of ongoing development on the Organic Design wiki. Please do not develop this any further or base work on this concept, this is only useful for a historic record of work done. You may find a link to the currently used concept or function in this article, if not you can contact the author to find out what has taken the place of this legacy item.

The Extensible Messaging and Presence Protocol (XMPP) is an open technology for real-time communication, which powers a wide range of applications including instant messaging, presence, multi-party chat, voice and video calls, collaboration, lightweight middleware, content syndication, and generalized routing of XML data. The xmpp.org technology pages provide more information about the various XMPP “building blocks”. Several books about Jabber/XMPP technologies are available, as well.

The core technology behind XMPP was invented by Jeremie Miller in 1998, refined in the Jabber open-source community in 1999 and 2000, and formalized by the IETF in 2002 and 2003, resulting in publication of the XMPP RFCs in 2004 (see the history page for more details).

Although the core technology is stable, the XMPP community continues to define various XMPP extensions through an open standards process run by the XMPP Standards Foundation. There is also an active community of open-source and commercial developers, who produce a wide variety of XMPP-based software.

If you have any questions about the use or development of XMPP technologies, feel free to participate in one of the open xmpp.org discussion venues hosted by the XMPP Standards Foundation.


Choices of XMPP server

Interesting XMPP extensions supported by jabberd2

Extensions we'd like to develop

  • Workflow: define processes and sequences, both human and computer (adding current work tree to contexts)
  • Schedule: this may already be done: adding a "booking" aspect to contexts
  • P2P: A peer-to-peer storage layer
  • Objects: this is basically RA: types & instances with search, create, view, edit contexts
  • Nodes: nodal model's class/instance structure incorporating workflow, axes, install/remove

XMPP & JavaScript

Strophe is a beautiful library for building XMPP applications in JavaScript (also available as a C library). It has a lot of nice features to help you build stanzas and respond to various event stanzas. It is built on top of the DOM, and unfortunately, the DOM is not always fun to work with. Luckily, we have an excellent DOM slicer and dicer that we can use alongside Strophe, the jQuery library.

Setting up a server on OD

  • apt-get install jabberd2
  • Ensure that the config XML files in /etc/jabberd2 all have a correct user in their MySQL sections
  • unpack /usr/share/doc/jabberd2/db-setup.mysql.gz and pipe it into MySQL

See also