JRuby Branch merged!

Yesterday, Kohsuke announced that the 'jruby' branch of jenkins-core had been merged to master.

This doesn't mean that we're done and that you can go forth and write pure ruby plugins... not by any stretch of the imagination. Instead, what it does mean, is that the Jenkins mainline is much more friendly to runtime analysis of classes with which it is not familiar.

The problem

When analyzing plugin classes, Jenkins uses just about every kind of metadata you can think of to get information about them: Class name, Field names, method names, member modifiers, annotations, you name it. It even uses the containing class relationship for inner classes to match Descriptors with what they describe.

It's all a great example of convention over configuration (CoC). In fact, I've never really seen CoC implemented in a Java project before as successfully as it has been in Jenkins. Plugin authors don't have to duplicate any metadata that Jenkins can figure out for you -- and it's alot! The drawback though, is that extensions depend very heavily on conforming to the structure of a conventional Java class.

The changes in this merge, and in several of the modules on which Jenkins depends, allow more than ever to get this information by asking an object directly rather than querying its private class structure.

The Kicker

Many of theses changes aren't even JRuby specific! While they do enable JRuby integration, They're really just making things more friendly for dynamic languages in general. So, in theory, it should pave the way for others like JavaScript and Python.

Where now?

We're still working on the ruby runtime and tools which will provide as crisp a Ruby development experience as we can. I don't want to proffer an estimate of when those will begin to be useable, but it is important to mark this very important milestone and explain what it does and does not mean.

We need you!

There is still much work to be done to enable a writing Jenkins plugins in Ruby, we are looking for people who know Ruby and feel like pitching in: writing Rake tasks, improving the glue layer, documentation, etc.

If you're interested, most of the action is happening on the jenkinsrb@googlegroups.com mailing list, so join us!

Jenkins User Conference

We've done meetups, we've done sessions, we've done workshops, now it's about time we went ahead and did user conference don't you think?

Our pals over at CloudBees (Harpeet specifically) have taken the initiative in starting to organize just that: a Jenkins User Conference on October 2nd.

If you have your calendar at the ready, you'll notice that October 2nd is the Sunday before JavaOne kicks off this year in San Francisco.

The details are still coming together, but a proposed agenda has already been posted by Harpeet.

As this is a community event, I'll be sure to keep the updates coming on this site but you may want to add the CloudBees' Blog to your feed reader just in case (or just follow them on Twitter: @CloudBees).

Mirror, mirror on the wall

Let me preface this entire post with this: I love Contegix.

While working on some infrastructure tasks I had long-since put-off for the Jenkins project, I noticed something this weekend that scared the hell out of me.

At some undetermined time, our MirrorBrain installation stopped redirecting to our mirror network. Absolutely zero downloads were being redirected, meaning that cucumber, the 1U machine graciously colocated by Contegix had served up far more bits than I ever wanted it to.

As such, I would like to publicly apologize to Contegix on behalf of the Jenkins project. Their support for the project has been tremendous but this glitch caused such an incredible amount of traffic to be pushed through their network that I feel exceptionally bad about it (turns out, Jenkins is pretty popular!)

Now, for the good news. In diagnosing and debugging this issue (in a caffeine-fueled frenzy I might add) I managed to do a couple things:

  • I corrected the redirection relatively easily
  • I fixed our long-standing geo-location issue, finally enabling redirection to our european and asian mirrors!

Within 30 minutes of correcting the error, I was able to add two mirrors in Germany, re-enable one from Taiwan and add a new mirror in Japan!

Gerrit and Jenkins Office Hours

Tomorrow I'll be hosting another Jenkins Office Hours session on WebEx (thanks Cisco).

The topic for tomorrow's user-focused session is: Setting up Gerrit and Jenkins (continuous deployment!)

For those that are not familiar with Jenkins Office Hours, the user-focused session aims to provide real-time support for both new and experienced users in getting Jenkins bootstrapped, solving particular workflow problems, debugging issues, etc.

User-sessions are a great way to get some interactive help from a member of the community who's very familiar with the subject at hand in a real-time, interactive environment.

For this session

I recommend you download Gerrit from the project's site if you'd like to follow along with your own instance. If you've used Gerrit before, great!

Event Date/Time: 
Thu, 2011-07-14 11:00

Dublin Hackathon

To get the most out of my trip to Dublin, we are hoping to do a Hackathon in Dublin on this Saturday. If you are interested, please RSVP.

For existing Jenkins developers, this event provides an opportunity to meet other fellow Jenkins developers who you've only known by their e-mail! For people who are interested in writing plugins or hacking core, the event provides an opportunity to ask questions and get answers right away.

If you don't know what specifically to hack on, no worries --- we can show you low-hanging fruits that you can work on, on the spot. And if people are interested, I can demo some of the work getting done in the core to benefit plugin developers.

Looking forward to see you!

Event Date/Time: 
Sat, 2011-07-16 04:00