CMIS, JCR and OSGi for Idiots
The empty-handed painter from your streets
Is drawing crazy patterns on your sheets.
- IT’S ALL OVER NOW, BABY BLUE
Every now and again, certain tumultuous events coincide that makes us feel insignificant. A bit like a total solar eclipse, which is a rare and humbling thing. This week three seemingly unconnected occurances came to pass which made me stop and think. Firstly, CMIS was mentioned in the New York Times. Yes, the New York Times. Secondly, Jeff Potts released his “Getting Started with CMIS” tutorial. And, finally, I had the chance to drink beer and talk shit with the great David Nüscheler.
So, to honour all of this, I drew a picture.
Why, you may ask. Well, after chatting to David, I felt inspired to think (and blog) more about the JCR, CMIS and OSGi. But while doing my cursory research (that’s a strong word for what I do, but anyway), I discovered that there were quite a few things I knew nothing about, and a few products that I’d never heard of. I also coined the word Dignorance in honour of my newly found knowledge gaps.
So here is a small version of the picture. Click for a large one, or download it as PDF. Do whatever you want to with it. If you think it is useful, or think it needs fixing, leave comments here or get in touch. I’m sure it’s completely wrong all over the place. If you want the original Visio drawing to play with, let me know.
Next time I come to your office, I except to see this printed as A3 and stuck on your wall.
UPDATE 18 Dec 2009: I’ve written an article on CMS Wire which explains some of this. Have a look:
http://www.cmswire.com/cms/web-cms/wcm-field-notes-the-skinny-on-jcr-cmis-and-osgi-006279.php


Awesome diagram! Minor nitpick though: the 136kg gorilla (Sharepoint) is missing from the CMIS providers box.
Also, does anyone else feel that the “wrap a spec in a spec” approach that the JCR crowd is taking somewhat divorced from reality?
While it has some obvious benefits for JCR providers (they can magically claim CMIS compliance), my gut feel is that in practice the impedance mismatches between the two specs will reduce it to a sales-phase-only “feature”. Or is that just my inner curmudgeon taking over again?
Peter, I think the arrow between CMIS and JCR does not yet really exist yet. Apache Chemistry is so far just a Java CMIS implementation, although apparently there were some bits of Jackrabbit integration code at one point. It is certainly not at the point where you could say do a search in JCR and get that to do a search on a CMIS repository. Like you I would be surprised if it ever got to that stage. I think the main thing you would get out of it is having an open source standalone CMIS implementation with direct Java bindings that you could integrate at the Java application level in application specific rather than generic ways.
Great diagram and thanks for including a reference to our portlet.
Just a minor nit: it’s Sourcesense and not SourceSense
Justin, for now the Apache Chemistry bindings to JCR go the other way: they make it possible to expose a JCR repository using the CMIS protocols. They assume a specific data model in the JCR however — although the code is still young and this could be improved.
Exposing a CMIS repository through JCR APIs would certainly be feasible (and have less impedance mismatch than the opposite, as the CMIS model is quite simple) but no one has taken on that task yet. But the JCR APIs are large and complex, with complex semantics, so it’s quite a task.
Absolutely love this article, especially the pictures at the bottom. Can I steal some?
http://blogs.nuxeo.com/dev/2009/06/promises-modern-chemistry.html
Ah, thanks for that clarification Florent, makes sense.
Jon, maybe some of those arrows should be reversed…
Yeah, you’re probably right. The direction of the arrows didn’t have much thought behind it. Fancy making an updated version
That template looks familiar
Dude. That’s two years of evolution you’re looking at there. Notice how the borders have gotten thicker, and the corners even more rounded.
I have two nitpicks (n) and two Very Important Notes (vin):
n1) There’s no such thing as an Apache Product – there are only Projects there (as you rightly noted in the James/Tapestry/etc. box)
n2) usling and ujax don’t exist anymore as standalone components in Sling, their concepts have been integrated in the various Sling default servlets. Mostly because I can never find this mu character on my keyboard (not
vin1) Idiots don’t use CMIS and JCR, we’re all Very Intelligent Folks
vin2) This is way cool, thanks!
Cool, thanks. The Product = Project was a typo. Will fix for the next version. And I’ve removed µsling and µjax. Re: vin1 – I’m an idiot. There must be others. Re: vin2 – Thank you kindly!
Great Diagram!
This must have made a lot of work!
Hi,
pretty nice diagram. But maybe OSGi should be parallel to JCR and CMIS. I know that it isn’t so, but it seems that OSGi is only possible with a JCR compliant Repository (CRX in the diagram). I think there will be several CMIS/JCR repositories which will switch to OSGi and also the Implementations for the SPEC could be OSGi-enabled.
Nice Work!
Hi Daniel. In practise, you’re probably right. But, in theory, OSGi and JCR have nothing to do with each other. And anyway, the page isn’t wide enough to have them parallel with each other.
Maybe it needs to be an A2 diagram instead of an A3 one …
Daniel:
Jon’s right: OSGi and JCR can be used separately. We use both in GX WebManager and they’re in different layers of the architecture. JCR is in lower levels (persistence & DB abstraction) while OSGi is somewhere in the middle to provide services to CRUD components/plugins.
In our case we _are_ using them together on purpose as our Jackrabbit implementation is an OSGI component that can be replaced with something else or a newer version. Nice demo scenario for geeks: update Jackrabbit v1.3 to v1.4 by uploading a ZIP file and without restarting the server
Dignorance should not just be applied to Wikipedia. I’ve been out of mainstream Java for two years and the world changes. I was digging around trying to get back up to speed and ran across your post here. Digging into sites like these reveal a WHOLE new level of “Dignorance” that digging in Wikipedia couldn’t begin to touch.
Thanks for the chart. It gives me a large overview to work with.