<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: No REST in CMIS</title>
	<atom:link href="http://roy.gbiv.com/untangled/2008/no-rest-in-cmis/feed" rel="self" type="application/rss+xml" />
	<link>http://roy.gbiv.com/untangled/2008/no-rest-in-cmis</link>
	<description>musings of Roy T. Fielding</description>
	<lastBuildDate>Thu, 21 May 2009 18:54:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: blogs.oracle.com</title>
		<link>http://roy.gbiv.com/untangled/2008/no-rest-in-cmis#comment-702</link>
		<dc:creator>blogs.oracle.com</dc:creator>
		<pubDate>Thu, 02 Oct 2008 18:55:03 +0000</pubDate>
		<guid isPermaLink="false">http://roy.gbiv.com/untangled/?p=50#comment-702</guid>
		<description>&lt;strong&gt;CMIS: A Contrarian View...&lt;/strong&gt;

CMS Watch has this interesting post about the new CMIS specification. Roy T. Fielding (one of the *real...</description>
		<content:encoded><![CDATA[<p><strong>CMIS: A Contrarian View&#8230;</strong></p>
<p>CMS Watch has this interesting post about the new CMIS specification. Roy T. Fielding (one of the *real&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: albrown</title>
		<link>http://roy.gbiv.com/untangled/2008/no-rest-in-cmis#comment-701</link>
		<dc:creator>albrown</dc:creator>
		<pubDate>Thu, 02 Oct 2008 15:36:36 +0000</pubDate>
		<guid isPermaLink="false">http://roy.gbiv.com/untangled/?p=50#comment-701</guid>
		<description>Bex,

Thanks for your comment.  Even though the example files may use a particular url style, CMIS urls are opaque and can point to any different host/machine.  The binding starts with the APP service document and from there the client can unravel/traverse the links.  There are no hardcoded links or url patterns in CMIS as all urls are opaque.  This was done to give the implementors the widest possible freedom.  All resources are discoverable off of the APP service document.  All actions that create new items, etc, return a Content-Location header of the new URI for that resource.

Currently CMIS does not have the flickr pattern:

http://api.flickr.com/services/rest/?method=flickr.test.echo&amp;name=value

So, I think the TC needs to do a better job on explaining the rest-ful binding.

I&#039;d like to re-echo the comment, that we welcome participation and that I hope to see you and Roy in the TC</description>
		<content:encoded><![CDATA[<p>Bex,</p>
<p>Thanks for your comment.  Even though the example files may use a particular url style, CMIS urls are opaque and can point to any different host/machine.  The binding starts with the APP service document and from there the client can unravel/traverse the links.  There are no hardcoded links or url patterns in CMIS as all urls are opaque.  This was done to give the implementors the widest possible freedom.  All resources are discoverable off of the APP service document.  All actions that create new items, etc, return a Content-Location header of the new URI for that resource.</p>
<p>Currently CMIS does not have the flickr pattern:</p>
<p><a href="http://api.flickr.com/services/rest/?method=flickr.test.echo&amp;name=value" rel="nofollow">http://api.flickr.com/services/rest/?method=flickr.test.echo&amp;name=value</a></p>
<p>So, I think the TC needs to do a better job on explaining the rest-ful binding.</p>
<p>I&#8217;d like to re-echo the comment, that we welcome participation and that I hope to see you and Roy in the TC</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: bexmex</title>
		<link>http://roy.gbiv.com/untangled/2008/no-rest-in-cmis#comment-699</link>
		<dc:creator>bexmex</dc:creator>
		<pubDate>Thu, 02 Oct 2008 02:40:20 +0000</pubDate>
		<guid isPermaLink="false">http://roy.gbiv.com/untangled/?p=50#comment-699</guid>
		<description>Hmmm... I&#039;m starting to think that you feel the same way about ReST perversion the same way I think about SOAP perversion...

I like SOAP. I hate most of the WS-* stack. I hate schemas. I hate tight XML data binding. I hate people who ignore the fact that the &#039;S&#039; in &#039;SOAP&#039; originally stood for &#039;Simple.&#039;

You are 100% correct about Wikipedia. I think its explanation of ReST is more of a problem than a solution. The implication that ReST is just CRUD over HTTP makes me cringe...</description>
		<content:encoded><![CDATA[<p>Hmmm&#8230; I&#8217;m starting to think that you feel the same way about ReST perversion the same way I think about SOAP perversion&#8230;</p>
<p>I like SOAP. I hate most of the WS-* stack. I hate schemas. I hate tight XML data binding. I hate people who ignore the fact that the &#8216;S&#8217; in &#8216;SOAP&#8217; originally stood for &#8216;Simple.&#8217;</p>
<p>You are 100% correct about Wikipedia. I think its explanation of ReST is more of a problem than a solution. The implication that ReST is just CRUD over HTTP makes me cringe&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: De-hyping CMIS &#124; Craig's Musings</title>
		<link>http://roy.gbiv.com/untangled/2008/no-rest-in-cmis#comment-698</link>
		<dc:creator>De-hyping CMIS &#124; Craig's Musings</dc:creator>
		<pubDate>Wed, 01 Oct 2008 21:23:11 +0000</pubDate>
		<guid isPermaLink="false">http://roy.gbiv.com/untangled/?p=50#comment-698</guid>
		<description>[...] and Sam Ruby comment on CMIS. As someone directly involved in CMIS, I wanted to acknowledge both Roy&#8217;s remarks&#160; and Sam&#8217;s remarks, which follow onto [...]</description>
		<content:encoded><![CDATA[<p>[...] and Sam Ruby comment on CMIS. As someone directly involved in CMIS, I wanted to acknowledge both Roy&#8217;s remarks&nbsp; and Sam&#8217;s remarks, which follow onto [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Roy T. Fielding</title>
		<link>http://roy.gbiv.com/untangled/2008/no-rest-in-cmis#comment-697</link>
		<dc:creator>Roy T. Fielding</dc:creator>
		<pubDate>Wed, 01 Oct 2008 18:29:00 +0000</pubDate>
		<guid isPermaLink="false">http://roy.gbiv.com/untangled/?p=50#comment-697</guid>
		<description>bex -

Why do people think it is funny to portray REST as a religion? Architectural styles are just a means of communicating design decisions and comparing alternatives. There is no faith required. Do you think it would be funny if you asked a realtor to show you Victorian houses and they took you to a bunch of Ranch houses instead? Abusing design classifications makes it harder on everyone to communicate.

The Flickr API has been criticized by many people already. Flickr obviously don&#039;t have a clue what REST means since they just use it as an alias for HTTP. Perhaps that is because the Wikipedia entry is also confused. I don&#039;t know. What I do know is that I don&#039;t have time to instruct every company on how to design software. Outside of Day and Apache, I only get involved in criticizing a design when it becomes a standards-effort, since that is when the design transitions from being self-imposed to being imposed on others.</description>
		<content:encoded><![CDATA[<p>bex -</p>
<p>Why do people think it is funny to portray REST as a religion? Architectural styles are just a means of communicating design decisions and comparing alternatives. There is no faith required. Do you think it would be funny if you asked a realtor to show you Victorian houses and they took you to a bunch of Ranch houses instead? Abusing design classifications makes it harder on everyone to communicate.</p>
<p>The Flickr API has been criticized by many people already. Flickr obviously don&#8217;t have a clue what REST means since they just use it as an alias for HTTP. Perhaps that is because the Wikipedia entry is also confused. I don&#8217;t know. What I do know is that I don&#8217;t have time to instruct every company on how to design software. Outside of Day and Apache, I only get involved in criticizing a design when it becomes a standards-effort, since that is when the design transitions from being self-imposed to being imposed on others.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: albrown</title>
		<link>http://roy.gbiv.com/untangled/2008/no-rest-in-cmis#comment-696</link>
		<dc:creator>albrown</dc:creator>
		<pubDate>Wed, 01 Oct 2008 15:22:42 +0000</pubDate>
		<guid isPermaLink="false">http://roy.gbiv.com/untangled/?p=50#comment-696</guid>
		<description>Roy,

You raise good points and they should be discussed at the TC.  This is why we chose to come forward with the proposal in this space rather than continuing a private effort.  We want broader review on the specification so it has the best possible chance of solving customer&#039;s needs.

On (2) and (3), we have been discussing if the HTTP headers are used for changing the response (property filter, etc), returning a Content-Location header of an URI that points to that representation.  This came out with discussions with Julian Reschke earlier.  

On the other points, the mimetypes and atom link relationships will be registered as the specification gets closer to being a standard.

The table starting on page 15 identifies the atom link relationship that are required depending on the resource.

I walked through the binding again with Sam Ruby yesterday with how a client can start with an APP Service document and access the information in the repository.  He was satisfied.  I would be happy to walk you through the same exercise.  Especially since we are in the same location.

Also, Alfresco has their prototype public so you can get more experience with what we are proposing.

I think you will be positively surprised.</description>
		<content:encoded><![CDATA[<p>Roy,</p>
<p>You raise good points and they should be discussed at the TC.  This is why we chose to come forward with the proposal in this space rather than continuing a private effort.  We want broader review on the specification so it has the best possible chance of solving customer&#8217;s needs.</p>
<p>On (2) and (3), we have been discussing if the HTTP headers are used for changing the response (property filter, etc), returning a Content-Location header of an URI that points to that representation.  This came out with discussions with Julian Reschke earlier.  </p>
<p>On the other points, the mimetypes and atom link relationships will be registered as the specification gets closer to being a standard.</p>
<p>The table starting on page 15 identifies the atom link relationship that are required depending on the resource.</p>
<p>I walked through the binding again with Sam Ruby yesterday with how a client can start with an APP Service document and access the information in the repository.  He was satisfied.  I would be happy to walk you through the same exercise.  Especially since we are in the same location.</p>
<p>Also, Alfresco has their prototype public so you can get more experience with what we are proposing.</p>
<p>I think you will be positively surprised.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: bexmex</title>
		<link>http://roy.gbiv.com/untangled/2008/no-rest-in-cmis#comment-692</link>
		<dc:creator>bexmex</dc:creator>
		<pubDate>Wed, 01 Oct 2008 02:23:27 +0000</pubDate>
		<guid isPermaLink="false">http://roy.gbiv.com/untangled/?p=50#comment-692</guid>
		<description>So... are you going to similarly blast Flickr for not being ReST-ful? Check out the documentation on their &quot;ReST&quot; API:

http://www.flickr.com/services/api/request.rest.html

All requests take this form:

http://api.flickr.com/services/rest/?method=flickr.test.echo&amp;name=value

A HTTP GET is wisely idempotent, so you have to use POST to add/edit/delete... but (shudder) they put the method in URI. &lt;b&gt;Heathens! Heretics!&lt;/b&gt; Flickr should be burned at the stake for daring to call that ReST!!!  ;-)

Kidding aside, the CMIS &#039;ReST&#039; interface does have a similar &#039;bolt-on&#039; feel... but I doubt most people will care if its &#039;impure.&#039; The goal is easier interoperability, which means ugly sacrifices. I&#039;m just glad they made the wise choice to not require SOAP bindings and tons of WS-* layers.

ReST-ful or ReST-inspired: who cares? As long as its simpler...

Interesting point about CIFS... I was initially thinking CMIS would benefit from ActiveMQ wraper, or maybe a Session Initiation Protocol wrapper... 

-- bex</description>
		<content:encoded><![CDATA[<p>So&#8230; are you going to similarly blast Flickr for not being ReST-ful? Check out the documentation on their &#8220;ReST&#8221; API:</p>
<p><a href="http://www.flickr.com/services/api/request.rest.html" rel="nofollow">http://www.flickr.com/services/api/request.rest.html</a></p>
<p>All requests take this form:</p>
<p><a href="http://api.flickr.com/services/rest/?method=flickr.test.echo&amp;name=value" rel="nofollow">http://api.flickr.com/services/rest/?method=flickr.test.echo&amp;name=value</a></p>
<p>A HTTP GET is wisely idempotent, so you have to use POST to add/edit/delete&#8230; but (shudder) they put the method in URI. <b>Heathens! Heretics!</b> Flickr should be burned at the stake for daring to call that ReST!!!  <img src='http://roy.gbiv.com/untangled/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Kidding aside, the CMIS &#8216;ReST&#8217; interface does have a similar &#8216;bolt-on&#8217; feel&#8230; but I doubt most people will care if its &#8216;impure.&#8217; The goal is easier interoperability, which means ugly sacrifices. I&#8217;m just glad they made the wise choice to not require SOAP bindings and tons of WS-* layers.</p>
<p>ReST-ful or ReST-inspired: who cares? As long as its simpler&#8230;</p>
<p>Interesting point about CIFS&#8230; I was initially thinking CMIS would benefit from ActiveMQ wraper, or maybe a Session Initiation Protocol wrapper&#8230; </p>
<p>&#8211; bex</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Roy T. Fielding</title>
		<link>http://roy.gbiv.com/untangled/2008/no-rest-in-cmis#comment-691</link>
		<dc:creator>Roy T. Fielding</dc:creator>
		<pubDate>Wed, 01 Oct 2008 00:38:41 +0000</pubDate>
		<guid isPermaLink="false">http://roy.gbiv.com/untangled/?p=50#comment-691</guid>
		<description>Hi Al,

Regarding (1), it is deliberately misleading to portray CMIS as a standard when it has only been proposed for submission to OASIS, as is clearly being done on the &lt;a href=&quot;http://www.emc.com/products/documentum-platform/content-managment-interoperability-services.htm&quot; rel=&quot;nofollow&quot;&gt;EMC product page&lt;/a&gt;, &lt;a href=&quot;http://info.emc.com/mk/get/16292_LAND_RL&quot; rel=&quot;nofollow&quot;&gt;EMC whitepaper&lt;/a&gt;, and &lt;a href=&quot;http://www-01.ibm.com/software/data/content-management/cm-interoperablity-services.html&quot; rel=&quot;nofollow&quot;&gt;IBM product page&lt;/a&gt;.  Even the joint &lt;a href=&quot;http://www.emc.com/about/news/press/2008/091008-smr-content-management-interoperability-services.htm&quot; rel=&quot;nofollow&quot;&gt;press release&lt;/a&gt; starts out with the submission status and then devolves into a bunch of quotes about it being a standard.

Compare that to the more accurate portrayals of CMIS by &lt;a href=&quot;http://www.alfresco.com/media/releases/2008/09/cmis/&quot; rel=&quot;nofollow&quot;&gt;Alfresco&lt;/a&gt; and &lt;a href=&quot;http://blogs.msdn.com/ecm/archive/2008/09/09/announcing-the-content-management-interoperability-services-cmis-specification.aspx&quot; rel=&quot;nofollow&quot;&gt;Microsoft&lt;/a&gt;. IBM and EMC need to reign in their marketing folks.

Regarding (2) and (3), the REST constraints on identification of resources using identifiers and separation of action (method) from identification (URI) are not being followed when custom header fields are being used to tweak the scope of actions. Even if they were limited to content negotiation (selection of equivalent representations in different formats), these fields would still need to be listed in HTTP&#039;s Vary header to be compliant with the cache requirements. Instead, CMIS should use different resources (with different URIs) to represent the different views of repository state.

Regarding (4), the single-script gateway is more of a problem with the examples chosen in the specification than a limitation of the AtomPub binding.  The examples should be described in hypertext and the focus of the API should be on how the extended link relations identify the available repository resources. It is not clear from the specification that any of those links are required, let alone expected within the response.  That is the hypertext constraint. Almost all of the examples end with the first line of content.

Regarding (5), exposing search criteria is typically done using simple forms or URI templates. Defining a new media type might make sense for something like XForms or XQuery, but there isn&#039;t anything particularly RESTful about sending a complete representation of the query in a standardized media type versus appending terms to a URI&#039;s query component. The RESTful aspect is being instructed on what to do by the current representation, whether that be in the form of a link relationship that indicates the queryable resource or a form that instructs the client on how to compose and post a query to a provided URI.  The only example I could find in CMIS is an RPC call on the main service URI using a POST of the cmisrequest content type. There is no indication anywhere that this example is being driven by hypertext, and thus the query isn&#039;t RESTful because it relies on the client having hard-coded knowledge that the CMIS repository entry point will accept a POST of this format to indicate a query.

All of those points are rather small compared to my overall complaint that it isn&#039;t appropriate to define a &quot;REST&quot; binding to a specific data model&#039;s limitations. The whole point of REST is to avoid coupling between the client applications and whatever implementation might be behind the abstract interface provided by the server. REST accomplishes that by eliminating the need to think in terms of resource types or specialized interfaces. Instead, the representations tell the application how and what it can do next.  Any resource can potentially be viewed as a document or as a folder, depending on how one might want to look at the information.  The trick is to define how such resources are related to one another in an implementation-independent manner that can be provided as the interface to any back-end, not just a back-end that corresponds to one data model.

AtomPub is certainly one RESTful way to interface with content if that content drives the application.  The relationships could be represented by extensions in the form of links in the Atom format, and perhaps even an XForms or WebForms integration for the formation of queries. Such extensions should be vetted by the same organization that developed AtomPub, the Internet Engineering Taskforce (IETF), not OASIS. However, unless you expect blogging clients and syndication feeds to be the primary application of CMIS, it would make a lot more sense to define the representations in a microformat of HTML, JSON, YAML, or whatever else best fits the data.

....Roy</description>
		<content:encoded><![CDATA[<p>Hi Al,</p>
<p>Regarding (1), it is deliberately misleading to portray CMIS as a standard when it has only been proposed for submission to OASIS, as is clearly being done on the <a href="http://www.emc.com/products/documentum-platform/content-managment-interoperability-services.htm" rel="nofollow">EMC product page</a>, <a href="http://info.emc.com/mk/get/16292_LAND_RL" rel="nofollow">EMC whitepaper</a>, and <a href="http://www-01.ibm.com/software/data/content-management/cm-interoperablity-services.html" rel="nofollow">IBM product page</a>.  Even the joint <a href="http://www.emc.com/about/news/press/2008/091008-smr-content-management-interoperability-services.htm" rel="nofollow">press release</a> starts out with the submission status and then devolves into a bunch of quotes about it being a standard.</p>
<p>Compare that to the more accurate portrayals of CMIS by <a href="http://www.alfresco.com/media/releases/2008/09/cmis/" rel="nofollow">Alfresco</a> and <a href="http://blogs.msdn.com/ecm/archive/2008/09/09/announcing-the-content-management-interoperability-services-cmis-specification.aspx" rel="nofollow">Microsoft</a>. IBM and EMC need to reign in their marketing folks.</p>
<p>Regarding (2) and (3), the REST constraints on identification of resources using identifiers and separation of action (method) from identification (URI) are not being followed when custom header fields are being used to tweak the scope of actions. Even if they were limited to content negotiation (selection of equivalent representations in different formats), these fields would still need to be listed in HTTP&#8217;s Vary header to be compliant with the cache requirements. Instead, CMIS should use different resources (with different URIs) to represent the different views of repository state.</p>
<p>Regarding (4), the single-script gateway is more of a problem with the examples chosen in the specification than a limitation of the AtomPub binding.  The examples should be described in hypertext and the focus of the API should be on how the extended link relations identify the available repository resources. It is not clear from the specification that any of those links are required, let alone expected within the response.  That is the hypertext constraint. Almost all of the examples end with the first line of content.</p>
<p>Regarding (5), exposing search criteria is typically done using simple forms or URI templates. Defining a new media type might make sense for something like XForms or XQuery, but there isn&#8217;t anything particularly RESTful about sending a complete representation of the query in a standardized media type versus appending terms to a URI&#8217;s query component. The RESTful aspect is being instructed on what to do by the current representation, whether that be in the form of a link relationship that indicates the queryable resource or a form that instructs the client on how to compose and post a query to a provided URI.  The only example I could find in CMIS is an RPC call on the main service URI using a POST of the cmisrequest content type. There is no indication anywhere that this example is being driven by hypertext, and thus the query isn&#8217;t RESTful because it relies on the client having hard-coded knowledge that the CMIS repository entry point will accept a POST of this format to indicate a query.</p>
<p>All of those points are rather small compared to my overall complaint that it isn&#8217;t appropriate to define a &#8220;REST&#8221; binding to a specific data model&#8217;s limitations. The whole point of REST is to avoid coupling between the client applications and whatever implementation might be behind the abstract interface provided by the server. REST accomplishes that by eliminating the need to think in terms of resource types or specialized interfaces. Instead, the representations tell the application how and what it can do next.  Any resource can potentially be viewed as a document or as a folder, depending on how one might want to look at the information.  The trick is to define how such resources are related to one another in an implementation-independent manner that can be provided as the interface to any back-end, not just a back-end that corresponds to one data model.</p>
<p>AtomPub is certainly one RESTful way to interface with content if that content drives the application.  The relationships could be represented by extensions in the form of links in the Atom format, and perhaps even an XForms or WebForms integration for the formation of queries. Such extensions should be vetted by the same organization that developed AtomPub, the Internet Engineering Taskforce (IETF), not OASIS. However, unless you expect blogging clients and syndication feeds to be the primary application of CMIS, it would make a lot more sense to define the representations in a microformat of HTML, JSON, YAML, or whatever else best fits the data.</p>
<p>&#8230;.Roy</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Prescott Shibles: B2B Digital Media</title>
		<link>http://roy.gbiv.com/untangled/2008/no-rest-in-cmis#comment-690</link>
		<dc:creator>Prescott Shibles: B2B Digital Media</dc:creator>
		<pubDate>Tue, 30 Sep 2008 21:45:41 +0000</pubDate>
		<guid isPermaLink="false">http://roy.gbiv.com/untangled/?p=50#comment-690</guid>
		<description>&lt;strong&gt;Is CMIS RESTful? Or merely HYPEful?...&lt;/strong&gt;

Not long ago I blogged about the newly announced Content Management Interoperability Services specification, which is a joint effort of EMC, IBM, Open Text, Oracle, SAP,...</description>
		<content:encoded><![CDATA[<p><strong>Is CMIS RESTful? Or merely HYPEful?&#8230;</strong></p>
<p>Not long ago I blogged about the newly announced Content Management Interoperability Services specification, which is a joint effort of EMC, IBM, Open Text, Oracle, SAP,&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: albrown</title>
		<link>http://roy.gbiv.com/untangled/2008/no-rest-in-cmis#comment-688</link>
		<dc:creator>albrown</dc:creator>
		<pubDate>Tue, 30 Sep 2008 15:50:41 +0000</pubDate>
		<guid isPermaLink="false">http://roy.gbiv.com/untangled/?p=50#comment-688</guid>
		<description>Roy,

I always enjoy your musings.  I am glad you decided to post about CMIS.  It is something I am very excited about and something David Neuscheller has been talking about years now, the need for a protocol-based binding for repositories.

You raise a few points:

1. Not a standard
2. Methods in query strings
3. Header fields for search scope
4. Single-Script gateway (tunnelling)
5. Exposing query
6. Big vendors not listening

CMIS is a draft specification as you rightly point out.  As it goes through the OASIS process, it may become a standard.

The next three items you raise where the RESTish AtomPub binding does not meet the principles in your dissertation.  I believe you have not read the specification closely enough, or we need to rewrite the specification to make these points more clear.  

The HTTP headers or Query strings fall into two categories:
A. Provide guidance on the representation much like the Accept header.  Examples are includeAllowableActions, filter, etc.  These all predominately GET-related
B. Provide guidance on the behavior of common HTTP verbs (PUT, POST) when default behavior is not sufficient.  Examples of these are major=false on checkin.  These are predominately because the group wanted to stay with the common HTTP verbs rather than leverage new or newer HTTP verbs.  
Neither of these violate REST principles, though I am happy to discuss how to make it a better REST-ful proposal,

On the single-script gateway issue, the REST-ish AtomPub binding starts with an APP service doc and exposes collections.  The collections can then be retrieved to view the contents in the repository as atom feeds.  At that point documents or folders are exposed as Atom documents.  They contain links to other resources such as allversions for the version history collection as feed, relationships for the relationships on an object, allowableactions in a well defined format, etc.

We also extended AtomPub collections to have meaning besides membership for unfiled and checkedout collections.  When a document is added to those collections (becomes a member), it is either removed from all other collections or checkedout respectively.

So, we exposed a lot of resources and leveraged hypertext to allow a client to unravel/traverse the repository.  All resources have a well defined type.  The REST-ish AtomPub binding leverages XSD extensively to define the document formats.

On the query item (#5), how do you propose to expose search criteria?  The current model is posting a well-defined doc format to a collection (query collection) and getting a collection (hypermedia document back with links) returned using the Content-Location header.  That seems REST-ful to me.

On the vendors not listening, I welcome you to participate at OASIS and contribute in discussions on this topic.  I, personally, am very interested in discussing this with you.  I think this is the first large effort by vendors big and small to provide a large set of functionality in two modes: Service-based and Resource-based.</description>
		<content:encoded><![CDATA[<p>Roy,</p>
<p>I always enjoy your musings.  I am glad you decided to post about CMIS.  It is something I am very excited about and something David Neuscheller has been talking about years now, the need for a protocol-based binding for repositories.</p>
<p>You raise a few points:</p>
<p>1. Not a standard<br />
2. Methods in query strings<br />
3. Header fields for search scope<br />
4. Single-Script gateway (tunnelling)<br />
5. Exposing query<br />
6. Big vendors not listening</p>
<p>CMIS is a draft specification as you rightly point out.  As it goes through the OASIS process, it may become a standard.</p>
<p>The next three items you raise where the RESTish AtomPub binding does not meet the principles in your dissertation.  I believe you have not read the specification closely enough, or we need to rewrite the specification to make these points more clear.  </p>
<p>The HTTP headers or Query strings fall into two categories:<br />
A. Provide guidance on the representation much like the Accept header.  Examples are includeAllowableActions, filter, etc.  These all predominately GET-related<br />
B. Provide guidance on the behavior of common HTTP verbs (PUT, POST) when default behavior is not sufficient.  Examples of these are major=false on checkin.  These are predominately because the group wanted to stay with the common HTTP verbs rather than leverage new or newer HTTP verbs.<br />
Neither of these violate REST principles, though I am happy to discuss how to make it a better REST-ful proposal,</p>
<p>On the single-script gateway issue, the REST-ish AtomPub binding starts with an APP service doc and exposes collections.  The collections can then be retrieved to view the contents in the repository as atom feeds.  At that point documents or folders are exposed as Atom documents.  They contain links to other resources such as allversions for the version history collection as feed, relationships for the relationships on an object, allowableactions in a well defined format, etc.</p>
<p>We also extended AtomPub collections to have meaning besides membership for unfiled and checkedout collections.  When a document is added to those collections (becomes a member), it is either removed from all other collections or checkedout respectively.</p>
<p>So, we exposed a lot of resources and leveraged hypertext to allow a client to unravel/traverse the repository.  All resources have a well defined type.  The REST-ish AtomPub binding leverages XSD extensively to define the document formats.</p>
<p>On the query item (#5), how do you propose to expose search criteria?  The current model is posting a well-defined doc format to a collection (query collection) and getting a collection (hypermedia document back with links) returned using the Content-Location header.  That seems REST-ful to me.</p>
<p>On the vendors not listening, I welcome you to participate at OASIS and contribute in discussions on this topic.  I, personally, am very interested in discussing this with you.  I think this is the first large effort by vendors big and small to provide a large set of functionality in two modes: Service-based and Resource-based.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.767 seconds -->
