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.
Openfire 3.4.0 and later now includes my implementation
of PEP. Grab the latest version of Openfire here.
You can checkout the latest revision of the PEP
implementation from Openfire's svn repository here.
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.
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.
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 |