Will CMIS get a JSON binding ?
During the CMIS PlugFest, an idea that was mentioned by a few participants consisted of using JSON as a transport mechanism for CMIS repository operations. The idea was to be able to easily develop thin clients such as Javascript or PHP clients, and avoiding the pains of generating or parsing XML data.
I think this might potentially be the "revolutionary" binding in the specification, that really has the potential to surpass all the others over time. Sure it is absolutely great (and at the same time a double-edge sword since it means more work for implementors) that CMIS has all these bindings for a first version, but I think that we will eventually see a natural selection where only the easiest to integrate with all technologies will survive.
It takes one line of PHP (5.2) to serialize/deserialize JSON data (json_encode), and there are high quality libraries available for all the modern languages out there. Personally I've implemented JSON for an iPhone application in Objective C and it proved to be the most efficient way of transferring UTF-8 data over the wire.
The hard part of course is that JSON does not specify structure, only serialization format, and therefore it would be very important that the CMIS specification strongly describe the structure of the JSON payloads that are going back and forth between the client and the server.
JSON handles complex serialization a lot more elegantly than SOAP web services, and is simple enough for anyone to understand in a matter of minutes. Wouldn't that be a great basis for the content management interoperability standard ?
I know that a few people involved in the CMIS specification are already hard at work on proposing JSON as a binding for the 1.0 specification. This will be tricky since the deadline for the approval of the specification cannot change, so it means that all this must happen without slowing down the rest of the work. This will be a challenge, but I'm really interested in helping out, so please let me know how :)
I dream of a world where I can directly interface a lightweight Javascript CMIS client with any CMIS compliant server. My mind is racing with the possibilities...