I was inspired by an FME Group post comparing CMIS to DFC. In neatly describes the pros and cons of using Documentum Foundation Classes vs. the Content Management Interoperability Services. For documentum customer this can be used to determine the right interface for your application: Documentum specific, or international standard.
I think the comparison can show a few things about the CMIS standard and where it stands in its current 1.0 version. CMIS is aiming to provide a product independant interface to ECM systems, to allow software companies to write ECM applications that work, no matter which ECM system is used to store the documents in. Check the CMIS page on Wikipedia for more information.
So, how does the current version of CMIS live up to that idea?
First of all, CMIS offers a full set of essential content management operations, to create ,import, or find documents and their metadata. It has folder structures and access control. It supports user authentication. All very good stuff. It also has its limits.
CMIS allows only single object operations. A logical choice imo, though it does mean that batch updates and deletes are not supported. To me this is no big deal, since batch-wise updates and stuff like that is mostly in the domain of the Super User, or Application Maintenance people and they will most probably need a proprietary tool for their work any way.
CMIS has a query language that can be used to find documents or folders. Full-text search can be used, when supported by the underlying ECM system. INSERT, UPDATE, or DELETE queries are not supported however. JOIN queries are only partly supported by some implementations (currently only by Documentum and Nuxeo) CMIS has no support for Transactions. So if you need to combine several updates into 1 logical operation, your application will need to provide its own transaction logic.
CMIS supports permissions on objects, yet only, read, write, or ‘all’ rights can be specified for a user or group. There is no function to request the permissions for a given user on a given object. Only the permissions for the current user can be requested.
More advanced ECM functionality, such as Renditions, are not fully supported yet. Only a few vendors offer read-only access to renditions through CMIS, none offer functionality to add a rendition to a document. Even more advances functions, such as workflows, are not supported at all.
As you can see, CMIS supports most basic ECM functionality. It is suitable for writing applications that only need basic ECM functions, such as DropBox-like browser apps, or those sexy mobile applications that are mostly used for consuming information. Applications like that using CMIS will be usable with most major ECM products. This is great news!
More advanced applications will run into its limitations, with no support for transactions, renditions and such. Let’s hope CMIS 1.1 brings us some of those features.