Jenkins BuildMonitor – 20000 Downloads Later

Yesterday, Jenkins BuildMonitor Firefox Add-on surpassed 20,000 downloads. I uploaded the first version on June 8th, 2008, so that’s almost 3 years ago, and there have been 26 releases since.

On average, there are about 2500-2700 active daily users on weekdays. That became the basis of my release mantra: “Let’s not piss 2500 people off.”

The top locales are en-US, de, en-GB, fr, ja, pl. We’ve got en, fr, and ja locales covered Any German or Polish translator around? please feel free to submit a pull request.

While the top operating systems are Windows, Linux, Darwin, Solaris, FreeBSD.

And as you know, this add-on is now named Jenkins BuildMonitor, though in practice it should still work with both Jenkins and Hudson just fine. As for the project management, I’m staying with the original Hudson – now Jenkins – community, source code on GitHub, mailing list on Google Groups, etc.

Hudson BuildMonitor v1.5.5

FIFA World Cup 2010 update: Australia was demolished by Germany 0-4.

After ten months since the last public approval (v1.0.2) and four review rejections from the Mozilla editors, Hudson BuildMonitor v1.5.5 was finally approved a couple of weeks ago.

This version contains a major refactoring effort, attempting to separate the generic JavaScript code from the Firefox specific code. The goal was to make it easier for me to create a Chrome extension version of Hudson BuildMonitor, but of course I never had the time to do it and by now there are already two Chrome extensions out there, Hudson Extension by sanitz and Hudson Monitor by Henning Hoefer.

What I didn’t know back then when I started the refactoring effort was that Mozilla introduced an add-on verification suite about a month after v1.0.2, and that the Mozilla editors started working on reducing global namespace pollution. Those two things were good of course, it’s just that I had to put more sporadic efforts to work on those changes, which then stretched this release even longer.

Some of those changes are:

  • Everything is now namespaced, and I really mean everything. The editors even picked up un-namespaced external libraries, which means Dean Edward’s Base is now name_edwards_dean.Base .
  • setTimeout usage should be replaced by nsITimer.
  • Login details management should use *drumroll* nsILoginManager.
  • Datejs can’t be used anymore because it extends native Date, I replaced it with Matt Kruse’s Date library.

Out of the bug fixes included in the 1.5.x releases, I’m particularly happy with:

  • Finding a workaround for HUDSON-2979, a problem that has been a blocker for OS X users. I bought a MacBook Pro about six months ago and was finally able to investigate this error myself.
  • Fixing the mysterious error with French translation files. It used to work in older versions prior to v1.0.2 because the property files were UTF-8 without byte order mark and they contained non-ASCII characters, then at one point it was accidentally encoded as ISO-8859-1 while still having those non-ASCII characters which then broke the add-on. To avoid this problem from happening again in the future, I decided to take the safer option and unicode-escape those non-ASCII characters.

Working on Hudson BuildMonitor on and off for the past two years (the first release was on 8 June 2008, wow, has it been _that_ long?) has been a good opportunity to revisit JavaScript, a language many developers used to look down at. I agree with Douglas Crockford that JavaScript has been misunderstood, checkout his talk on JavaScript: The Good Parts at Google, and with the emergence of server side JavaScript, I believe this language is going to take off next year.

And to those who are still using Hudson BuildMonitor, thank you.

BuildMonitor v1.0

It’s been a long time since the last one (v0.9.2 – November 2008), but I’ve finally managed to release Hudson Build Monitor v1.0 .  This add-on is still in the sandbox, I’ve been waiting for approval from the Mozilla editors for the last 9 months, so unfortunately you still have to login to download it.

A new feature in this release is build executor monitoring. This feature will work only on Hudson instance feeds (non-job feeds), and you have to enable it via Prefereces window -> Feeds tab -> Enable executor monitoring check box.

The executor status will be displayed next to the build status. It’s blue when one of the executors is running a build, red when one of the executors is stuck, and grey when all executors are idle or offline.

Another new feature is the support for HTTP Basic Authentication, this has been requested by a number of users with password-protected Hudson feeds. You can set the username and password in Preferences windows -> Network tab -> Username and Password fields.

Thanks to Jason Meridth who helped with testing this feature and wrote up his experience.

Other minor changes in this release:

  • ‘Add Link To Hudson Build Monitor’ menu only appears when you’re right clicking Hudson feed links (for all, for failures, for just latest builds), and no longer for all links.
  • Preference window is now tab-ified as seen from the above screenshot.
  • Hudson icon tooltip on Firefox status bar now displays a message that recommends user to add Hudson feed link via right click menu instead of manually adding the URL to Preferences window Feeds section. This feature was already implemented in v0.9 (released in November 2008) and documented on the wiki page, however, there are quite a number of users who are still not aware of it and keep adding the feed URL manually following the old tooltip message.

As usual, translations have been updated thanks to Eric Lefevre-Ardant and Seiji Sogabe. Unfortunately I had to temporarily disable the French translation in v1.0 due to something wrong with the file/text(s) which breaks the add-on. I’ll do a patch release when it’s all sorted out, in the mean time, users with French locale on Firefox will get the default English texts.

Build Executor Monitoring

Here’s a sneak peek of Hudson Build Monitor‘s new feature, the ability to monitor build executors from Firefox statusbar panel. This feature was requested by Espens back in July last year. Espens was one of the earliest users who raised lots of ideas and feature requests. Thanks Espens!

In retrospective, I should’ve implemented this feature much earlier as I found out recently how useful it is to be able to keep track of the currently running builds and the status of the executors. Having a stuck executor is like losing a leg, sometimes you end up with a lot of builds waiting in the queue just because a master/slave doesn’t have any idle executor.

I’ve been monitoring Apache Hudson instance, and that jspf-trunk build has been stuck for the past 3 days. If the master instance is set up following the 1 executor per 1 CPU suggestion, that’s like wasting 1 CPU resource not doing anything (if the box is dedicated for Hudson).

Build executor monitoring will be included in v1.0 release about 2 weeks from now.

Another  good news is that Hudson Build Monitor Firefox Add-on was featured in the tools tips section of JavaTools Community Newsletter on December 29th, 2008. It’s a few months old, but someone just told me about it :p. Thank you!

BuildMonitor v0.9.1 – Oui!

BuildMonitor v0.9.1 was released yesterday. This is the first version with French l10n bundled, thanks to Eric Lefevre who submitted the translations.

I added a new ‘Build’ menu to trigger the build of a particular job. This menu item only comes up on a job feed.

Another little improvement is a new option on the preference window to hide the feed name on Firefox status bar. This is useful when you need to monitor many feeds.

… starting to look like a weather forecast.


I got this error message on Firefox Error Console after adding fr-FR locale to BuildMonitor, which caused it to fail initialising the status bar feeds.

1="[Exception..." 2="Component" 3="returned" 4="failure" 5="code:" 6="0x80004005" 7="(NS_ERROR_FAILURE)" 8="[nsIStringBundle." 9="<div" id=":sd" 10="class="ArwC7c" 11="ckChnd">GetStringFromName" language="Error:"]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: XStringBundle :: getString :: line 17"  data: no] Source File: XStringBundle Line: 17</div>

Googling gave me some clues but still nothing obvious to solve the problem. At first I thought it has something to do with the non-ASCII characters, so I did a binary-replace on the property values, but still no luck. It’s only after I cat-ed the file then I noticed an empty space before the first property key. This empty space turned out to be a weird character that didn’t show up on Eclipse text editor, gedit, and vi.

I still don’t know what that character is. Here’s what Eclipse compare editor showed when I compared the cleaned up line with the original line, notice the non-ASCII character before monitor.init property key.

And BuildMonitor speaks French after that character is removed. Parlez-vous anglais?

Update (20/11/2008): This problem kinda irked me, so I investigated it further.

The weird character is actually the ISO-8859-1 character for UTF-8 byte-order mark. It seems like XStringBundle expects ISO-8859-1 property file, hence interpreting the BOM as part of the monitor.init property key.

A handy tool to inspect the BOM is octal dump, where you should be able to see EF BB BF hex at the beginning of the file. And instead of manually cleaning up the property key, I should’ve used native2ascii.

BuildMonitor v0.9 – Usage Video

BuildMonitor v0.9 has been released, you can get it from the usual place.

The most useful improvement from this release is the ability to add new feed via right click menu of a link. Other improvements include the ability to remove the feed via status bar right click menu or from preferences menu. It’s also now possible to rearrange the order of the feeds via preferences menu.

I made a quick video (using recordMyDesktop) showing how easy it is to monitor Hudson feeds using the Firefox Add-on.

On l10n front, BuildMonitor has been translated to Japanese. Thank you, Sogabe-san.

I had to borrow a laptop with Windows to take this screenshot. I think Firefox 3.0.3 locale switching on Ubuntu is borked, the web pages do pick up the correct locale, but the add-ons ignore it.

BuildMonitor v0.8

BuildMonitor v0.8 is finally here, you can download it from Firefox Add-ons page. This release has a number of nice improvements…

Multiple feeds monitoring

Now you can monitor multiple Hudson instances by configuring their feeds in BuildMonitor preferences. All feed status icons will be displayed on the Firefox status bar, you can mouseover or click each icon to get the build details for the corresponding feed.

Feed status display

The way BuildMonitor uses the orbs to represent the health summary of the feed in v0.7 has been a source of confusion to the users. Many users thought that the orb indicates the latest build status, and not the overall health of the feed.

Another source of confusion is the fact that some users use a Hudson feed with multiple projects, some use a Hudson feed with only 1 project, and some use job-specific feeds, which led to different expectation of what status should be displayed.

With that, I decided to (1) make the status icon configurable with an option to display the overall feed health or the latest build status, and (2) use the weather icon for the overall feed health, while the latest build status keeps using the orbs.

Sound and alert window notifications

v0.8 now has configurable options to enable sound and alert window notifications when there’s a build failure.

When enabled, BuildMonitor plays a shattered glass sound (kudos to The Freesound Project) following a build failure. While alert window notification is enabled by default, it shows an alert a la Growl at the bottom right corner of your desktop.

Note that alert window on OS X only works since Firefox 3.

Green is the new blue

Quite surprisingly, I got asked a number of times about why Hudson uses blue to indicate success (to which I just pointed to this thread and that thread) and why can’t BuildMonitor uses green instead.

I was quite reluctant to add green-for-success as an option in BuildMonitor considering that Hudson still uses blue and the option to use green is not there yet. But I guess if the users want to use green by configuring via BuildMonitor’s preferences menu, then at least they’re aware of the difference, so this option is included in v0.8 . Blue is still the default though.

Personally, I like blue better :p.

Crisper icons

I added several new icons from Tango Project in v0.8, and updated the existing icons with new PNGs having transparent background.

Open page in new/current tab

Now you have the option to open build pages in a new tab or the current tab.

The preferences page now looks like this in v0.8…

Firefox add-on status

The add-on is still listed as experimental on’s sandbox, it has been 4 months since I nominated it for approval. The AMO editors are still working on clearing up a huge list of add-ons to approve, I don’t know when BuildMonitor will be approved. I agree that the approval process can scale, but it doesn’t.

With almost 400 active BuildMonitor users (according to, it would be very nice to auto-upgrade all of them. But since we’re still waiting for approval, you have to login again to download, sorry.

Please let me know what you think about this new release. Any comments? suggestions? criticisms?

Multiple Feeds Monitoring

Patrick Struhs left a comment on Hudson Build Monitor page, suggesting “A nice feature would be to be able to monitor more than one server easily,” and that’s what I’ve been working on sporadically this week. I started with the statusbar panel, the goal is to keep the UI minimal but still provide enough information. I’ve also got the multiple feeds processing pretty much done.

This is how the statusbar panel looks like in 0.8-SNAPSHOT. I used Tango Icon Library to keep it consistent with Hudson. The above screenshot shows the status of six feeds, the first one is a Netbeans feed with a warning, the second and fourth ones show an error icon indicating a problem with the urls, the third one is a JBoss feed – currently downloading, the fifth one shows the no-build icon, and the last one shows that the feed is currently queued waiting to start the download.

Next up… preferences and right-click menu revamp.

Kaptcha v2.3 And BuildMonitor v0.7

Jon released Kaptcha 2.3 which includes a patch I submitted about 2 months ago. This patch replaced imaging library with pixels. If you look closely at the new kaptcha image…

you will notice that the water effect (at the centre of the image) is now visible with pixels, whereas it wasn’t at all with imaging library in the original simplecaptcha implementation. I tested various settings of the water effect, and opted to minimise the effect so lowercase letters on a small font size are still easy on human eyes. Another change with 2.3 is the ripple effect on the characters. It’s not too obvious on the above image, but it’s more visible on uppercase letters with larger font size.

All in all, I think Kaptcha is a nice simple library that does the job. I started using it with Blojsom SCode Plugin, and contributed some improvements back to Kaptcha. Another (more popular) java-based captcha library is JCaptcha, which is also used by SCode Plugin. I’m not a big fan of JCaptcha for the simple reason that their generated captchas are hard to read. It’s interesting that similar comments were made on Hudson mailing list.

Now, on to Hudson Build Monitor. I just released BuildMonitor 0.7 last night. This version is compatible with the recently released Firefox 3.0.1, and it includes id-ID l10n as the first translation. Next version will have build executors monitoring. I’ve started working on the UI, but the data feed is yet to be added to Hudson core.

As you can see from the add-on page over at, this add-on still hasn’t received an approval for public access. I understand that the AMO editors (which all/mostly are volunteers) have been working hard with the crazy number of submissions per day since Firefox 3 release, but I believe that the current approval process will keep facing the same problem every time there’s a sudden jump in the number of add-on reviews, unless Mozilla allocates additional editors to help out. This is not a rant or gripe towards the editors, on the contrary, kudos to them for the work that they’ve been doing.

If I can suggest a change to the approval review process, I think it’s better to distribute the review tasks to the submitters by specifying a detailed list of tests that must be done by those submitters, and keep the tasks that the editors must do as minimal as possible. For example, if AMO provided me with 50 things to test, then I would go through the list, record the tests as a video, and put them on youtube. The reviewers can then just review the video, and still perform only the really really necessary checks, like scanning the source code for any obvious security issues.

So, Hudson users, please be patient, you have to keep logging in to to download the add-on for now :).