Michael Peters - Improving Smolder


Title: Improving Smolder

Name: Michael Peters

Grant Manager: Adrian Howard

Duration: 35 Hours

Started: April, 2007

Synopsis:
Smolder (http://sourceforge.net/projects/smolder) is a web-based smoke test aggregator. Meaning it allows developers and QA testers to upload or monitor the test results from their projects. It works well, but has several shortcomings that if addressed would allow for wider adoption (and hence improvement) and to be more universally useable to the Perl community as a companion to CPAN and CPAN Testers. This work would address those issues.

Deliverables:

  1. Remove custom XML format in favor of using plain TAP and TAPx::Parser.
  2. Extend Smolder to handle small CPAN style modules more easily and automatically.
  3. Setup a Smolder server for the CGI::Application community to serve as a testing ground and public display for their 110+ CPAN modules.
  4. Add per-project and per-developer RSS feeds as an alternative to email notification.

Project Details:
Smolder currently runs tests expecting TAP as an output. However since there were no standalone TAP parsers when Smolder was originally written, "smolder_prove" (a derivative of "prove") converted that TAP after the tests were run into XML (or YAML) so that it could be sent to the Smolder server and parsed there. Now with the ever increasing stability of TAPx::Parser this is no longer an issue. This task would involve fixing Smolder to accept plain TAP and use TAPx::Parser to parse it. We'll leave the XML/YAML support as-is, but deprecate it in favor of using TAP.

To make Smolder more useful to the Perl community it needs to not only handle large, complex projects (which was the reason it was built) but also handle smaller CPAN sized modules and applications. To do this Smolder can not only act as a repository of test results, but should also be able to run those tests itself in an automated fashion. Support will be added to fetch (or update) a project from an SCM (SVN initially, but will be flexible enough to add others later). If changes have been made since the last time it checked, the build/test cycle will be run and the results stored and the normal notification cycle will occur.

To make this work with the current CPAN module build/test cycle using ExtUtils::MakeMaker or Module::Build I will use, verify and extend the work already started by Andy Armstrong, Ovid and the
Perl-QA community (http://beta.nntp.perl.org/group/perl.qa/2007/01/msg7759.html) to allow the "TAPx::" family of modules to be injected into that cycle so that we can extract the full report.

After Deliverable #2 is finished it will be possible for developers (or communities) to setup a Smolder server to test their CPAN modules automatically as soon as any changes are made. It will also allow module users to submit better bug reports if the test suite is failing on a particular OS or Perl version. Simply run the build/test cycle (providing EU::MM or M::B with the correct arguments so that TAPx::Parser is used) and upload the results to the Smolder server. Much better than the typical copy-paste-the-terminal-into-an-email method used today, and that report can be referenced by URL in bug reports or other emails.

This Deliverable will focus on setting up such a Smolder server for the CGI::Application community for as many modules as the community and authors wish to add. I will find a donor for the hardware which
shouldn't be too difficult since Smolder doesn't use many resources.

Currently Smolder sends email notifications if there are test failures. Extend this by adding an RSS feed (using the newly re-furbished XML::RSS). These feeds will be customizeable per-developer as well as providing public feeds per-project.

Project Schedule:

  • Start off with the TAPx::Parser integration. - 10 hrs
  • Extend Smolder to checkout project code via SVN - 5 hrs
  • Extend Smolder to run checked out code and make sure was can get full TAP reports from EU::MM and M::B - 10 hrs
  • Add RSS feeds - 5 hrs
  • Setup Smolder installation for CGI::Application community. - 5 hr

Biography:

I am a Perl/mod_perl developer living in the Washington, DC suburbs and working for Plus Three, LP (http://plusthree.com). Most of my work involves building communication and fundraising tools used by political and non-profit groups througout the US. One of my main responsibilities at Plus Three is to build and maintain our testing tools and infrastructure that we use on our core products.

I'm an active member of the CGI::Application, mod_perl, Krang (http://krang.sf.net) and Perl-QA communities. I maintain several modules on CPAN (http://search.cpan.org/~wonko/) and contribute to
several more. I am also the primary developer of Smolder and have even spoken about it at the Pittsburgh Perl Workshop in 2006.