At the start of a new year it’s always interesting to look back at the year that has just gone – arguably the most important event for content management in 2010 was the ratification of CMIS 1.0 in May.
Content Management Interoperability Services is an open standard to enable greater interoperability of Enterprise Content Management (ECM) systems and is built on top of other proven open web standards such as Atom and OpenSearch. Alfresco has been at the forefront of CMIS and Alfresco 3.3 provided full support for CMIS 1.0 (some of the earlier versions implemented drafts of the CMIS standard).
Note: this was the original draft for the article published on the Ixxus blog.
Some people have been describing CMIS as a SQL for ECM systems – this is a bit misleading, yes CMIS does define a query language (CMIS QL) for content (with Folder and Document ‘virtual’ tables), but it also defines standard connectivity bindings using REST/SOAP Web Services (I call this the ODBC/JDBC equivalent!). Sticking with the database analogy the client is typically known as a Consumer (although they can also create/edit content) and the ‘database’ / repository is known as a Provider.
Confusingly some content management systems are CMIS consumers, some are CMIS providers and some like Alfresco are both!
For instance, a web content management system like Drupal (consumer) can be driven by content from Alfresco (provider).
Importantly, any application can be a content consumer application and this approach can help businesses in consolidating onto a single content platform such as Alfresco – some functions may use Alfresco directly, but many others can leverage the content repository in a standard fashion.
At the start of 2010 I was involved in building a number of Grails applications for a client that searched/retrieved content & documents from their Alfresco content repository. As the projects started before the CMIS standard was finalised, we were using an earlier Alfresco Enterprise release that supported a draft CMIS standard. Consequently we couldn’t use the Apache Chemistry client at that point in time – so I rolled our own using the Apache Commons HTTP Client library and the powerful Groovy XmlSlurper. This was packaged as an in-house Grails plugin for reuse across the projects – it only needed namespace configuration changes to move from Alfresco 3.1.1E to 3.2E, with a few minor tweaks required to move to Alfresco 3.3E and the final version of the 1.0 standard (e.g. to accommodate structural changes in the XML response).
This plugin was very successful and in fact the code forms the basis of a chapter in the forthcoming “Alfresco 3 Business Solutions” book written by my colleague Martin Bergljung.
On a subsequent Alfresco (3.3E) project I re-evaluated the latest OpenCMIS client and this is my current recommendation where your needs can be met using CMIS (and I hope to make the time this quarter to write & release a formal Grails plugin using OpenCMIS).
Whilst CMIS hasn’t necessarily been big news outside of the ECM industry, it is set to level some playing fields and impact content/enterprise architectures in 2011. All of the key players have added (or will be adding) CMIS support to their ECM offerings and it can also form the basis for migrating between ECM systems (e.g. as enabled by EntropySoft). It has wide ranging applicability in specific verticals such as STM Publishing, where you could reasonably expect XML authoring tools and open access repositories to adopt CMIS.