Tuesday, December 16, 2008

Changing IT landscape

Here's the latest top five list of countries with most monthly visits to the jackrabbit.apache.org web site:

  1. United States

  2. Germany

  3. China

  4. France

  5. India


India just replaced United Kingdom on the fifth place, and while China is still far from the United States and Germany, it's rapidly closing the gap.

It was very interesting to hear tidbits from the recent Apache Meet Up and BarCamp Beijing events. I heard rumours about a potential followup event next year. I hope I'll find a good excuse to attend...

Sunday, December 7, 2008

Apache Jackrabbit 1.5.0 released

Apache Jackrabbit 1.5.0, the latest and greatest release of the best content repository I know, is now available! Get it from the Jackrabbit web site or through the central Maven repository while it's hot!



The most notable changes since version 1.4 are:


  • The standalone Jackrabbit server component. The runnable
    jackrabbit-standalone jar makes it very easy to start and run
    Jackrabbit as a standalone server with WebDAV and RMI access.

  • Search performance improvements. The performance of certain kinds
    of hierarchical XPath queries has improved notably.

  • Simple Google-style query language. The new GQL query syntax
    makes it very easy to express simple full text queries.

  • Transaction-safe versioning. Mixing transactions and versioning
    operations has traditionally been troublesome in Jackrabbit.
    This release contains a number of improvements in this area and
    has specifically been reviewed against potential deadlock issues.

  • Clustered workspace creation. A new workspace created in one
    cluster node will now automatically appear also in the other
    nodes of the cluster.

  • SPI improvements. The SPI layer introduced in Jackrabbit 1.4
    has seen a lot of improvements and bug fixes, and is shaping
    up as a solid framework for implementing JCR connectors.

  • Development preview: JSR 283 features. We have implemented
    a number of new features defined in the public review draft of
    JCR 2.0, created in JSR 283. These new features are accessible
    through special "jsr283" interfaces in the Jackrabbit API. Note
    however that none of these features are ready for production use,
    and will be replaced with final JCR 2.0 versions in Jackrabbit 2.0.



See the release notes for all the details.

Tuesday, October 28, 2008

Flashback: SusiSGML, Midgard, and Cocoon

Heikki wrote a nice post about how the Midgard project got started some ten years ago.  Bergie's comment also a briefly mentions the SusiSGML system that we used before Midgard.

SusiSGML was a custom SGML vocabulary with a set of DSSSL stylesheets that we used to cook the structured content into HTML with styling based on tables and all that stuff one used before the CSS revolution.

Architecturally SusiSGML was pretty much like early versions of Apache Cocoon, only with SGML and DSSSL instead of XML and XSL. Had we been at it a few years later, Midgard might have been based on Cocoon. :-)

Monday, October 13, 2008

My home away from home

Since July I've had two homes, one in Switzerland and one in Finland. I now live in Basel, Switzerland where I have a nice apartment within walking distance from the old city center and the Day office where I work. Since arriving here I've spent countless hours walking and biking around Basel and neighbouring areas, so I already feel pretty comfortable with the surroundings. Basel is just the kind of place I like, a beautiful city with lots of history and details to discover. And the rest of Switzerland isn't too bad either. :-)

My other home is back in Finland where Kikka, my future wife, and our two cats, Juuso and Nöpö, live cozily close to the nature. I fly back to stay with them for roughly a week per month, and meanwhile we call each other frequently. I especially love the skype video feed on our cats. This month I'm not flying to Finland, as a week ago Kikka visited me here in Basel and next week we're both heading to Turkey for a week of vacation together. 

Kikka is staying in Finland until she finishes her PhD studies at the sleep lab in Helsinki. She's doing some kick-ass research on the neurobiological mechanisms of sleep, and while at times I find myself understanding little of what she does, it still sounds totally awesome. I'm so proud of her.

I guess it's still too early to tell how well this living more than a thousand miles apart thing will work out, but so far I think we're doing great. I feel that the time we spend apart just makes our days together more special.

Thursday, July 31, 2008

git clones of Apache codebases

In the past few months we've been discussing on the infrastructure-dev mailing list about various ways of extending or improving the version control functionality available to Apache projects. One of the main themes of the discussion has been making it easier to access Apache codebases using git or other distributed SCM tools.

The new svn.eu.apache.org mirror that was recently announced supports git-svn use when accessed as an authenticated user over https. Unfortunately that access is limited to Apache committers and git-svn can be notoriously slow when making initial clones of complex codebases in svn.

To work around these issues I set up a collection of git mirrors of selected Apache codebases on my server. You can find these unofficial mirrors at http://jukka.zitting.name/git/. The mirrors are automatically updated daily.

The mirrors work pretty much like normal git repositories in that you don't need git-svn or any other svn tools to work with them. The only significant difference to normal git repositories is that svn tags are mapped to branches named "tags/..." in the mirrors due to the different way git and svn handle tags. Also, settings like svn:ignore, svn:eol-style, etc. are not replicated in these git mirrors.

Let me know if you're interested in seeing other Apache codebases mirrored. I'm also interested in other feedback or ideas related to these git mirrors.

Locales vs. consistent builds

[MOJO-1193] Locale support for formatting dates and times

I wanted to use the Maven buildnumber plugin to generate a date string like "31-Jul-2008" for inclusion in an automatically generated release notes document. This way I could minimize the amount of manual tweaking I need to do when publishing the release.

This was easy enough (though quite verbose) to achieve:

    <plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<configuration>
<format>{0,date,dd-MMM-yyyy}</format>
<items>
<item>timestamp</item>
</items>
</configuration>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>create</goal>
</goals>
</execution>
</executions>
</plugin>


Unfortunately, the resulting date string would be the expected "31-Jul-2008" on one computer, but "31-heinä-2008" (in Finnish) on my laptop. Instead of changing the settings of my laptop I wanted to explicitly set the locale that the buildnumber plugin should use when formatting the date. I wasn't too surprised that the required functionality didn't yet exist (it's quite common for people to forget about locales), but luckily it wasn't too hard to add. Thus MOJO-1193.

With my patch the required configuration becomes:

      <configuration>
<format>{0,date,dd-MMM-yyyy}</format>
<locale>en_US</locale>
<items>
<item>timestamp</item>
</items>
</configuration>


Consistency is good.

Tuesday, May 20, 2008

Versioning and the piano

Al Blue: "Module versioning is like playing the piano. The problem isn't how many digits you've got, it's using them effectively."

Nice insight on version numbering in  JSR 277 and OSGi. (Via Steve.)

Wednesday, April 16, 2008

File system on steroids

Last week at ApacheCon EU I made a case for content repositories as a general solution for applications that are currently forced to fragment their storage needs due to the different limitations of traditional storage methods, mostly file systems and databases plus more recently cloud services on the network. See below for the presentation:

[slideshare id=352816&doc=file-system-on-steroids-1208198602056184-9&w=425]

It seems like the message was well received, after the presentation I got a lot of positive feedback from people who had previously thought of content repositories as something you'd only use for storing content in a content management system. Instead I see a content repository as a unifying storage layer that can be used for almost anything ranging from traditional content and data to configuration files, user account information, preferences, templates and scripts, source code and binaries, ad-hoc annotations, etc.

Friday, April 4, 2008

JCR Cup 2008

Interested in JCR and looking for a new laptop? My employer has announced JCR Cup 2008,  a JCR design and development competition. Too bad I can't enter the competition, I'm sure we'll come up with a whole load of cool ideas next week.

ApacheCon EU next week

Like many others, next week I'll be in Amsterdam attending ApacheCon EU. This is my fourth ApacheCon, and it seems like every time I get myself involved with more stuff to do and more people to meet. I'm still trying to piece together my schedule for the week, but here's what I'll be doing already on Monday and Tuesday.

Monday: Media training, BarCode

On Monday I'll be attending Sally Khudairi's Media & Analyst Training and Intermediate Media & Analyst Training classes to improve my media skills and knowledge. I attended the first class already once during ApacheCon US 2006 in Austin, and found it very interesting and useful. Now I'm hoping to rehash the things I learned earlier and learn something new during the second class in the afternoon. It's really cool and very useful to have something like this as a part of the conference.

The downside of attending the classes is that I miss much of the Hackathon action during Monday. But luckily there's the BarCode event where (if not sooner) I hope to catch up with Day people and other fellow hackers. The conference networking site has already helped me hook up with some new people I'd like to meet.

Tuesday: JCR meetup, WebDAV, hacking, dinner

Tuesday is the first big JCR day of the week. The JCR meetup starts at 9am and continues to 1pm with lots of cool topics and attendees. The event is free for everyone and takes place right next to the ApacheCon venue, so feel free to drop by if you're around and interested in JCR and related technologies!

I'm especially looking forward to the JCR content modeling workshop that we'll likely organize at the end of the meetup. Besides ideas and questions from existing JCR users, I've invited other Apache projects like Abdera, James, JSPWiki, Lenya, and Roller to participate if they're interested in evaluating how a JCR content repository could best support their content models.

After the JCR meetup I was thinking of perhaps putting up a short informal WebDAV library BOF with anyone interested who's around. There's a long-standing need for a good WebDAV protocol library but with Slide gone, there currently is no clear development community that could adopt the various pieces of WebDAV code in different Apache projects. It would be cool if there were enough interest for example to bootstrap a new incubating WebDAV project.

If I have time (and energy!) beyond those activities on Tuesday afternoon, you'll probably find me in the Hackathon working on some prototype integrations like the ones we've done in previous Hackathons. Ping me if you're interested in hooking some code up especially with Jackrabbit or Tika!

There's an initial plan of having a dinner with other JCR people on Tuesday evening. Let me know if you're interested in joining us.

Friday, March 7, 2008

eXo JCR 1.8 released

Congratulations to the eXo team for releasing eXo JCR 1.8!

It's cool to see the various JCR implementations evolve and grow. The JCR 1.0 standard is  less than three years old, and there are already a number of independent implementations, both open source and commercial.

So far we've seen little cooperation (apart from JSR 283) or even much direct competition across the implementations, as I guess everyone is just busy grabbing market-share from pre-JCR vendors. But I wouldn't be surprised if we started seeing more benchmarks and feature comparisons on JCR repositories already during this year. I expect it to be fun!

Tuesday, January 15, 2008

Apache Jackrabbit 1.4 is available!

I just announced the release of Apache Jackrabbit 1.4. The release is the result of about nine months of development since the 1.3 release, and contains 220 new features, improvements, and bug fixes (plus the 75 bug fixes that had already been backported to 1.3.x patch releases). This is by far the biggest Jackrabbit release to date.

Apache Jackrabbit


The 1.4 release contains some cool new features:

  • Friendlier Jackrabbit webapp. The jackrabbit-webapp component now comes with a more polished user interface, better error handling, and improved repository connectivity for local and remote clients.

  • Object/content mapping framework. The jackrabbit-ocm component maps Java objects to JCR nodes and vice versa, making it possible to persist normal Java objects in a content repository.

  • Service provider interface for JCR. The jackrabbit-spi component defines an architectural layer below the JCR API. The SPI layer is designed specifically for remote access and outlines a way for us to avoid the performance limitations of JCR-RMI that works on top of JCR.

  • Optimized storage for binary content. The new DataStore feature in jackrabbit-core avoids all unnecessary copying of binary content and promises huge performance increases for versioning and copying operations. DataStore is a beta-level feature in Jackrabbit 1.4 and disabled by default.

  • Improved query engine. The jackrabbit-core component has been extended with new features like configurable indexing, synonym and similarity queries, and spell checking. Many typical queries are now noticeably faster than before thanks to numerous performance improvements.


Many thanks to the Jackrabbit development team and the entire community! I'm really proud and excited to be a member of the Apache Jackrabbit project.

PS. Interestingly enough, I built the final 1.4 release candidate exactly two years after I first volunteered to be the release manager for Apache Jackrabbit. The past two years have certainly been interesting time. :-)