Subject: [Tools-team] Summer of Code project 2006 - Final report.

From: Henrik Levkowetz <[email-masked]>
Date: Wed, 23 Aug 2006 18:40:20 +0200

Hi,

Below is the final report from the IETF Tools' Google Summer of Code(SoC)
project, written by the SoC student, Jeremy Grosser

----------

Jeremy Grosser
[email-masked]

Summer of Code 2006 - Final report

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 [1]. The open source repository of code for the
ietfnotify project may be accessed through the SourceForge.net project page
[2]

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
community.

REFERENCES
[1] http://www.csh.rit.edu/~synack/soc_ietf.txt
[2] http://sourceforge.net/projects/ietfnotify/

_______________________________________________
Tools-team mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/tools-team