Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

CMIS is a protocol to access document file servers. All of the CMIS servers I kn

ID: 660646 • Letter: C

Question

CMIS is a protocol to access document file servers.
All of the CMIS servers I know store the files locally in an opaque way, as blobs, with real filenames stored in a database.

Is there a CMIS servers that stores files in such a way that they can be used locally on the server? In other words, the server would just expose a local folder via CMIS, and react correctly when files in this local folder are modified by another program.

Requirements:

Compatible with CMIS 1.0 or superior
Exposes a local folder
Files of the local folder can be read/modified
Created files appears via CMIS as soon as they get created, with zero (or default) metadata
Free (at least free usable demo, time/volume limits OK), bonus for open source

Explanation / Answer

For production use, I'm not aware of anything. Generally speaking, a filesystem wouldn't offer enough functionality natively for a fully complete and production ready CMIS Server.

However... You've clarified in the comments that this is for personal / demo use, so you're in luck! Apache Chemistry currently ships two different example/demo CMIS Servers, aimed at helping you understand + test how it can all work. One is the In-Memory repository (largely complete, but throws data away when done), the other is the Fileshare repository, which is based on the file system.

From the Fileshare repository docs:

The repository is restricted by the capabilities of the file system and therefore does not support relationships, policies, document versions, multi-filing, un-filing and query.

So, as long as you just want to store and retrieve documents from a filesystem, and don't need anything around versions or querying, it can work for you!

From the Apache Chemistry download page, you'll want to fetch the OpenCMIS Server Webapps package. Once downloaded, you need to provide a simple config file for it, as detailed on the docs page. Basically you need to define your user credentials, a type definitions file, then where on the filesystem each repository lives, and finally which users get access to what.

Don't build you production system on this, but for quick testing it ought to work just fine!