During early days of my career, I was taught that one of the most important tenets of software design is “Separation of Concern” – break your software into modules that perform or manage one and only one task. Once you have all your modules in place, make them communicate with each other to accomplish overall requirements.

Every design pattern basically tries to achieve ‘Separation of Concern’ and provide communication mechanism between various modules. When you have multiple modules interacting with one another, you may also want to replace a module with another without breaking the overall software. This is ensured by designing loosely coupled modules that do not depend on another module explicitly, but communicates using well defined interfaces.

Without these design principles – modular, loose coupling and well defined interfaces - , it is difficult to imagine the progress we have made in software technology. Today you have various software vendors such as Microsoft, Oracle, IBM etc. building database solutions. Each one of them providing their own niche that is different than others. However, each of their database adhere to common standard, SQL, without which we couldn’t have built application that work with different databases. For instance, ERP applications, such as from SAP, works with DB2, Oracle or SQL Server because SQL is used to communicate with backend database.

As Content Management space is getting matured every year and more and more organizations are demanding rich applications, there is clearly a need for standards for content management similar to standards we have for database. I am glad that most of the big players are already thinking and working hard to make it possible in near future. This standard, which is still in draft form, is called Content Management Interoperability Standards (CMIS). This was announced roughly a year back in SharePoint Records Center team blog. Since then lot of progress has been made , so I thought of providing a quick update.

What is CMIS?

CMIS is currently a draft standard by OASIS and its goal is to provide a standard way of interacting with content management repositories. Just like SQL is a standard way of interaction with database (structured content), CMIS would provide a SQL equivalent to interact with content management repositories (unstructured / semi structured content).

CMIS intends to provide interfaces to most common set of tasks that is generally supported by every content management application. It will provide common set of data models and interfaces to interact with content management repository.

What CMIS is not?

CMIS will not address how a particular interface is implemented. Implementation is left to vendor specific application. CMIS addresses WHAT needs to be implemented rather than HOW it should be implemented. The HOW of implementation is something that will differentiate one vendor from another.

CMIS also does not address the authentication with content repository. It is left to the vendor to ensure requests to repository is authenticated.

CMIS use cases

First version of CMIS will address functions that are most common for every content repository. These functions or use cases are called core use cases, which includes:

Core Use Cases

1. Collaborative and Content Applications

2. Portal leveraging content management repositories

3. Mashups

4. Searching a Content Repository

Following is list of use cases that can be built on top of core uses cases; i.e, by leveraging core uses cases

1. Workflow and BPM centric applications utilizing content

2. Archival Applications

3. Compound and Virtual Documents

4. Electronic and Legal Discovery : I am looking forward to this one. eDiscovery is one of the biggest challenges every organization faces today as it is a complex and manual process. Manual because content is present in various repositories and without a standard way of searching, the eDiscovery task becomes time consuming and expensive. I plan on writing a post on eDiscovery some time soon.

Following is list of use cases that are out of scope for initial set of deliverables by OASIS TC for CMIS

1. Records Management and Compliance

2. Digital Asset Management

3. Web Content Management

4. Subscription and Notification Services

CMIS and other standards

CMIS, like most other standards will be based off XML. Data models by CMIS will be defined using XML Schema Definition (XSD). Following is list of other interoperable binding that OASIS TC for CMIS may support.

1. Web Services 2. REST 3. JSON-RPC 4. XMPP 5. JMS 6. JCA and 7. SMTP

Benefits of CMIS

One of the most well known design pattern in software world is MVC (Model View Controller). MVC provides flexibility of changing Model (Data) and View (Presentation) by delinking both of them and ensuring that View communicated with Model only through Controller.

I think CMIS is the Controller for content repositories. With CMIS, content repositories can be used by other applications just like they use databases. I am not saying this is the plan or intention of SharePoint product  team, but with CMIS in place, products like SharePoint can easily plug into other applications such as one that is provided by EMC or Open Text for Archival.

With standards support such as REST, the repository could be easily accessed via browser and mobile phones. There could be applications that just provide presentation layer and in the backend interacts with multiple repositories using CMIS.

I would hope for a day when every repository supports CMIS so that eDiscovery could reach out to every content using CMIS.

Useful Links for CMIS

I have bookmarked several relevant links to read more about CMIS here, and I will continue to update these links as I learn more.

Alfresco Labs has also built a first implementation of CMIS based on draft specification.

CMIS and SharePoint

There is currently no news of support of CMIS in next version of SharePoint. CMIS is still in draft form, so I doubt there will be any public announcement of support for CMIS in SharePoint 2010. However, Microsoft is one of the TC members in OASIS working aggressively on CMIS standard. You can read the draft specification by Microsoft

There is also a MSDN article that demonstrates integration of external repository into SharePoint using draft CMIS specification.

There is lot to look forward to and build as soon as CMIS delivers version 1.

Cheers,

Arbindo