Jeremy Grosser synack@csh.rit.edu 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 for drafts, last call announcements, published RFCs, and new working groups. There is an apparent need for an event system that that can notify users of updates of interest to them in a timely manner. DELIVERABLES The following deliverables can be expected upon successful completion of this project: 1. Event format - Define a format for events to be submitted to the notification system 2. Storage system - Define a system for the storage and retreival of events. This will probably be implemented as a database schema 3. Web interface - Build a web interface that allows users to select and subscribe to a subset of events 4. Notifier - Build a program or set of programs that send the actual notifications a. Static (RSS, Atom, HTML) - Update static files on a web server b. Push systems (Mail) - Send SMTP messages In addition to the above deliverables, the assigned mentor will be able to keep track of this project's progress via regular blog posts as well as phone and email. PROJECT DETAILS 1. Implementation will be done using the Python language unless it becomes desired or neccessary to use another means of implementation. 2. The following applications will be used unless a better solution is presented: a. Apache web server (http://httpd.apache.org/) b. Python (http://www.python.org/) c. MySQL (http://www.mysql.org/) PROJECT SCHEDULE 1. Planning (1 - 2 weeks): Define concrete goals for each of the assigned tasks (eg. UML diagrams) 2. Format definition (1 - 2 weeks): Define a format and protocol for the submission of events 3. Storage design - (1 - 2 weeks): Define a database schema and the general flow of data (event -> database -> notification) 4. Web interface - (2 - 3 weeks): Build a web interface for subscribing to notifications. This should entail a basic web app that stores event destination information in the database (email addresses, etc.) 5. Notifier - (2 - 3 weeks): Build a program to push new events out to subscribed clients. Should update static pages on the web server and send out emails. 6. Testing and debugging (2 weeks): Present the notifier as a beta application for general use. Live data and services will be used. Bugs should be fixed as they are found. 7. Enhancements (remaining time): Once all of the previous requirements are met, additional features and enhancements (within reason) should be implemented. This includes, but is not limited to: - Additional notification mechanisms (Growl, Jabber, SMS) - Web interface enhancements (AJAX, Pretty images) BIOGRAPHY I am currently pursuing a BS in Applied Networking and Systems Administration at Rochester Institute of Technology. Throughout middle school and high school I taught myself (using Google) web development, Unix, and programming skills. I spent the summer of 2005 pursuing an interest in distributed computing at Corning Community College in Corning, NY by helping to build a small distributed systems lab. I have not contributed to any major open source project before but have been an advocate of open source activity for a number of years. AMOUNT REQUESTED I am submitting this proposal as part of the Google "Summer of Code" project and as such am requesting the full stipend given as part of that project.