June 2007 Archives

June 30, 2007 11:52 PM

PEP in Openfire: Status Report

In my previous post I mentioned several Java classes in Openfire's codebase that would be useful to digest before I started my design phase for the PEP implementation. In this update I will go into more detail about these and several other classes as I describe the current design and initial implementation that I have been working on throughout the week.

Before I do so, here is a more concise version of this post for you 'tl;dr' folks out there: Initial design phase is complete and implementation has started on the PEP skeleton classes that are in place. Things are proceeding as planned and there are no major hiccups.

Now if that does not cut it for you, read on. :)

The design of PEP in Openfire is primarily concerned with the flow of IQ packets through the server. Openfire uses its IQRouter class to route particular packets off to IQHandlers depending on the namespace of the handler's IQHandlerInfo. I have written an IQHandler called IQPEPHandler which handles IQ packets with PubSub related namespaces. With the ability to intercept PubSub related packets I can determine if the packet is meant for Personal Eventing and act accordingly.

The IQPEPHandler class also has a map of users to PEPServices. PEPService implements the PubSubService interface and allows the server to interact with each user's PEP nodes using the PubSubEngine.

Here is a bit of eyecandy showing Psi's PEP related menu items enabled and a PEP node being created from the XML console: PEP

With this skeleton in place I will be continuing implementation at a nice pace. Gaston will be creating my own svn branch soon and once that happens I will import my code into that repository and continue my work in public.

June 21, 2007 12:09 AM

PEP Planning At The Jive HQ

Yesterday I took a trip downtown to the Jive Software offices here in Portland to meet my mentor, Gaston. After we met up and grabbed some tea from their break room, we made our way to his work area and started discussing exactly how PEP could fit into Openfire's codebase. I took note of several key classes that I may need to either modify or utilize in some manner. I will list them below for those curious:

When I begin my design and implementation phases I will go into detail about these classes and explain why they are note worthy.

I had a good time with Gaston at the Jive HQ and I left motivated. We both agreed to make our meeting a weekly recurrence.

Today I spent some time writing up a system test document. Here is an excerpt from its introductory paragraph:

The purpose of this document is to provide an overview of the system tests to be performed when implementing the Personal Eventing Protocol (PEP) in the Openfire Jabber server. These tests are designed to ensure all of the use case examples outlined in XEP-0163 (an XMPP extension protocol document) are accounted for. As of the time this document has been typed, there are very few (if not only one) Jabber client(s) that support PEP. Psi is one such Jabber client that has included early PEP support in its version 0.11 release candidate. This version of Psi is able to discover Jabber servers with PEP support and includes PEP functionality such as publishing Mood, Tune, and Avatar nodes. Thus, Psi will be the client used for testing where possible. In addition we will be observing the raw XML packets flowing from Psi's XML console and ensuring correct behavior with respect to XEP-0163.

After writing up a list of system tests I had a top-down view of the project and it gave me ideas about things that will need to be addressed during my design phase. Beginning the design is on my agenda for tomorrow.

Also, for those curious about Google's surprise for GSoC students this year, here it is. Signed by the author with "Happy Hacking." :) I thought it was a fitting gift.

June 11, 2007 8:25 PM

GSoC and Final Exams

All this week I have final exams at PSU hanging over my head. Needless to say, my initial work on PEP in Openfire has been slowed. I really do not know why PSU ends its spring term later than other universities. Anyhow, I am seriously looking forward to devoting my every waking moment to working on Openfire without any worries about my classes at the university. Summer break is near! All night coding sessions ahoy! :)

Now can someone please go get me another coffee? This haskell project for CS510 is not going to code itself.

June 01, 2007 11:52 PM

Intro and Looking Ahead

Google Summer of Code officially kicked off Monday and my weblog feed is now being aggregated by Planet-Jabber and Planet-SoC. As this is likely the first time most of you have read my text, allow me to quickly introduce myself.

I am Armando, a 21 year old Computer Science undergraduate at Portland State University in Portland, Oregon (which is also my hometown). I have been interested in Open Source Software development for about 5 years; sometime before I began enrollment at PSU, and sometime after I tried out a Linux distribution back then. Since that time, I have observed the development community through mailing lists and bug tracking systems for the software I enjoy the most, and I have submitted bug reports from time to time. More recently I have began development on my own small projects for fun, but I have always wanted to contribute something more substantial to the community that would be used by many people.

I thank the great folks of the XMPP Standards Foundation (XSF) for enabling me to do just that. This summer I plan to implement 'Personal Eventing' (PEP) to the Openfire jabber server. You can learn more about my project by reading its abstract. For technical details on PEP, check the relevant XEP document.

Earlier this week on Tuesday the XSF held an initial meeting for its participating students and mentors of GSoC. We were able to check in and pose any questions or voice suggestions we may have had. We have decided to hold further meetings on a weekly basis to ensure everyone is on track throughout the summer.

I will be receiving guidance from Gaston Dombiak, an Openfire developer. It is convenient that the Openfire guys are based out of Portland, as Gaston has invited me down to their offices so we can collaborate face to face (which should prove more effective I believe [and likely very fun ;)]).

My university classes do not end until mid-June, but I have been sneaking time away from studying to get going on my project. Here are some of the pre-coding tasks I have done this week:

  • Read through Openfire's developer documentation, taking note of the PubSub classes available which will prove useful
  • Installed Openfire on my workstation in my LAN
  • Discussed SVN access with Gaston which should be coming soon

Short term objectives:

  • Create system test plan document
  • Plan and create detailed design document

By the time classes end in mid June I will be well prepared and ready to begin implementation.

If you have read this far, (I promise future posts won't be as long winded and will satisfy your insatiable appetite for technical details) I will also mention that Google sent out a special surprise to participating students. I won't reveal the surprise just yet since others are still waiting on theirs, but I will say it was an awesome choice.

Thanks Google!