The beginning of a new era: Ruby plugins now a reality

Yay JRuby! It's not often that I get to use that much hyperbole in a Jenkins blog post, but I think in this case it's allowable. A journey that started over a year ago by Charles Lowell has reached a new level, thanks to lots of help from Kohsuke along with Hiroshi Nakamura and Jørgen Tjernø.

As of today, with Jenkins 1.438, you can now download and install Ruby plugins from the update center (the Path Ignore plugin being the first).

Words simply can't express what a monumental achievement this is for the Jenkins project, both from the technical perspective but also in terms of what this means for the future of the project.

According to the languages dashboard on GitHub, Ruby is over two times as popular as Java on the site. I do not intend to start a language popularity contest here, but if we pretend just for a minute that the GitHub ecosystem is all that exists. Can you then imagine how powerful it would be to engage and include a community of open source developers that would be two times the size of the current pool of contributors? That's tremendous potential!

Great! Where do I start?

For those that are curious, the first officially released Ruby plugin for Jenkins is Jørgen's pathignore-plugin which can be found in the update center. If you're looking for a reference project, this is currently the most up-to-date plugin.

There is also a wiki page covering Ruby plugin development, which might be a little out-of-date but covers most of the essentials.

Additionally you might find the jenkins-prototype-plugin an interesting resource as it is practically a kitchen sink of demo/test Ruby plugin code.

Currently only a few extension points (BuildStep, Publisher, BuildWrapper) are mapped in a Ruby-friendly manner. Don't let that scare you though! If you dig around in the jenkins-plugin-runtime you can see how the existing extension points are mapped from Java into Ruby, because Ruby plugins are running under JRuby, if you need to access some Java APIs, you can do so without too much trouble.

The Thank Yous

Great efforts like this one don't just happen without support, which is why I'd like to call out and thank The FrontSide for their wonderful support, helping to cover costs of WebEx for Office Hours and covering Charles' time while he worked with Kohsuke on the internal plumbing needed to make Ruby plugins possible within Jenkins core. If the name "The FrontSide" looks familiar to you, that might be because they also created and donated the Jenkins logo!

We should also thank Lookout, Inc (full disclosure: Lookout is my employer) and CloudBees for affording some employee time for Jørgen and Kohsuke respectively to work on the project.

A dead bug is a good bug

As if getting a Kindle for reporting bugs and getting an AppleTV for filing a survey aren't enough, you can also win an iPad for fixing an issue.

So if you've been thinking about tinkering with Jenkins code base but haven't done so yet, this is a great opportunity to get going. There's documentation about how to get started, and there's Jenkins Office Hours and IRC channel if you need some interactive help from existing devs. I think new features, not just bug fixes, would qualify, so long as it's recorded in the issue tracker. And similarly, I think the plugins would qualify, not just core.

Report bugs and win Kindle

CloudBees is running a 60-days "bring me bugs" contest for the Jenkins project where you may win a Kindle and Amazon gift cards for a bug report you made during the contest period. See the linked site for details about how to enter into the drawing. Greg Moy from Electronic Arts has already won for the first week, but there are more rounds to come.

Several years ago Sun did the same thing around GlassFish, and it was useful to drive more participations into the project. Whether or not you were around the last time, don't forget to participate this time.

IPS Packages of Jenkins for Solaris/OpenIndiana

Image Packaging System (IPS) is a new package manager Sun has developed for OpenSolaris. While I have my doubts about whether a brand-new package manager was a good way of spending engineering resources, OpenSolaris had a number of very nice features that made it a convincing platform to run Jenkins, thanks to SMF, ZFS, and zones. So I used to produce IPS packages for Jenkins. I lost the ability to do this as I left Oracle and lost access to a Solaris system, but a recent blog post renewed my interest.

So I'm happy to announce that the Jenkins project has started producing IPS packages for the releases. With this addition, the Jekins project now produces 9 packages on different platforms (10, if you count Ruby as a separate platform :-)

Jenkins Long-Term Release 1.409.2 is out

We just posted the updated Long-term Release (LTS) of 1.409.2.

Just as a recap, with LTS releases, we plan on providing a release train that only has backported changes. 1.409.2 contains a handful of important bug fixes since 1.409.1. For more about LTS, see this wiki page.

Thanks to the heroic effort of those who are involved, namely Vojtech Juranek and a bunch of heroes, this release went through a rather rigorous testing, including all the automated tests we have plus a considerable number of manual eye-ball tests.

To download, click the "Long-Term Support Release" tab from the top page. If you've already been using LTS, you should start receiving update notifications soon.