CMIS stands for Content Management Interoperability Services. It’s an ECM industry specification managed by OASIS. It’s important because it establishes, for the first time, a vendor-neutral, language-independent API and query language for working with ECM repositories. Now, when you want to write a content-centric application that manages files in a content repository, you can worry less about learning a vendor’s proprietary API. Instead, learn CMIS once. Then choose your favorite language, grab a CMIS client library, point it at a CMIS-compliant server and you are all set. Done right, your app should be able to work with any other CMIS-compliant server.
This page compiles a list of CMIS resources to help you get up-to-speed. Something missing? Let me know!
CMIS Technical Committee at OASIS This is the home page for CMIS at OASIS.
CMIS 1.0. This is what most vendors have in their products today.
CMIS 1.1. This was just made an official spec in May of 2013. Most vendors have yet to add support for it in their products.
Developer Tools, Client Libraries, and Server Libraries
Apache Chemistry Home Page. Your home for the de facto reference implementation for CMIS, including client-side tools, server-side tools, and client libraries for Java, Python, PHP, .NET, Objective-C, and Android.
OpenCMIS Extension for Alfresco. This extension lets you use CMIS to work with Alfresco aspects, which are not natively understood by CMIS 1.0.
cmislib Alfresco extension. This is the same as the above, but for the cmislib Python library.
Drupal CMIS Module. This Drupal module provides a base integration between Drupal and any CMIS-compliant repository.
Drupal CMIS Views Module. This Drupal module was created by Ian Norton at Alfresco to allow the creation of Drupal views based on CMIS queries and paths.
CMIS & Apache Chemistry in Action. This is a book I co-authored with Jay Brown (IBM) and Florian Mueller (SAP). It is the perfect place to start if you are new to CMIS. It describes what the spec is and then dives into examples using the most popular implementation, Apache Chemistry. The book includes examples for Java, Python, PHP, .NET, Objective-C, and Android. Most of the book is about the client-side but there is also some coverage of server-side topics for those of you writing CMIS-compliant servers. The book covers CMIS 1.0 and CMIS 1.1.
Alfresco hosts a public CMIS server at http://cmis.alfresco.com.
The Alfresco Public API, which is used to write apps that work with Alfresco in the cloud is based in part on CMIS. User accounts are free to get started. Developer keys are also free. Learn more at http://www.alfresco.com/develop.
Nuxeo runs a public CMIS test server at http://cmis.demo.nuxeo.org.
Getting Started with CMIS. If I wrote it again I’d call it “Learning CMIS the hard way”. This tutorial uses curl to hit the Atom Pub binding directly. You’ll learn how CMIS works. Even better, you’ll learn to appreciate a good CMIS client.
Custom Content Types Tutorial 2nd ed. (2012). This tutorial is primarily about creating custom content types in Alfresco, but what good are custom content types if you do nothing with them? The tutorial includes multiple CMIS examples that show how to create, relate, query, and delete objects in Alfresco using CMIS.
Intro to CMIS Part 1 at DeveloperWorks (2010), by Jay Brown and Jeff Potts.
Intro to CMIS Part 2 at DeveloperWorks (2010), by Jay Brown and Jeff Potts.
All source code from the CMIS & Apache Chemistry in Action book lives here.
File-loader example. This example shows a really basic file loader that works against both Alfresco on-premise and Alfresco in the cloud.
Python-based CMIS Browser. This example shows a very ugly repository browser with extremely basic functionality built with Pyramid, a Python framework, and cmislib.
This gist shows how to dump the versions of an object using Groovy.
This gist shows how to set properties in Alfresco that are defined in an aspect.
Re-cap of what’s new in CMIS 1.1. ecmarchitect.com blog post.
Screencasts & Presentations
Getting Started with CMIS (2012). A slideshare presentation that provides a brief overview of CMIS
Basic File Management App with Python & CMIS (2012). Short demo on Youtube.
Alfresco + Drupal Screencast (2009?). Screencast on Youtube.
Alfresco + Drupal Open Atrium (2009). Screencast on Youtube.
The Power of Alfresco & Drupal Together (2009). A slideshare presentation that talks about using Alfresco and Drupal together via CMIS.