Pulse

People who hang out on -hackers will have already heard me talking about Pulse.  No, not the awesome audio server.  That’s PulseAudio.  Pulse is my project tracker.  A crawler periodically rumages through things that are relevant to your software project and sticks things in a database.  Then we can see nice summary pages like this page for the Gnome 2.22 desktop.

At first glance, it might appear I’m just trying to clone CIA or Ohloh.  While I’ve taken some ideas from each, Pulse serves a different purpose.  You might compare it to Launchpad, although Launchpad is an active project manager, whereas Pulse is a passive project tracker.  marnanel described it as “Facebook for Gnome”.  No, I am not going to add poke.

Pulse grew out of the documentation team’s need for an automated documentation tracker.  We really need to be able to see, at a glance, what documents there are in a given release set.  We need to see who’s working on what and how far along those documents are.  And we need to see what modules should have documentation, but don’t.  My obsessive abstractionitis, however, led me to create a system that tracks everything.

If anybody’s interested in playing with it, the code is in git: http://www.gnome.org/~shaunm/git/pulse.git .  Here’s a rundown of things abrewing:

  • If you go to any module’s page, you can click the shortened comment of a commit for a popup with the full comment.  If this happens to be any module on svn.gnome.org, you’ll also see a yellow bar that lets you get diffs and info on svn.gnome.org/viewvc.  I’ve special-cased svn.gnome.org here, which I don’t like doing.  A general-purpose “find the webview for this SCM server” would be great.
  • I want to track mailing lists.  I think I’d rather avoid subscribing Pulse to any mailing lists, and instead just periodically poll each list’s web archives.  That much is pretty straight-forward code.  What I need to figure out is how to find the mailing lists associated with any given module or team, and how to find the web archives associated with any given mailing list address.  The less I have to special-case anything, the better.
  • I really want to track bug databases.  For any given module, I want to know what bug databases to use.  Notice the plural.  I would love to show stuff from distros’ downstream bug systems.  For any given bugzilla product, I want to know its components, and the default assignees and QA contacts for those components.  This is, by the way, incredibly useful for the documentation team, as we could quickly see what belongs to gnome-user-docs-maint@gnome.bugs.
  • If we could semi-reliably find FOAF files for people, we could show a lot more information about them.

Basically, Pulse should be useful, not just a collection of random interesting facts.  (Random interesting facts are great too, but only in the context of an otherwise useful system.)  If you’re a maintainer, I want the Pulse page for your module to be useful to you.  If you’re an occasional contributor, I want Pulse to make it easier for you to contribute.  If you’re a documentation writer, I want Pulse to help you find documentation to work on.  et cetera, et cetera.

Comments, suggestions, criticisms, flames, and praises welcome.

7 thoughts on “Pulse”

  1. ATOM, RSS, RDF, and whatever other machine-readable formats would help are certainly on the radar. Pulse could then function as a base body of knowledge upon which other systems could be built. I haven’t yet added these things because, well, there’s a lot of information in Pulse, and it’s not yet clear to me what would be most useful.

  2. I think that this kind of a system would be most helpful to contributors (to some degree), and anybody who wants to check out what’s going on with the development of a certain project. I’m not sure how really useful would it be to maintainers, who already “know everything” about their projects, except that it is indeed nice to occasionally take a look at such a unifying “collection of random interesting facts”.

    So then it would be definetely good to show most recent mailing list posts, with links to complete archives, and latest bugzilla entries. A separate page could show links to all components etc. Perhaps also a post or two from developer’s blogs – or an even more clever way would be to display only posts tagged as “project”; you would just need to announce it somewhere so that everyone would start doing it properly. Although I’m not sure if it would be possible to do it completely automatically – developers would probably need to create some “GNOME Pulse” profile – integrated with existing infrastructure? – and specify feed URLs.

  3. Marko, while maintainers do tend to know everything developer-related about their projects, Pulse can be a good way for them to see how the documentation and translation teams are keeping up with them on their modules. Even for the things the maintainers know about, though, the Pulse page for their module can serve as a quick start page with links to things they want to see when hacking.

    But your point is taken. The real value lies in presenting information to people who aren’t already in the know. And that includes, in large part, new and occasional developers.

    Blog aggregation is something I’ve thought about as well. I wouldn’t want to turn Pulse into a full-blown Planet, but links to recent blog posts would be nice. Note that a number of projects have their own blogs, independant of the blogs of their maintainers, and we could feed these into project pages.

    I have a fairly flexible mechanism for putting data into Pulse manually. My general workflow is often to put data in that way, write some processing code, and then figure out how I could get that data automatically. A few things just have to be entered manually, as they’re the starting point for everything else.

  4. Really cool!

    For the activity view/commits I would really like to see a split between translation and code. For me as developer, translation updates are not that interesting so it would be good to be able to filter them.

    Another thing is that you should either rename “Developers” to “Maintainers” or at least import the developer list from bugzilla.

    But really rocking!

  5. I’ve thought about trying to identify translation and documentation commits. I do know what domains and documents are in the module, and which directory those are in. So I could see if all the files of a given commit are in a particular directory. I’m not sure I’d want to use only code commits for the graph though. To me, it’s interesting to see the effect translations have on the total activity. But certainly being able to filter out non-code commits in the activity listing could be useful.

    As for developers, maintainers have a star next to their names. Other types of developers will be identified by other badges. It’s just that, at the moment, the MAINTAINERS file is the only source of information for developers. That will certainly change once I get bugzilla stuff integrated. Suggestions for other sources of developers are welcome. (You can see, for instance, on documentation pages we have maintainers, authors, editors, publishers, and generic developers. But I don’t have icons yet for anything other than maintainers.)

Comments are closed.

Creative Commons Attribution 3.0 United States
This work by Shaun McCance is licensed under a Creative Commons Attribution 3.0 United States.