This week sees a group of ECM vendors meeting in Colorado for a CMIS Face to Face where they will be discussing integration approaches using CMIS and testing their CMIS interfaces for compatibility with other vendor's tools. Unfortunately I couldn't attend the event but thought I'd blog about our progress with CMIS and post a video of KnowledgeTree's CMIS interface in action.
I've worked directly with implementations of other standards for various purposes and have long been a fan of standardised communication mechanisms allowing people to share their data without having to worry about format conversions and communication issues, as well as seeing some of the issues which can arise when someone does not adhere to the specified standard. With this in mind I was excited to jump into the CMIS specification even though it is still under ongoing development.
This was my first time developing for a specification which was not yet in its final form, which presented some unique considerations, for instance "do we develop according to the very latest version, which is quite new, or the previous version which may have more widespread support." At the time I came in, version 0.61 of the specification was current, which introduced certain changes causing problems with the first selected test client CMISSpaces which was at the time developed against version 0.5. It was only when the next build of CMISSpaces came out that we were able to properly interface with KnowledgeTree. One benefit of this was that we spent some time looking at a couple of other CMIS clients instead of focusing on just one. It was quite gratifying to see more than one client tool connecting to KnowledgeTree and browsing the existing data.
Implementation of the base API was not greatly difficult. The specification is clear enough on most points and it wasn't long before I had some basic repository operations working. During this period I found some inspiration in investigating the Apache Chemistry project (http://incubator.apache.org/chemistry/) alongside my reading of the specification, each informing my understanding of the other.
When it came time to develop the AtomPub bindings through which the developing API would be used, the real testing began. Initial development was done using a modification of the Alfresco CMIS module for Drupal, which is built on top of the base Drupal CMIS API module, and the CMISSpaces client. Each had its own level of functionality and method of display and navigation but thanks to CMIS the differences are only surface level and the action of interacting with KnowledgeTree was transparent. In fact, if I had not known that the data was not natively coming from the client tool, I could have easily believed that it was. Equally, using CMIS anyone could develop their own client which works in whatever manner they wish, without having to know a thing about how the underlying repository works.
At this time we have developed our API to support the most basic of repository operations - you can create, delete, move and view content (although not all of this functionality is available, depending on the CMIS client being used. More information on this can be found on the KnowledgeTree CMIS wiki page.) The remaining basic operations are coming soon - copying, checking in and out and updating.
At this time I am not aware of anyone using this implementation out in the wild, but soon it will be functional enough that perhaps we will see people beginning to use it as an alternative to the KnowledgeTree web interface for simple interactions, and hopefully feeding back to us information about their experiences. Of course there is still much to do before we will have support for searching, workflows and other more advanced functionality currently available through the web interface. Our initial aim is simply to make our systems useable through CMIS.
Movement on the specification hasn't been rapid enough to throw me off - though please don't take that as an indication that nothing is happening. I have been following the progress on the CMIS mailing list and they have certainly been busy refining and adding to the specification. Draft 0.62 is looking near ready to become the next official version and at that time we will be needing to update, but for now we have been able to hold steady on 0.61 for the duration of development.
Building for standards is a bit like building your own lego pieces - you can develop the individual pieces the way you like as long as they use the same connection protocols so that everyone can use them to interconnect their structures. This is what CMIS is promising to bring to the world of document management.
I have recorded a short video demonstration of the use of KnowledgeTree via CMISSpaces showing creation/uploading, viewing and deleting of objects, which can be viewed to the right.
View the KnowledgeTree CMIS wiki page.