I’ve recently spent some effort in improving the look of the Apache Jackrabbit website. I’m no designer, so the results aren’t that great, but it’s been a nice break from the regular project work. And I got to brush up my Photoshop and Gimp skills.
One part of the effort was creating an icon for the site. Previously the site used the feather icon used as the default on all Apache project sites, but I wanted a Jackrabbit-specific icon that helps me to quickly identify and access Jackrabbit pages among the numerous tabs I usually have open in my browser. The work is a good example of incremental improvements in action:
I started with a copy of the Jackrabbit logo with nice alpha-layered transparent background. It looked great until I noticed that some browsers lost the smooth alpha layer and instead resulted in a rather badly aliased icon seen above.
The straightforward solution was to add a white background as can be seen in step 2. That worked already pretty well in all browsers.
After a few days of watching the icon I found it a bit too blocky to my taste, so I tried to restore some of the nice transparency effect by rounding the corners a bit. I’m pretty happy with the result.
Of course, if you have design talent and think you can do better, go for it!
The Apache Jackrabbit project has just released Jackrabbit version 1.6.0. This release will most likely be the latest JCR 1.0 -based Jackrabbit 1.x minor release before the upcoming Jackrabbit 2.0 and the upgrade to JCR version 2.0. The purpose goal of this release is to push out as many of the recent Jackrabbit trunk improvements as possible so that the number of new things in Jackrabbit 2.0 remains manageable.
The most notable changes and new features in this release are:
- The RepositoryCopier tool makes it easy to backup and migrate repositories (JCR-442). There is also improved support for selectively copying content and version histories between repositories (JCR-1972).
- A new WebDAV-based JCR remoting layer has been added to complement the existing JCR-RMI layer (JCR-1877, JCR-1958).
- Query performance has been further optimized (JCR-1820, JCR-1855 and JCR-2025).
- Added support for Ingres and MaxDB/SapDB databases (JCR-1960, JCR-1527).
- Session.refresh() can now be used to synchronize a cluster node with changes from the other nodes in the cluster (JCR-1753).
- Unreferenced version histories are now automatically removed once all the contained versions have been removed (JCR-134).
- Standalone components like the JCR-RMI layer and the OCM framework have been moved to a separate JCR Commons subproject of Jackrabbit, and are not included in this release. Updates to those components will be distributed as separate releases.
- Development preview: There are even more JSR 283 features in Jackrabbit 1.6 than were included in the 1.5 version. These new features are accessible through special “jsr283” interfaces in the Jackrabbit API. Note that none of these features are ready for production use, and will be replaced with final JCR 2.0 versions in Jackrabbit 2.0.
This release is the result of contributions from quite a few people. Thanks to everyone involved, this is open source in action!
The JCR 2.0 API specified by JSR 283 has been in Proposed Final Draft (PFD) stage since March, and Apache Jackrabbit developers have been busy implementing all the specified new features and adding compliance test cases for them.
Both the Reference Implementation (RI) and the Technology Compatibility Kit (TCK) of JSR 283 will be based on Jackrabbit code, and we expect the final version of the specification to be released shortly after Jackrabbit trunk becomes feature-complete and the API coverage of the TCK reaches 100%. The following two graphs illustrate our progress on both these fronts.
First a track of all the JCR 2.0 implementation tasks we’ve filed under the JCR-1104 collection issue. The amount of work per each sub-task is not uniform, so this graph only shows the general trend and does not suggest any specific completion date.
The second graph tracks the TCK API coverage. We started with the JCR 1.0 TCK, so the first 300-400 method signatures were already covered with few changes to existing test code. Based on Julian’s API coverage reports in JSR-2085, this graph tracks progress in covering the 100+ new method signatures introduced in JCR 2.0. Again, the graph is meant to show just a general trend and should not be used to extrapolate future progress.
Wan’t to see JCR 2.0 in action? The latest Jackrabbit 2.0 alpha releases are available for download!
In the Apache Jackrabbit project we’ve decided to create a new JCR Commons subproject for developing and managing the set of generic JCR tools that has grown over time around the core Jackrabbit content repository implementation.
The JCR Commons subproject will to some extent resemble the Apache Commons project, and I’m hoping to use some of the ideas put forward by Henri in his blog post about a “federated commons”.
I’m hoping to flesh out the details of this new subproject over the next month or two. It would be nice to have releases of all the new JCR Commons components ready to be used as dependencies for the upcoming Jackrabbit 1.6 release.
Here’s the latest top five list of countries with most monthly visits to the jackrabbit.apache.org web site:
- United States
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…
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.
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:
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.