Pulse
Pulse is a system for tracking your projects and the resources you use by crawling around sources of information and telling you useful stuff. It was originally designed to serve as a documentation tracker for Gnome to help writers and editors see what needs to be worked on. It has grown into a system that can provide useful information to programmers, translators, testers, and just about anybody else involved in making software work.
A test instance of Pulse can be found here:
http://www.gnome.org/~shaunm/pulse/web/
Note that we don't run the crawler on www.gnome.org, so this instance is only updated sporadically when Shaun gets around to it.
You can get Pulse from Gitorious with the following command:
git clone git://gitorious.org/pulse/mainline.git
Pulse is developed primarily by Shaun McCance.
Planning
We are always looking to add useful new functionality to Pulse. Occasionally, we like to add useless functionality as well, if it's fun. Here are some ideas:
How Pulse Works
Pulse consists of two components: a crawler and a web application. The crawler, called pulsate, is what's responsible for finding information, filling up the database, generating graphs, etc. Its functionality is provided by Python modules, each of which does a particular task.
The web application is responsible for displaying information to the user. It is largely a read-only system, although it does modify the database for certain account-related stuff.
Pulse recently switched to Storm for its database access. Previously it used Django's ORM, and long ago it used SQLObject.
Pulse outputs pages using a custom-made object-oriented page construction module. It is designed to encourage consistency throughout Pulse's page and reduce the amount of display logic throughout the rest of the code. No, Pulse does not use a template system for output. No, I'm not really interested in having it do so.
The general trend in Pulse is to separate functionality into smaller pluggable modules. This allows us to teach Pulse about different types of systems without modifying its core. That said, our approach is to get stuff working first, then figure out how to abstract. Premature abstraction is the other root of all evil.
