GPG, Maven and OS X

GPG on the Mac has been quite an issue always. Several choices to install and hard to configure. Now seems that GPG native tools for OS X are back to life at the GPGTools project, providing a single easy to use installer.

GPGTools is an open source initiative to bring OpenPGP to Apple OS X in the form of a single installer package

So I installed the package, logged out and in again for the PATHs to take effect, and got the agent up and running by executing

gpg-agent --daemon

(It will be automatically started when you restart)

Now, to configure Maven to use this GPG2 version and the GPG agent I added a profile to my ~/.m2/settings.xml

    <profile>
      <id>gpg</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <properties>
        <gpg.useagent>true</gpg.useagent>
        <gpg.executable>gpg2</gpg.executable>
      </properties>
    </profile>

This way the agent only prompts for the GPG key password once for each session, and Maven uses the right gpg executable.

Hudson and Jenkins, can brands and trademarks affect an open source project?

Maybe you haven’t heard yet (where have you been!), but Hudson, the Continuous Integration server, is being renamed to Jenkins.

Sacha Labourey sheds a bit of light on the background that motivates the changes, but let’s just say that the community wants to move in a direction that Oracle is against, and Oracle claims the ownership of the Hudson trademark, so the community decides to move the source code to another hosting and use a different name for this fork.

So you have on one side Oracle, which AFAIK is doing few contributions to the project, and most of the people doing actual contributions on the other side.

Now, playing devil’s advocate, what if Oracle decides to continue Hudson, by, for instance, just merging all changes to Jenkins back into Hudson. No non-Oracle committers, a bit of development on their side if needed, just a close copy of Jenkins, but with the Hudson brand.

Would that succeed?

Of course you know that the community-endorsed project is now Jenkins. How many people out there would know that too?

Would current users in big corporations be aware of the status of the project?

Would it be possible for a giant like Oracle to use its marketing machinery to promote Hudson as an Oracle product and build some Hudson-branded products on top by just owning the trademark?

Could somebody pull a trick on the open source world as Eddie Murphy does in The Distinguished Gentleman? Vote for Jeff Johnson, the name you know!

I would hope that’s not the case, specially because Hudson doesn’t seem to play a big role in Oracle product map, but if it were otherways… I wouldn’t be so sure.

Speaking at Javagruppen, the Danish JUG annual conference

The guys at Javagruppen, the Danish JUG, are doing their annual conference on February 11th and 12th.

The theme for this year is “Java, a cloudy affair”, and I’ll be speaking on building and testing in the cloud, using Apache Maven, Continuum, TestNG, Selenium,… and how to take full advantage of cloud features for software development, aligned with my previous talks.

This year the conference will be in a 5-star hotel and spa in the middle of Denmark, and I gotta say I look forward to it, seems they know how to choose a location (last year they did it at a Castle).

You can still sign up if you want to go.

Comwell Kellers Park

Github forking after cloning

When you want to change/contribute to other people’s projects that you don’t have access to you usually fork the project, and then use your read+write fork.

What if you first cloned their repo and made local commits that you now want to contribute? You don’t want to mess with patches, so here’s what I did to contribute a small fix to the example project from Apache Maven 2 Effective Implementation, a great book by Brett Porter and Maria Odea Ching.

  1. Fork the project repo at Github (at https://github.com/brettporter/centrepoint/)
  2. In my local clone, I renamed the remote origin to upstream
  3. Add a new remote called origin pointing to the read+write fork
  4. Change the master branch remote to origin instead of upstream
  5. Fetch the remote and push your changes
git remote rename origin upstream
git remote add origin git@github.com:carlossg/centrepoint.git
git fetch origin
git branch --set-upstream master origin/master
git push origin