Summer of Code 2006 - Final Report

2006-08-21

Project Title

IETF Event Notification Service

Synopsis

The IETF's working groups are constantly changing and evolving with new documents and ideas. Currently, users must visit the website and browse through overview pages to find new updates to drafts, last call announcements, published RFCs, and new working groups. There is an apparent need for an event system that can notify users of updates of interest in a timely manner.

About this document

This document serves as a summary of the progress made on the ietfnotify project throughout the duration of the Summer of Code 2006 program. The following is a direct comparison between the final project state and the goals set in the project proposal. The open source repository of code for the ietfnotify project may be accessed through the SourceForge.net project page

Deliverables

  1. Event format - A format for delivering new events to the ietfnotify has been decided upon and is documented within the doc/ directory of the program's source code. Within the first few days of the Summer of Code, it was decided that a format similar to email headers would be preferable to an XML based format because of simplicity and it's ability to be human readable with little to no documentation.
  2. Storage system - The ietfnotify daemon has methods to store and retrieve events from a filesystem based structure using a unique UUID as a search key. This type of storage makes sense in comparison to a database because it is less volatile, requires minimal additional resources beyond the operating system's builtin functionality, and performs reasonably considering current and future usage patterns.
  3. Web interface - The web interface portion of the project allows users to manage their subscriptions and view archives. The subscription management functionality is working as expected though the archive viewing capabilities are limited to a fairly basic set of features as this was not seen as a primary goal of the project and took a lower priority than more critical portions of the application.
  4. Notifier - A flexible daemon has been implemented that listens to a socket for events then parses, archives, and sends notifications out based upon users' subscription settings. An extendable interface has been defined to allow developers to add additional notification types in the future by simply writing a new method and adding a reference to a list. Currently, the following notification types exist: RSS, Atom, Jabber, HTML Email, and Plaintext Email.

Project Details

  1. The implementation language is Python using MySQL statements for managing subscriptions, the Django templates for styling notifications, and HTML for the web interface. Django was chosen for templating to make it easier for administrators to customize the notification format to their liking without needing to know the Python language.
  2. Apache, Python, and MySQL are used for the web interface, daemon, and subscription storage respectively. The web interface also works under the lighttpd web server. Python 2.3 and 2.4 have been tested though other versions may be capable of running ietfnotify with little or no modification. MySQL 4.x and 5.x have been tested.

Project Schedule

  1. Planning: This stage was completed on May 27
  2. Format definition: This stage was completed on May 27. Additional changes to the fields that the daemon must accept are ongoing. The daemon has been written such that changes to the field naming are trivial to accomodate.
  3. Storage design: This stage was completed on June 2 (Revision 12). The storage of subscription data was moved from CSV to MySQL on June 9 (Revision 57)
  4. Web interface: This stage is in progress. The web interface is working and satisfies the basic functional requirements but it still needs more work to complete the implementation of templating and archive viewing.
  5. Notifier: This stage is in progress. The notifier meets the functional requirements set in the planning stage, but is in need of heavy testing and code refactoring in some places. However, I still consider the notifier to be of the quality expected from version 1.0
  6. Testing and debugging: This stage is in progress. Testing and debugging of an open source project is an ongoing process and will continue throughout the life of the project. A public 'beta' release of the service to end users will begin on or before September 2. I will continue to handle bug reports and feature requests as time permits.
  7. Enhancements: Of the enhancements listed in the proposal, two of which have been integrated into the project. Jabber notifications are available and the web interface fits my definition of 'pretty images' by supporting external templates.

Project Overview

I feel that in the timeframe of the Summer of Code, I have made significant progress bringing the ietfnotify project from the planning stage through the first beta release. Throughout the duration of this project I have learned how to work in an open source development environment and have gained a more detailed understanding of software development in general. I will continue to remain active in the development of the ietfnotify and the open source

Next post - MIA