<?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: REST in practice for IT and Cloud management (part 2: configuration management)</title>
	<atom:link href="http://stage.vambenepe.com/archives/894/feed" rel="self" type="application/rss+xml" />
	<link>http://stage.vambenepe.com/archives/894</link>
	<description>William Vambenepe&#039;s stage</description>
	<lastBuildDate>Tue, 07 Feb 2012 23:33:47 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: What Language Does the Cloud Speak, Now and In the Future?</title>
		<link>http://stage.vambenepe.com/archives/894#comment-602</link>
		<dc:creator>What Language Does the Cloud Speak, Now and In the Future?</dc:creator>
		<pubDate>Thu, 27 Jan 2011 07:00:51 +0000</pubDate>
		<guid isPermaLink="false">http://stage.vambenepe.com/?p=894#comment-602</guid>
		<description>[...]  [...] </description>
		<content:encoded><![CDATA[<p>[...]  [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: William Vambenepe &#8212; Amazon proves that REST doesn&#8217;t matter for Cloud APIs</title>
		<link>http://stage.vambenepe.com/archives/894#comment-601</link>
		<dc:creator>William Vambenepe &#8212; Amazon proves that REST doesn&#8217;t matter for Cloud APIs</dc:creator>
		<pubDate>Tue, 07 Dec 2010 06:00:20 +0000</pubDate>
		<guid isPermaLink="false">http://stage.vambenepe.com/?p=894#comment-601</guid>
		<description>[...] a series of post examining &#8220;REST in practice for IT and Cloud management&#8221; (part 1, part 2 and part 3), to now declare that REST doesn&#8217;t matter, well go back to these posts. I [...] </description>
		<content:encoded><![CDATA[<p>[...] a series of post examining &#8220;REST in practice for IT and Cloud management&#8221; (part 1, part 2 and part 3), to now declare that REST doesn&#8217;t matter, well go back to these posts. I [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: William Vambenepe &#8212; REST in practice for IT and Cloud management (part 3: wrap-up)</title>
		<link>http://stage.vambenepe.com/archives/894#comment-600</link>
		<dc:creator>William Vambenepe &#8212; REST in practice for IT and Cloud management (part 3: wrap-up)</dc:creator>
		<pubDate>Thu, 10 Dec 2009 18:36:33 +0000</pubDate>
		<guid isPermaLink="false">http://stage.vambenepe.com/?p=894#comment-600</guid>
		<description>[...] management. Part 1 was a comparison of the RESTful aspects of four well-known IaaS Cloud APIs and part 2 was an analysis of how REST applies to configuration management. Both of these entries received [...] </description>
		<content:encoded><![CDATA[<p>[...] management. Part 1 was a comparison of the RESTful aspects of four well-known IaaS Cloud APIs and part 2 was an analysis of how REST applies to configuration management. Both of these entries received [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: William Vambenepe</title>
		<link>http://stage.vambenepe.com/archives/894#comment-599</link>
		<dc:creator>William Vambenepe</dc:creator>
		<pubDate>Wed, 12 Aug 2009 21:21:52 +0000</pubDate>
		<guid isPermaLink="false">http://stage.vambenepe.com/?p=894#comment-599</guid>
		<description>Stu,

Yes, this clearly calls for coffee. Or a beer.</description>
		<content:encoded><![CDATA[<p>Stu,</p>
<p>Yes, this clearly calls for coffee. Or a beer.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Stu</title>
		<link>http://stage.vambenepe.com/archives/894#comment-598</link>
		<dc:creator>Stu</dc:creator>
		<pubDate>Wed, 12 Aug 2009 17:30:17 +0000</pubDate>
		<guid isPermaLink="false">http://stage.vambenepe.com/?p=894#comment-598</guid>
		<description>FWIW, I still think we have a disconnect on RPC, but I&#039;ll drop it :)

Regarding OpenSearch, I actually think that&#039;s an example of hypermedia interaction, not RPC.  You&#039;re GETting the Opensearch document or keeping a cached representation around.  I think is is *very* different from compiling stubs &amp; skeletons.    But elaborating beyond this is probably for another time.</description>
		<content:encoded><![CDATA[<p>FWIW, I still think we have a disconnect on RPC, but I&#8217;ll drop it <img src='http://stage.vambenepe.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Regarding OpenSearch, I actually think that&#8217;s an example of hypermedia interaction, not RPC.  You&#8217;re GETting the Opensearch document or keeping a cached representation around.  I think is is *very* different from compiling stubs &amp; skeletons.    But elaborating beyond this is probably for another time.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: William Vambenepe</title>
		<link>http://stage.vambenepe.com/archives/894#comment-597</link>
		<dc:creator>William Vambenepe</dc:creator>
		<pubDate>Thu, 06 Aug 2009 18:54:47 +0000</pubDate>
		<guid isPermaLink="false">http://stage.vambenepe.com/?p=894#comment-597</guid>
		<description>Hi Stu and thanks for your perseverance.

On the RPC stuff all you say is correct as far as the underlying technology. But I tend to look at this along the lines of the wave/particle duality of light (sorry for sounding pretentious). Use the viewpoint that works well for what you care about (e.g. light as waves for studying interference). I think there are many practical purposes where Google usage is more akin to RPC.

Look at the opensearch box in your browser. It doesn&#039;t re-discover the contract every time. It has loaded an interface description (in the opensearch format) which is specifically defined as a &quot;search&quot; interface. Same thing for all the sites that have a &quot;search this site via Google&quot; feature. They don&#039;t do a GET on google.com, they have a hard-coded mechanism to build a Google search URL that restricts the search to the site at hand. It is not very different from &quot;a Search interface that was pre-compiled into stubs &amp; skeletons&quot;.

So I think the RPC and the hypermedia models apply best to different ways to use Google.

In the context of CMDB and config stores (what I really care about here, the Google parenthesis is more of a distraction), it&#039;s hard to imagine that most clients will take a hypertext approach (let&#039;s go to assetmgmt.mycompany.com and see what page I get back) versus a contract (implicit or explicit) drive approach to integration. At least for the next few years, they&#039;ll be in effect an implicit &quot;search/query&quot; function for system to system integration. Maybe not for the ultimate human interface. But I am mostly focused on automation so I care more about system to system than UI in this context.

On the rise of &quot;network protocols&quot; (or &quot;on the wire protocols&quot; as I usually refer to them) you&#039;re spot on and it&#039;s a good thing. But POP and IMAP (and FTP) are also on-the-wire and they are closer in feel to RPC than to hypermedia. Though I agree that hypermedia systems in general make for better on-the-wire protocols because of fewer shared assumptions. And that indeed HTTP+URI is a culmination, at least for now. But it&#039;s still wondering what exactly of this mechanism provides what value and how applicable it is to different applications. Which is what this blog series is all about.

I don&#039;t disagree with you on WSDL, though it is especially WSDL 1.1. Technically WSDL 2.0 doesn&#039;t force this. But in practice WSDL is WSDL 1.1 (even if people use 2.0, they use it in the 1.1 mental model). The decision in WSDL 1.1 to assign a single URI to a port (and therefore prevent fine-grained URI-based addressing) is what let to the need for EPRs and potentially the single most damaging decision in the SOAP/WS stack. Sad, really.

On the change/abstraction question, I share your hope. But I must say that I am a bit dismayed on the current focus on hypervisor-style, VM-based virtualization (&quot;fake machines&quot; as opposed to true &quot;virtualized machines&quot;). I understand all the practical benefits, but I am also pretty sure that the VMware-style VM is not the right building block for this abstraction. It will take a while to get to the right level of maturity. Middleware might be about to become cool again...

Thanks again. Your comments are helping shape up the wrap-up of this series (part 3).</description>
		<content:encoded><![CDATA[<p>Hi Stu and thanks for your perseverance.</p>
<p>On the RPC stuff all you say is correct as far as the underlying technology. But I tend to look at this along the lines of the wave/particle duality of light (sorry for sounding pretentious). Use the viewpoint that works well for what you care about (e.g. light as waves for studying interference). I think there are many practical purposes where Google usage is more akin to RPC.</p>
<p>Look at the opensearch box in your browser. It doesn&#8217;t re-discover the contract every time. It has loaded an interface description (in the opensearch format) which is specifically defined as a &#8220;search&#8221; interface. Same thing for all the sites that have a &#8220;search this site via Google&#8221; feature. They don&#8217;t do a GET on google.com, they have a hard-coded mechanism to build a Google search URL that restricts the search to the site at hand. It is not very different from &#8220;a Search interface that was pre-compiled into stubs &#038; skeletons&#8221;.</p>
<p>So I think the RPC and the hypermedia models apply best to different ways to use Google.</p>
<p>In the context of CMDB and config stores (what I really care about here, the Google parenthesis is more of a distraction), it&#8217;s hard to imagine that most clients will take a hypertext approach (let&#8217;s go to assetmgmt.mycompany.com and see what page I get back) versus a contract (implicit or explicit) drive approach to integration. At least for the next few years, they&#8217;ll be in effect an implicit &#8220;search/query&#8221; function for system to system integration. Maybe not for the ultimate human interface. But I am mostly focused on automation so I care more about system to system than UI in this context.</p>
<p>On the rise of &#8220;network protocols&#8221; (or &#8220;on the wire protocols&#8221; as I usually refer to them) you&#8217;re spot on and it&#8217;s a good thing. But POP and IMAP (and FTP) are also on-the-wire and they are closer in feel to RPC than to hypermedia. Though I agree that hypermedia systems in general make for better on-the-wire protocols because of fewer shared assumptions. And that indeed HTTP+URI is a culmination, at least for now. But it&#8217;s still wondering what exactly of this mechanism provides what value and how applicable it is to different applications. Which is what this blog series is all about.</p>
<p>I don&#8217;t disagree with you on WSDL, though it is especially WSDL 1.1. Technically WSDL 2.0 doesn&#8217;t force this. But in practice WSDL is WSDL 1.1 (even if people use 2.0, they use it in the 1.1 mental model). The decision in WSDL 1.1 to assign a single URI to a port (and therefore prevent fine-grained URI-based addressing) is what let to the need for EPRs and potentially the single most damaging decision in the SOAP/WS stack. Sad, really.</p>
<p>On the change/abstraction question, I share your hope. But I must say that I am a bit dismayed on the current focus on hypervisor-style, VM-based virtualization (&#8220;fake machines&#8221; as opposed to true &#8220;virtualized machines&#8221;). I understand all the practical benefits, but I am also pretty sure that the VMware-style VM is not the right building block for this abstraction. It will take a while to get to the right level of maturity. Middleware might be about to become cool again&#8230;</p>
<p>Thanks again. Your comments are helping shape up the wrap-up of this series (part 3).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Stu</title>
		<link>http://stage.vambenepe.com/archives/894#comment-596</link>
		<dc:creator>Stu</dc:creator>
		<pubDate>Thu, 06 Aug 2009 06:38:57 +0000</pubDate>
		<guid isPermaLink="false">http://stage.vambenepe.com/?p=894#comment-596</guid>
		<description>Hi William,

- WRT RPC, I still think there&#039;s a major disconnect.  I really wasn&#039;t attempting to focus on an OO here.  I was saying, fundamentally, the Web is not like RPC in *at all* except that they share Request-Response semantics, and that you could layer an RPC interface on top of the Web if you&#039;d like, but the Web itself isn&#039;t one.    I&#039;ll take a step back and provide broader context, some of which I&#039;m sure you&#039;re aware of, forgive me if it comes across as pedantic...

Firstly, with Google, there&#039;s no interface defined as &quot;Search&quot;.    The interface is uniform - GET, POST, etc.   To know what method to use and what data to send, the client has to dig into a different interface layer (i.e. into the data representation) and look at what hyperlinks exist there, and in what context.     All interactions basically start with either a GET to a bookmarked URI or with a prior cached representation, and flow from there.    

That&#039;s very different from a model where you have a Search interface that was pre-compiled into stubs &amp; skeletons.    Which is why I was suggesting the Web is much more like DII or COM Automation or Reflection, wherein you don&#039;t pre-compile against a concrete interface, you query the interface, match strings, match argument lists, etc.    It&#039;s much more dynamic (and, in practice, feels cumbersome, because it was usually an afterthought to the original RPC model).  

Secondly, by &quot;object-model&quot;, I really meant &quot;data-structure &amp; memory-model&quot;.   RPC largely was about marshaling programmatic data-structures with portable serialization formats like XDR.    The primacy of the interface, however, was oriented around the shape the server programmer wanted, with the primary intent being to &quot;hide&quot; the network interaction and make it look like a regular programmatic interaction.    In SOA terms, it was a &quot;producer-oriented contract&quot;.   Clients were forced to conform to what the server wanted; the burden was on them.

Whereas, network &lt;a href=&quot;http://www.ics.uci.edu/~rohit/L7-1.html&quot; rel=&quot;nofollow&quot;&gt;transfer protocols&lt;/a&gt;, like FTP, HTTP, NNTP, etc., weren&#039;t designed by programmers so much as network engineers.  They are &quot;Network APIs&quot;, in that they weren&#039;t based around any particular programmatic data structures or serialization formats.  They used text and/or MIME entities, and were designed around the intent of the client (a &quot;consumer-oriented contract&quot;).    The intent was to provide the network interaction as an explicit abstraction.   This arguably leads to greater scale and reliability for client developers, at the cost of increased programmatic inconvenience for server developers who couldn&#039;t dictate things to the client.   HTTP+URI arguably is the culmination to date of these many decades of work on transfer protocols (with URI being the primary innovation).

- Regarding Forms.   These can be (and are) machine readable, though most of the ones we&#039;ve seen in practice have been intended for hybrid human/machine consumption (XForms is a good example, but so are XHTML forms).    Forms are the equivalent of describing an interface the way CORBA DII, COM IDispatch or java.lang.reflect.* do.     Even an AtomPub interface describes a this kind of interface at a coarse grained level (&quot;put image/* things here that belong in such-and-such category&quot;).   

What&#039;s missing is a widely standardized way to denote, in a machine readable way, what the intent of that form is.   There are practical approaches out there:  RDFa, Microformats like XMDP, or eschewing XHTML and just using well-specified JSON or XML hypertext documents.

As to whether you describe an interface in MIME types or  WSDL, there is a big difference.   Describing a document with a schema-language, like &quot;XSD&quot;, is one thing.   Even using SOAP-sans-WSDL would more be reasonable (using SOAPAction to denote intent).    Both of these arguably can preserve the interaction model of hypermedia.   But, WSDL is about describing a different interaction model that just happens to tunnel on top of HTTP.  One describes operations and ports to note a variety of message exchange patterns.   You&#039;re jumping out of hypertext land and into Operation and Ports land all of a sudden.    Is it bad?    Perhaps not, if that&#039;s what is needed.   I often joke that WSDL needs REST anyway, since RESTful use of HTTP is the most common way to discover WSDL documents (i.e. surfing to your SOAP gateway with a ?WSDL query string).   But it&#039;s quite a jump in both infrastructure and processing model.


- You suggested:
&lt;I&gt; &quot;Agree that relationships can be made resources. It’s just that this is not predominant in REST systems.&quot;&lt;/I&gt;

The nascent systems you&#039;ve analyzed in the Cloud API space, I agree.   But, I suggest taking a look at how social syndication &amp; aggregation sites like Facebook, Friendfeed, etc., provide lifecycle and metadata services to information relationships.   Those things are absolutely using machine-readable data to do it too (even if the bulk of the content is being presented to an end-user).

- WRT changes .. I figure we&#039;ll come up with a good abstraction model as an industry some day.   It might not be hypermedia-driven, but I hope it&#039;s as extensible.   I have no idea when this will happen.   I do hope the work we&#039;re doing will contribute to progressing this in some way, but after learning many hard lessons .... there&#039;s a long, bumpy road ahead.</description>
		<content:encoded><![CDATA[<p>Hi William,</p>
<p>- WRT RPC, I still think there&#8217;s a major disconnect.  I really wasn&#8217;t attempting to focus on an OO here.  I was saying, fundamentally, the Web is not like RPC in *at all* except that they share Request-Response semantics, and that you could layer an RPC interface on top of the Web if you&#8217;d like, but the Web itself isn&#8217;t one.    I&#8217;ll take a step back and provide broader context, some of which I&#8217;m sure you&#8217;re aware of, forgive me if it comes across as pedantic&#8230;</p>
<p>Firstly, with Google, there&#8217;s no interface defined as &#8220;Search&#8221;.    The interface is uniform &#8211; GET, POST, etc.   To know what method to use and what data to send, the client has to dig into a different interface layer (i.e. into the data representation) and look at what hyperlinks exist there, and in what context.     All interactions basically start with either a GET to a bookmarked URI or with a prior cached representation, and flow from there.    </p>
<p>That&#8217;s very different from a model where you have a Search interface that was pre-compiled into stubs &amp; skeletons.    Which is why I was suggesting the Web is much more like DII or COM Automation or Reflection, wherein you don&#8217;t pre-compile against a concrete interface, you query the interface, match strings, match argument lists, etc.    It&#8217;s much more dynamic (and, in practice, feels cumbersome, because it was usually an afterthought to the original RPC model).  </p>
<p>Secondly, by &#8220;object-model&#8221;, I really meant &#8220;data-structure &amp; memory-model&#8221;.   RPC largely was about marshaling programmatic data-structures with portable serialization formats like XDR.    The primacy of the interface, however, was oriented around the shape the server programmer wanted, with the primary intent being to &#8220;hide&#8221; the network interaction and make it look like a regular programmatic interaction.    In SOA terms, it was a &#8220;producer-oriented contract&#8221;.   Clients were forced to conform to what the server wanted; the burden was on them.</p>
<p>Whereas, network <a href="http://www.ics.uci.edu/~rohit/L7-1.html" rel="nofollow">transfer protocols</a>, like FTP, HTTP, NNTP, etc., weren&#8217;t designed by programmers so much as network engineers.  They are &#8220;Network APIs&#8221;, in that they weren&#8217;t based around any particular programmatic data structures or serialization formats.  They used text and/or MIME entities, and were designed around the intent of the client (a &#8220;consumer-oriented contract&#8221;).    The intent was to provide the network interaction as an explicit abstraction.   This arguably leads to greater scale and reliability for client developers, at the cost of increased programmatic inconvenience for server developers who couldn&#8217;t dictate things to the client.   HTTP+URI arguably is the culmination to date of these many decades of work on transfer protocols (with URI being the primary innovation).</p>
<p>- Regarding Forms.   These can be (and are) machine readable, though most of the ones we&#8217;ve seen in practice have been intended for hybrid human/machine consumption (XForms is a good example, but so are XHTML forms).    Forms are the equivalent of describing an interface the way CORBA DII, COM IDispatch or java.lang.reflect.* do.     Even an AtomPub interface describes a this kind of interface at a coarse grained level (&#8220;put image/* things here that belong in such-and-such category&#8221;).   </p>
<p>What&#8217;s missing is a widely standardized way to denote, in a machine readable way, what the intent of that form is.   There are practical approaches out there:  RDFa, Microformats like XMDP, or eschewing XHTML and just using well-specified JSON or XML hypertext documents.</p>
<p>As to whether you describe an interface in MIME types or  WSDL, there is a big difference.   Describing a document with a schema-language, like &#8220;XSD&#8221;, is one thing.   Even using SOAP-sans-WSDL would more be reasonable (using SOAPAction to denote intent).    Both of these arguably can preserve the interaction model of hypermedia.   But, WSDL is about describing a different interaction model that just happens to tunnel on top of HTTP.  One describes operations and ports to note a variety of message exchange patterns.   You&#8217;re jumping out of hypertext land and into Operation and Ports land all of a sudden.    Is it bad?    Perhaps not, if that&#8217;s what is needed.   I often joke that WSDL needs REST anyway, since RESTful use of HTTP is the most common way to discover WSDL documents (i.e. surfing to your SOAP gateway with a ?WSDL query string).   But it&#8217;s quite a jump in both infrastructure and processing model.</p>
<p>- You suggested:<br />
<i> &#8220;Agree that relationships can be made resources. It’s just that this is not predominant in REST systems.&#8221;</i></p>
<p>The nascent systems you&#8217;ve analyzed in the Cloud API space, I agree.   But, I suggest taking a look at how social syndication &amp; aggregation sites like Facebook, Friendfeed, etc., provide lifecycle and metadata services to information relationships.   Those things are absolutely using machine-readable data to do it too (even if the bulk of the content is being presented to an end-user).</p>
<p>- WRT changes .. I figure we&#8217;ll come up with a good abstraction model as an industry some day.   It might not be hypermedia-driven, but I hope it&#8217;s as extensible.   I have no idea when this will happen.   I do hope the work we&#8217;re doing will contribute to progressing this in some way, but after learning many hard lessons &#8230;. there&#8217;s a long, bumpy road ahead.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: William Vambenepe</title>
		<link>http://stage.vambenepe.com/archives/894#comment-595</link>
		<dc:creator>William Vambenepe</dc:creator>
		<pubDate>Wed, 05 Aug 2009 06:32:50 +0000</pubDate>
		<guid isPermaLink="false">http://stage.vambenepe.com/?p=894#comment-595</guid>
		<description>Hi Stu,

Thanks for the detailed comment. Here are a few responses to some of your many points:

- WRT to RPC I don&#039;t use that term in a way that implies OO. I just mean that you call a procedure by passing its input parameters and you get results back. Basically the way good old Sun RPC was defined. With no assumption of long-lived objects or any other persistence on the remote machine. In the Google case, I call a procedure called &quot;search&quot; by passing as input a set of keywords. I get back a list of URLs with a small description for each. It seems to match pretty well by that definition of RPC.

- the &quot;forms&quot; part is interesting, but how does this translate to machine-to-machine interactions? How is my CMDB, for example, going to realize that this page represent an event notification subscription form and that this other one represents a query on the historical config of the resource? Unless you turn these forms (exposed via a common interface) into machine-readable interfaces of their own? Whether you do it though mime types or WSDL doesn&#039;t matter as much as the fact that you have to have an agreement if there is no human sitting in front of the machine. What am I missing?

- WRT to the pre-1995 web, I agree that technically we have the same web. But in practice we don&#039;t because of the work Google and Microsoft have put into providing these search services. Sure they are just gigantic web apps, but in practice they are part of the Web and they shape (in many ways) how web apps are created and how they are consumed. And what the web is useful for.

- And I very much agree that &quot;there’s something very powerful about being able to access and analyze information without requiring portions of the “middleware” to understand much of its underlying schema or semantics&quot;. For one thing, that&#039;s what made Google possible. But not just that.

- Agree that relationships can be made resources. It&#039;s just that this is not predominant in REST systems. But nothing stops REST-for-IT from doing it.

- Yep, there are hacks to try to deal with stale references, like the semweb approaches you list. BTW, WSRF had a child spec called WS-ReferenceRenewal that did just that but was never published. GGF wrote WS-Naming for that too.

- Finally, wrt to enacting changes, I have to some extent covered this in part 1, when looking at the IaaS cloud APIs. One of the issues is the difference between the config you can get and what you can set. I don&#039;t think it&#039;s impossible but it takes a level of abstraction and templatization that goes beyond the current &quot;make it look like a physical machine&quot; approach. But some smart people may well figure out the right abstraction model, on which such a hypermedia-driven control system can be effective. Do you happen to know any such person?</description>
		<content:encoded><![CDATA[<p>Hi Stu,</p>
<p>Thanks for the detailed comment. Here are a few responses to some of your many points:</p>
<p>- WRT to RPC I don&#8217;t use that term in a way that implies OO. I just mean that you call a procedure by passing its input parameters and you get results back. Basically the way good old Sun RPC was defined. With no assumption of long-lived objects or any other persistence on the remote machine. In the Google case, I call a procedure called &#8220;search&#8221; by passing as input a set of keywords. I get back a list of URLs with a small description for each. It seems to match pretty well by that definition of RPC.</p>
<p>- the &#8220;forms&#8221; part is interesting, but how does this translate to machine-to-machine interactions? How is my CMDB, for example, going to realize that this page represent an event notification subscription form and that this other one represents a query on the historical config of the resource? Unless you turn these forms (exposed via a common interface) into machine-readable interfaces of their own? Whether you do it though mime types or WSDL doesn&#8217;t matter as much as the fact that you have to have an agreement if there is no human sitting in front of the machine. What am I missing?</p>
<p>- WRT to the pre-1995 web, I agree that technically we have the same web. But in practice we don&#8217;t because of the work Google and Microsoft have put into providing these search services. Sure they are just gigantic web apps, but in practice they are part of the Web and they shape (in many ways) how web apps are created and how they are consumed. And what the web is useful for.</p>
<p>- And I very much agree that &#8220;there’s something very powerful about being able to access and analyze information without requiring portions of the “middleware” to understand much of its underlying schema or semantics&#8221;. For one thing, that&#8217;s what made Google possible. But not just that.</p>
<p>- Agree that relationships can be made resources. It&#8217;s just that this is not predominant in REST systems. But nothing stops REST-for-IT from doing it.</p>
<p>- Yep, there are hacks to try to deal with stale references, like the semweb approaches you list. BTW, WSRF had a child spec called WS-ReferenceRenewal that did just that but was never published. GGF wrote WS-Naming for that too.</p>
<p>- Finally, wrt to enacting changes, I have to some extent covered this in part 1, when looking at the IaaS cloud APIs. One of the issues is the difference between the config you can get and what you can set. I don&#8217;t think it&#8217;s impossible but it takes a level of abstraction and templatization that goes beyond the current &#8220;make it look like a physical machine&#8221; approach. But some smart people may well figure out the right abstraction model, on which such a hypermedia-driven control system can be effective. Do you happen to know any such person?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Stu</title>
		<link>http://stage.vambenepe.com/archives/894#comment-594</link>
		<dc:creator>Stu</dc:creator>
		<pubDate>Wed, 05 Aug 2009 00:11:37 +0000</pubDate>
		<guid isPermaLink="false">http://stage.vambenepe.com/?p=894#comment-594</guid>
		<description>Hi William,

Long response.  I&#039;ll comment on this post bottom-up, if you don&#039;t mind.

&lt;I&gt;&quot;But the query operation itself looks fundamentally RPCish to me, just like my interaction with the Google search page is really an RPC call that happens to return a Web page full of hyperlinks.&quot;&lt;/I&gt;

This is a fundamental disconnect.    The Google search page is not an RPC call, at least not in the usual sense of statically binding to a pre-agreed contract that is oriented around a programming platform&#039;s  object model and call stack.   

One has to GET the hypertext document that describes how to generate a search URI or how to generate a search media type that&#039;s POSTed to some kind of processing research.     The closest analogy to RPC-land would be a CORBA DII, COM Automation, or Reflective RMI call.    In SOAP-land, it would be the equivalent of loading the WSDL at runtime, parsing it, figuring out how to call the appropriate operation, and then invoking that operation.     Yes, it sounds onerous, but I find that&#039;s usually because you&#039;re trying to fit an RPC mindset onto something that is quite different.     Things like DII and Automation were annoying to work with because they were bags on the side of static RPC systems, and not fundamental to their respective architectures.

In your exploration of hypermedia, you&#039;ve been neglecting the importance of its ability to describe interfaces, like forms, dynamically.   When you ask, &quot;Want to take bets about when a Cloud API URI format with an embedded regex first arrives?&quot;, this basically underscores the problem with &quot;Cloud API&#039;s&quot;.   What web application has ever succeeded by standardizing URI format?   

One of the benefits of a Google-like search interface is that it&#039;s not a query interface, it&#039;s a uniform interface that&#039;s exposing a search gateway.   Architecturally, these place major responsibility differences on the client.   One requires deep a priori knowledge of the schema; the other arguably doesn&#039;t.

&quot;[A query] can return results that open a world of RESTful requests to you, but the query invocation itself is not RESTful. And that’s OK.&quot;

BTW, I agree with this in principle, that Query services (which I believe aren&#039;t overly RPC-like, but that&#039;s another matter ;), could generate hypermedia docs, even if the query invocation itself isn&#039;t RESTful.   That&#039;s OK, and a great example of this in the SemWeb world would be a SPARQL endpoint, something that really does tunnel a query interface through HTTP.



Earlier in your post, you say that REST doesn&#039;t help solve:
&quot;-1- The ability to query: “show me all the WebLogic instances that run on a Windows host and don’t have patch xyz applied”. You don’t have much of a CMDB if you can’t answer this. For an analogy, remember (or imagine) a pre-1995 Web with no search engine, where you can only navigate by starting from your browser home page and clicking through static links step by step, or through bookmarks.&quot;

That&#039;s the same web we have today, the difference is that Google and Microsoft have built multi-billion dollar businesses automating this spidering for us - caching, analyzing, and indexing the results along the way.   

There&#039;s something very powerful about being able to access and analyze information without requiring portions of the &quot;middleware&quot; to understand much of its underlying schema or semantics.   That is what enables longevity in software, enabling the segregation of interface definitions,  so that usage and formats and semantics to evolve on one plane, while another plane remains stable.  That&#039;s arguably the power of a lot of the container-oriented hypermedia formats out there like Atom, Atompub, etc. - they give us the ability to grow incremental infrastructure that will be useful for *decades*, such as the ability to manipulate and present collections of content, without having to reinvent the wheel for every sub-sub-IT-industry segment.    

&lt;I&gt;&quot;In hypermedia systems, the links are usually part of the resource representation, not resources of their own. In IT management, relationships/associations can have their own lifecycle and configuration properties.&quot;&lt;/I&gt;

I&#039;m don&#039;t see how this is any more tricky in a hypermedia system than in any system that manages data.   We&#039;ve all seen E-R data designs that don&#039;t enable lifecycle and metadata associated with their relationships when they probably needed it.     What resources are made available &amp; how their are linked is up to the underlying servers that support those resources.    There are plenty of web content management systems where a link has rich life-cycle and configuration information associated with it.  

&lt;I&gt;&quot;Be careful that you can really maintain the address of a resource. It’s one thing to make sure that a UUID gets maintained as a resource configuration changes, it’s another to ensure that a dereferenceable URI remains unchanged. For example, the admin server of a cluster may move over time from one node to another.&quot;&lt;/I&gt;

Managing long-lived identifiers has long been a problem in data management systems, and certainly RESTful solutions don&#039;t solve this, because arguably it&#039;s inherently a social / governance problem, i.e. maintaining persistent/quality identifiers is fundamentally something that requires economic investment, not technological wizardry.

To this specific case though, a variety of approaches have been suggested, from the &quot;Cool URI&#039;s&quot; &lt;a href=&quot;http://www.w3.org/TR/cooluris/&quot; rel=&quot;nofollow&quot;&gt;approach for the SemWeb&lt;/a&gt;, to &lt;a href=&quot;http://purl.oclc.org/docs/index.html&quot; rel=&quot;nofollow&quot;&gt;PURLs&lt;/a&gt; to non-dereferencable URIs &lt;a href=&quot;http://events.linkeddata.org/ldow2008/papers/10-passant-me-owl-same-as.pdf&quot; rel=&quot;nofollow&quot;&gt;that are related via&lt;/a&gt; owl:sameAs.     One could also opt for the DNS approach that GSLB takes - ensure at least one host remains stable in the face of an IP change, and pray that caching works out.

One final note:

Your focus has been very much on &quot;querying&quot;, i.e. classic CMDB chores.    But what about the &quot;management&quot; part of configuration management, i.e. actually enacting change on these resources?        Hypermedia advocates exposing a variety of links for such state-transitions, along with potentially unique media types to describe interfaces to those transitions.    In other words, it would potentially be a way to enable our configuration management systems to actually DO things with their configuration data, in a uniform way, not just analyze it.

This basically what I&#039;ve found lacking in the WS-RM or WS-Man approaches, something I noted in a &lt;a href=&quot;http://www.stucharlton.com/blog/archives/000559.html&quot; rel=&quot;nofollow&quot;&gt;longish blog post&lt;/a&gt; almost a year back that I distilled into &lt;a href=&quot;http://www.stucharlton.com/blog/archives/000561.html&quot; rel=&quot;nofollow&quot;&gt;four general guidelines&lt;/a&gt;.    

Basically it comes down to, let&#039;s really look at hypermedia as a new general model for building distributed systems, something that tends to have attributes over distributed objects or XML document exchange.</description>
		<content:encoded><![CDATA[<p>Hi William,</p>
<p>Long response.  I&#8217;ll comment on this post bottom-up, if you don&#8217;t mind.</p>
<p><i>&#8220;But the query operation itself looks fundamentally RPCish to me, just like my interaction with the Google search page is really an RPC call that happens to return a Web page full of hyperlinks.&#8221;</i></p>
<p>This is a fundamental disconnect.    The Google search page is not an RPC call, at least not in the usual sense of statically binding to a pre-agreed contract that is oriented around a programming platform&#8217;s  object model and call stack.   </p>
<p>One has to GET the hypertext document that describes how to generate a search URI or how to generate a search media type that&#8217;s POSTed to some kind of processing research.     The closest analogy to RPC-land would be a CORBA DII, COM Automation, or Reflective RMI call.    In SOAP-land, it would be the equivalent of loading the WSDL at runtime, parsing it, figuring out how to call the appropriate operation, and then invoking that operation.     Yes, it sounds onerous, but I find that&#8217;s usually because you&#8217;re trying to fit an RPC mindset onto something that is quite different.     Things like DII and Automation were annoying to work with because they were bags on the side of static RPC systems, and not fundamental to their respective architectures.</p>
<p>In your exploration of hypermedia, you&#8217;ve been neglecting the importance of its ability to describe interfaces, like forms, dynamically.   When you ask, &#8220;Want to take bets about when a Cloud API URI format with an embedded regex first arrives?&#8221;, this basically underscores the problem with &#8220;Cloud API&#8217;s&#8221;.   What web application has ever succeeded by standardizing URI format?   </p>
<p>One of the benefits of a Google-like search interface is that it&#8217;s not a query interface, it&#8217;s a uniform interface that&#8217;s exposing a search gateway.   Architecturally, these place major responsibility differences on the client.   One requires deep a priori knowledge of the schema; the other arguably doesn&#8217;t.</p>
<p>&#8220;[A query] can return results that open a world of RESTful requests to you, but the query invocation itself is not RESTful. And that’s OK.&#8221;</p>
<p>BTW, I agree with this in principle, that Query services (which I believe aren&#8217;t overly RPC-like, but that&#8217;s another matter <img src='http://stage.vambenepe.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> , could generate hypermedia docs, even if the query invocation itself isn&#8217;t RESTful.   That&#8217;s OK, and a great example of this in the SemWeb world would be a SPARQL endpoint, something that really does tunnel a query interface through HTTP.</p>
<p>Earlier in your post, you say that REST doesn&#8217;t help solve:<br />
&#8220;-1- The ability to query: “show me all the WebLogic instances that run on a Windows host and don’t have patch xyz applied”. You don’t have much of a CMDB if you can’t answer this. For an analogy, remember (or imagine) a pre-1995 Web with no search engine, where you can only navigate by starting from your browser home page and clicking through static links step by step, or through bookmarks.&#8221;</p>
<p>That&#8217;s the same web we have today, the difference is that Google and Microsoft have built multi-billion dollar businesses automating this spidering for us &#8211; caching, analyzing, and indexing the results along the way.   </p>
<p>There&#8217;s something very powerful about being able to access and analyze information without requiring portions of the &#8220;middleware&#8221; to understand much of its underlying schema or semantics.   That is what enables longevity in software, enabling the segregation of interface definitions,  so that usage and formats and semantics to evolve on one plane, while another plane remains stable.  That&#8217;s arguably the power of a lot of the container-oriented hypermedia formats out there like Atom, Atompub, etc. &#8211; they give us the ability to grow incremental infrastructure that will be useful for *decades*, such as the ability to manipulate and present collections of content, without having to reinvent the wheel for every sub-sub-IT-industry segment.    </p>
<p><i>&#8220;In hypermedia systems, the links are usually part of the resource representation, not resources of their own. In IT management, relationships/associations can have their own lifecycle and configuration properties.&#8221;</i></p>
<p>I&#8217;m don&#8217;t see how this is any more tricky in a hypermedia system than in any system that manages data.   We&#8217;ve all seen E-R data designs that don&#8217;t enable lifecycle and metadata associated with their relationships when they probably needed it.     What resources are made available &amp; how their are linked is up to the underlying servers that support those resources.    There are plenty of web content management systems where a link has rich life-cycle and configuration information associated with it.  </p>
<p><i>&#8220;Be careful that you can really maintain the address of a resource. It’s one thing to make sure that a UUID gets maintained as a resource configuration changes, it’s another to ensure that a dereferenceable URI remains unchanged. For example, the admin server of a cluster may move over time from one node to another.&#8221;</i></p>
<p>Managing long-lived identifiers has long been a problem in data management systems, and certainly RESTful solutions don&#8217;t solve this, because arguably it&#8217;s inherently a social / governance problem, i.e. maintaining persistent/quality identifiers is fundamentally something that requires economic investment, not technological wizardry.</p>
<p>To this specific case though, a variety of approaches have been suggested, from the &#8220;Cool URI&#8217;s&#8221; <a href="http://www.w3.org/TR/cooluris/" rel="nofollow">approach for the SemWeb</a>, to <a href="http://purl.oclc.org/docs/index.html" rel="nofollow">PURLs</a> to non-dereferencable URIs <a href="http://events.linkeddata.org/ldow2008/papers/10-passant-me-owl-same-as.pdf" rel="nofollow">that are related via</a> owl:sameAs.     One could also opt for the DNS approach that GSLB takes &#8211; ensure at least one host remains stable in the face of an IP change, and pray that caching works out.</p>
<p>One final note:</p>
<p>Your focus has been very much on &#8220;querying&#8221;, i.e. classic CMDB chores.    But what about the &#8220;management&#8221; part of configuration management, i.e. actually enacting change on these resources?        Hypermedia advocates exposing a variety of links for such state-transitions, along with potentially unique media types to describe interfaces to those transitions.    In other words, it would potentially be a way to enable our configuration management systems to actually DO things with their configuration data, in a uniform way, not just analyze it.</p>
<p>This basically what I&#8217;ve found lacking in the WS-RM or WS-Man approaches, something I noted in a <a href="http://www.stucharlton.com/blog/archives/000559.html" rel="nofollow">longish blog post</a> almost a year back that I distilled into <a href="http://www.stucharlton.com/blog/archives/000561.html" rel="nofollow">four general guidelines</a>.    </p>
<p>Basically it comes down to, let&#8217;s really look at hypermedia as a new general model for building distributed systems, something that tends to have attributes over distributed objects or XML document exchange.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: William Vambenepe&#8217;s blog &#187; Blog Archive &#187; REST in practice for IT and Cloud management (part 1: Cloud APIs)</title>
		<link>http://stage.vambenepe.com/archives/894#comment-593</link>
		<dc:creator>William Vambenepe&#8217;s blog &#187; Blog Archive &#187; REST in practice for IT and Cloud management (part 1: Cloud APIs)</dc:creator>
		<pubDate>Thu, 30 Jul 2009 21:05:13 +0000</pubDate>
		<guid isPermaLink="false">http://stage.vambenepe.com/?p=894#comment-593</guid>
		<description>[...] Part 2 is now available. Also make sure to read the comments [...] </description>
		<content:encoded><![CDATA[<p>[...] Part 2 is now available. Also make sure to read the comments [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Cote'</title>
		<link>http://stage.vambenepe.com/archives/894#comment-592</link>
		<dc:creator>Cote'</dc:creator>
		<pubDate>Tue, 28 Jul 2009 15:23:31 +0000</pubDate>
		<guid isPermaLink="false">http://stage.vambenepe.com/?p=894#comment-592</guid>
		<description>Holy crap! A RESTful (I hate that phrase, we need a better one) interface to CMDBs would top-notch. You should hunt down this fella &lt;a href=&quot;http://dogbowl.us/&quot; rel=&quot;nofollow&quot;&gt;Glenn Twiggs&lt;/a&gt; (who worked on the BMC CMDB at one point) and ask him about it, he&#039;s one of the people I stole that thinking from ;)</description>
		<content:encoded><![CDATA[<p>Holy crap! A RESTful (I hate that phrase, we need a better one) interface to CMDBs would top-notch. You should hunt down this fella <a href="http://dogbowl.us/" rel="nofollow">Glenn Twiggs</a> (who worked on the BMC CMDB at one point) and ask him about it, he&#8217;s one of the people I stole that thinking from <img src='http://stage.vambenepe.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
</channel>
</rss>

