BuildMonitor Development Notes
Usage Scenario
When I first developed BuildMonitor, I thought that the typical users would be something like a team of 5-10 developers working on a project, and they would be located in the same building.
After v0.1 was released and feedback started coming in, I learned that some users want to monitor 10-20 projects on the same Hudson instance, there are projects with developers scattered across different time zones, and there was someone who asked for non-English translations since Hudson itself has been translated to 7 languages.
Feed Processing
On v0.1 BuildMonitor attempted to parse a complete Atom feed using jFeed & jQuery, which was ok on my tiny test feed, but failed misserably on real projects with lots of builds resulting in large feed. The full Atom feed parsing slowed Firefox for several seconds and froze the user interface, specially on low-spec machines.
This had since been fixed by parsing only the minimum required elements and by limiting the number of builds to parse. I also decided to use plain DOMParser instead of jFeed.
Testing
Javascript and XUL coding was the fun part of the add-on development, testing was the annoying part. I haven’t found any way to automate Firefox Add-on testing, and as everyone knows, manual UI testing sucks.
Mozilla Add-ons Policy
Mozilla has been doing a great job with ensuring the quality of the add-ons with their policy which protects Firefox users from malicious add-ons. The policy requires user reviews for public access nomination, but at the same time the site requires user registrations / login to download a sandboxed add-on, something that most people like to avoid.
This introduces a chicken or egg situation. Add-on needs users to test and review the site, but the potential users and reviewers are chased away by the requirement to login. This is even worse for BuildMonitor because the intended audience is targeted to Hudson users, a much smaller portion of Firefox users.
L10N
New translation can easily be added to BuildMonitor by adding new locale files to /trunk/hudson/extras/firefox-extension/buildmonitor/src/chrome/locale/ .
As someone who is quite fluent in Indonesian, I attempted to translate BuildMonitor to Bahasa Indonesia (id-ID locale). And it turned out that translating IT terms to Indonesian wasn’t easy, even with the use of Glosarium. I left Indonesia before the era of Internet, and by now there are tons of Indonesian technical terms that I’ve never heard of before.
What’s Next
Figure out a way to implement automated unit testing, at least for the javascript code, consider using JSMock and JsUnit. Try using Maven to build BuildMonitor, to make it consistent with the rest of Hudson.
Shelfari Bug Report
I like Shelfari. I like it a lot that I even bother creating a bug report video.
In this video, I edited my profile, set my location to VIC, and saved it. Shelfari then displayed the correct location (VIC), but then I switched the screen to another page, and returned to the location details. This time Shelfari displayed just VI. I repeated it again with a different page and the same problem occured.
Please pardon the low video quality, I used Windows Media Encoder and Any Video Converter.
About a month ago, I contacted Shelfari and told them about a bug on their edit location functionality. I received a reply from their community manager and was asked whether I still had the same problem and that she couldn’t reproduce the error. I replied the email, confirming about the problem and provided a list of step by step instructions. I didn’t hear back from Shelfari since then.
Fast forward to the present, the bug is still here. I understand that this kind of bug might not be as important as other things on their priority list (like OpenSocial). But I guess as a huge fan of Shelfari, it’s the least I can do to help. On the other hand, if they open up a public API :)… imagine the possibilities.
Update (17/06/2008): Shelfari launched a new version today, nice look and feel touch up, plus lots of other updates. The edit location bug is still there though, should I create another video report with the new version?
Update (18/06/2008): Someone from Shelfari notified me via email that the bug is logged but didn’t make it to the release. I’m glad that they contacted me, thanks!
Update (18/01/2009): As much as I like Shelfari, I’ve decided to stop using it to manage my readings list because I want to cut down the number of online accounts scattered over various web sites. So I ended up using a Facebook app called Visual Bookshelf from LivingSocial. I had a look at Shelfari’s Facebook app, but they had a lot of complaints about the app not working at all, it’s just weird to abandon a Facebook app and losing potential users like that. But then again, the bug on the above video hasn’t been fixed either. Shelfari’s bookshelf UI is the best compared to other similar services, but it’s more important for it to work rather than to look good.
Projects: buildmonitor continuous integration firefox hudson
by Cliffano Subagio
10 comments
BuildMon v0.1 – Bringing Hudson Orbs To Firefox
Update: documentation and screenshots have been moved to Hudson wiki.
I’ve just released BuildMon Build Monitor v0.1, a Firefox Add-on that displays Hudson Build status on Firefox status bar panel. You can install it from https://addons.mozilla.org/en-US/firefox/addon/7522 .
This add-on is currently sandboxed (only registered users can click the ‘Add to Firefox’ button). It still needs at least a user review before I can nominate it for public access. So if you can help with a review, it will be highly appreciated. I’ve tested it on Firefox 2.0.14 and 3.0RC2 (Gran Paradiso), on Windows Vista and Ubuntu Gutsy Gibbon, against Hudson 1.211′s feed.
BuildMon uses Hudson orbs as the build status indicator.
- Blue orb (success) – all builds were successful.
- Yellow orb (warning) – there’s at least one failed build, but the latest build was a success.
- Red orb (failure) – the latest build failed, someone should fix it, the build breaker is not allowed to go for lunch or go home :p.

BuildMon development was quite straightforward. Mozilla Developer Center has a nice tutorial on Building an Extension, and XUL Planet’s Element Reference is very handy. The only problem I had was on the weird behaviour of the tooltip and popupmenu elements, it took me a while to figure out that placing them within the wrong parent elements resulted in the elements appearing when there are other add-ons installed, but not when it’s the only installed add-on.
BuildMon uses jQuery, Datejs, Pretty Date, and jFeed. I slightly modified jFeed to pass error callback from jQuery.ajax .
Hope you’ll find this add-on useful, and remember… thou shalt not ignore the red orb!
I’ve been using Hudson since its early version (way way before m2 support), mostly for my personal projects. Back then I used CruiseControl at work, and I also briefly looked at Continuum as another option. Hudson has by far been the best at providing the right balance between convenience and flexibility, mad props for that.