Openfire

PEP in Openfire

Personal Eventing via Pubsub (PEP) is a recent addition to the Extensible Messaging and Presence Protocol, the core protocol of the Jabber Instant Messaging network. Personal Eventing allows for a user's Jabber ID to act as a virtual publish-subscribe service enabling the user to publish notifications of event changes relating to their personal state. Subscribers to a user's PEP service can then be notified of information such as User Mood (how the user is feeling), User Tune (music the user is listening to), or User Geolocation (current geographical location of a user). This project is a result of my participation in Google Summer of Code 2007. The primary goal set out in its abstract is to implement PEP in Openfire, a Jabber server written in Java.


 

Project Finished

Openfire 3.4.0 and later now includes my implementation of PEP. Grab the latest version of Openfire here.

Source Code

You can checkout the latest revision of the PEP implementation from Openfire's svn repository here.

Known PEP-enabled Public Servers

  • igniterealtime.org

If you are looking for a Jabber client to test PEP with, I recommend using either the latest version of Psi or Coccinella from their respective versioning repositories.


If you wish to add your server to this list, send a message to one of the addresses listed in the contact section of my weblog.

Programming Log

Details of the implementation can be found in posts on my programming weblog in the 'Google Summer of Code' category. There are a lot of technical details about the project along with screenshots from tests with Jabber clients.

Completion Status

All sections are implemented.


Below is a table that gives an overview of which sections in the specification have been implemented and verified for correctness. (Updated: 2007-08-10)


Section of XEP-0163 Implemented Verified (c2s) Verified (s2s)
Account Owner Service Discovery Yes Yes Yes
Account Owner Node Creation Yes Yes --
^ Auto-creation when publishing to nonexistent nodes Yes Yes --
Contact Service Discovery Yes Yes Yes
^ Communicate PEP support for contact discovery Yes Yes Yes
^ Return appropriate PEP items respecting node access models Yes Yes Yes
Contact Subscription Yes Yes Yes
Account Owner Publishing Yes Yes Yes
Contact Notification Filtering Yes Yes Yes
Generating Notifications Yes Yes Yes
Sending the Last Published Item Yes Yes Yes
Recommended Defaults Yes Yes --
Cancelling Subscriptions Yes Yes Yes