• Apache Archiva 1.0.2 Released

    The Archiva team has just released Archiva 1.0.2. You can find out about it in the release notes - 41 fixes in all.

    It’s a busy time coming up - Archiva is now a top level project at the ASF, and we are in the process of moving the infrastructure across. A pre-release of 1.1 will hot on the heels of this release, which includes several new features including some performance and memory improvements.

    Have some ideas for how to improve repository management? Why not get involved today!

  • WTP support added to Q for Eclipse

    A nice surprise this morning was waking up to a message from Abel that he has implemented basic WTP support (for dynamic web applications only) in Q for Eclipse’s development version. I fired it up, imported my Archiva pom.xml files and it worked first go deploying to Tomcat.

    Check out the screencast (mirror) he put together for a demo.

  • Apache Continuum Settles in to its New Home

    Last month, the Apache board approved a resolution to establish the Apache Continuum project. So after just short of 3 years as part of the Apache Maven project, Continuum has grown to the size of being a project in its own right, and moved out to it’s new home at http://continuum.apache.org/. There are 13 committers on the initial roster, and the new chair of the project is Emmanuel Venisse.

    While Continuum will still be an easy-to-use, enterprise-ready build server for Maven projects, it will also be looking to add new features in the near future.

    Discussion has been active lately about the direction of the project in upcoming releases, and a roadmap formed for "2.0", with the intention of incremental releases towards that path. Some of the focus will be around using more well-known technologies as the underpinnings for the system so that it will be easier for new contributors get involved.

    Congratulations to the Continuum team, and I look forward to the future!

  • Being reminded of the benefits of a community in open source

    To anyone that has worked in a healthy open source community, this will seem like a no-brainer, but sometimes it’s good to be reminded of the real benefits when you involve a community of diverse developers in what you’re doing.

    Earlier in the week, Joakim brought up the discussion topic on the Archiva Development List about converting from Plexus to Spring. The original plan was comprehensive, but there were some worries about a "big bang" approach since most of our Plexus components were autowired. I wasn’t initially sure we even wanted to convert everything either.

    So I spared a few hours to try an experiment, and we had a functional but ugly way to use both Plexus components from Spring, and vice-versa. I figured that would make do for a short term solution.

    Then Nicolas ran with it and has come up with a much more transparent way to implement it. Once a few issues are ironed out, we have a solution that is release-quality at any time as we gradually make the migration, will require much less work hacking the test rigs, and we have Joakim’s comprehensive list (which he’s already started doing on trunk).

    In a different environment, we could have very easily ended up with a massive refactoring that halted all the current development, or I could have had a half implemented change that rotted away locally. But together in less than a week (part time) :) the 3 of us and the others chiming in on the list, have a pretty complete solution and a plan of attack. We were able to maximise the available time of the contributors, and their particular interests (whereas I’d have run out of both much earlier otherwise).

    It’s not revolutionary, or surprising - but it is cool - and if you can harness this kind of small innovation on a regular basis it makes a big difference.

    Archiva is probably the most fun project I’m involved in right now because of the good people, the enthusiasm, and influx of new users and contributors since the recent releases. One of the main reasons we were looking at Spring was to lower the barrier to contributions - so if you’re using Archiva and have something you’d like to see done or fixed, why not come and join the party?

  • Working around –non-interactive problems in Leopard’s Subversion

    Apparently, the –non-interactive flag is broken in Subversion as distributed with Leopard and a fix is not yet available. Bad news for Maven users wanting to use any of the SCM tools.

    Hopefully a fix will be available either through an update or a version of Subversion that can be compiled from source, but in the mean time I put this shell script ahead of svn in my PATH:

    Updated 15 Mar 08: Wendy pointed out you need to chop the username too. Now it’s even more hacky.

    #!/bin/sh
    
    if [ "$1" = "--non-interactive" -o "$1" = "--username" ]; then
      shift
    fi
    
    if [ "$1" = "--non-interactive" -o "$1" = "--username" ]; then
      shift
    fi
    
    /usr/bin/svn "$@"

    Mmm, hacky.

     

  • Cloned Mac migration problems? Check your permissions

    I recently received a new(er) Macbook Pro, and wanted to get up and running in as short a period as possible. I chose to go with a full hard drive clone so that the minimum amount of modification and reinstallation would be necessary.

    Apart from a small misunderstanding between me and my external USB drive, that resulted in me having to do the initial backup twice, Carbon Copy Cloner worked an absolute treat. I was able to boot from the USB on the new Mac, and clone back over to the internal hard drive and boot it all back up spotlessly.

    Well, almost. I started seeing weird problems cropping up in quite different applications.

    First up my Dovecot IMAP server wouldn’t start. This turned out to be a simple problem of /opt/local/var/run/dovecot/master.pid being left behind and needing to be removed (since another app kept taking that PID every time I rebooted, Dovecot always thought it was already running). This was the most important thing and I was back in business quickly.

    But then it got weirder. iGTD’s F6 integration has ceased working (and I still can’t get it to work despite resolving other problems). It tries to send something - but it just doesn’t. Oh well - I’ve been wanting to check out OmniFocus anyway.

    And then yesterday, I decided it was time to upgrade to 10.5.2. But software update refused to recognise any updates - though I had several waiting, and running it on my old Mac showed them. Nothing helpful in /var/log/system.log. After googling for a solid hour I decided to just update from the downloads on the Apple software site and resolve the problem later.

    Then I was having trouble opening a PDF in Preview. I figured it was something corrupted in there, so I didn’t think about it. Then today - no luck on another PDF. And I found no PDFs were working in Preview (in hindsight, I’d had the same problem with a Postscript file earlier in the day too). Something was clearly wrong, but it’s incredibly hard to google for problems with generic names like "Preview" and "Software Update".

    Luckily, Preview showed me something in the logs, which Software Update hadn’t:

    Feb 14 12:27:07 mcbrett Preview[1755]: tempFileFolderPath failed
    Feb 14 12:27:07 mcbrett Preview[1755]: *** -[NSPathStore2 rangeOfString:options:range:locale:]: nil argument
    

    That was much easier to google for and I had the fix in minutes. What’s more, Software Update is working again (though no luck with F6 integration). It was simply a permissions change on the temporary directory:

    sudo chmod 775 $TMPDIR

    The creepy thing? My name isn’t that common, but the user in question had exactly the same login ID as me. Does Apple discriminate against brett’s? :)

  • Experimental Maven support for condensed POMs using attributes

    As I’ve just posted to the Maven developers list, I’ve always wanted to see an attribute based POM, so based on Nicolas’ suggestion I killed some time after waking up early this morning to do it.

    Here’s what you’ll need to try it:

    The issue is being tracked under MNG-3397.

    The result is that something like this:

      ...
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>easymock</groupId>
          <artifactId>easymock</artifactId>
          <version>1.2_Java1.3</version>
          <scope>test</scope>
        </dependency>
        ...

     Halves in length to something like this:

      ...
      <dependencies>
        <dependency groupId="junit" artifactId="junit" version="3.8.1" scope="test"/>
        <dependency groupId="easymock" artifactId="easymock" version="1.2_Java1.3" scope="test"/>
        ...

    What I did is basically convert all the primitive types in the model to attributes. I think more could be done - for instance, lists could be flattened if the parent element is not really needed for grouping, and I think plugin configuration should get the same treatment as above - but this gets a big win for minimal work. Also, the settings and profiles files could conceivably get the same treatment.

    Most importantly - the work is completely backwards compatible. Maven detects v4.0.0 POMs and reads it like it used to. Even, as in the case of Archiva above, if there are different ones within a project.

    Now, it’s early days for this change, and there are a few issues to note:

    • I switched from our bundled XPP3 based parser to StAX. This will likely introduce some quirks that will need to be ironed out through testing. I will likely in the future read the old models with the old parser, and the new ones with the new parser.
    • Some plugins may not work with this version (I’m guessing at this stage the release plugin falls into this category though I haven’t checked) - as I removed the old parser altogether. This should be easy to make compatible.
    • I haven’t tested performance with this new version - I expect that the v4.0.0 POMs will parse marginally slower than they used to and this may affect artifact resolution times. It also increased the size of the Maven download.

    What comes next? Apart from correcting issues such as the above, I have in mind:

    • A simple plugin to convert from v4.0.0 to v4.1.0 for a POM file so you can try this out on your own projects.
    • Utilising the namespace for detecting the version so the modelVersion element is not required.
    • Further improvements to the format

    What do Maven users think of this alternative format?

    (And apologies to Don, I got carried away doing this instead of finishing the integration of his patches into the main branch - but I’ll resume that again shortly!)

  • Blog Moved to Exist, and Wordpress / New Year, New Job

    Since DevZuz was acquired by Exist , I’ve now move my blog to it’s new home. Hopefully everything redirects here now, and I’ll shortly set up Feedburner properly (finally) so that can be used to subscribe in future. I’m really liking Wordpress - though Pebble treated me well, you just can’t go past the wealth of plugins that Wordpress offers.

    You’ll find some other DevZuz bloggers here too - as well a growing number of others from Exist.

    It’s been a crazy busy start to the new year, so things have been a little quiet on this blog. I’ve spent most of my time in January in the Philippines, settling in to the new environment and having a blast with my friends and coworkers from Exist.

    I’ll post some more separately on what’s been happening and what’s coming up!

  • Searching Archiva with Quicksilver

    I run my own Archiva server to keep an offline repository of artifacts so that I can safely nuke my local repository at any time and to have a more typical set up.

    I have’t written any Quicksilver actions before, but experimented with this one very quickly the other day - let me know if you find it useful or have any suggestions!

    -- Search Archiva for given text
    using terms from application "Quicksilver"
      on process text query
        set archivaUrl to "http://localhost:7777/archiva/"
        set queryUrl to archivaUrl & "quickSearch.action?q=" & query
        do shell script "open " & queryUrl
      end process text
    end using terms from
    

  • Releases in Maven land

    People have been busy in the Maven project, with releases coming out for a number of projects.

    First up, Emmanuel released Continuum 1.1 - a much anticipated step up for the CI server with a Maven-bent.

    Next, Deng released Archiva 1.0 - the first official release of the build artifact repository manager, and is certainly one of the best choices at present.

    In both cases, this should be the start of far more regular releases.

    And to top it off, Brian hauled together Maven 2.0.8. That along with the regular plugin releases has made it a productive end to the month!