<?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"
	>
<channel>
	<title>Comments on: IDLs vs. Human Documentation</title>
	<atom:link href="http://steve.vinoski.net/blog/2008/01/16/idls-vs-human-documentation/feed/" rel="self" type="application/rss+xml" />
	<link>http://steve.vinoski.net/blog/2008/01/16/idls-vs-human-documentation/</link>
	<description>Ask forgiveness, not permission.</description>
	<pubDate>Sun, 07 Sep 2008 17:34:32 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.1</generator>
		<item>
		<title>By: Peter Williams - RESTful Service Discovery and Description</title>
		<link>http://steve.vinoski.net/blog/2008/01/16/idls-vs-human-documentation/#comment-513</link>
		<dc:creator>Peter Williams - RESTful Service Discovery and Description</dc:creator>
		<pubDate>Tue, 22 Jan 2008 21:00:50 +0000</pubDate>
		<guid isPermaLink="false">http://steve.vinoski.net/blog/2008/01/16/idls-vs-human-documentation/#comment-513</guid>
		<description>[...] There has been a great deal of discussion regarding RESTful web service description languages this week. The debate is great for the community but I think Steve Vinoski has it basically right [...]</description>
		<content:encoded><![CDATA[<p>[...] There has been a great deal of discussion regarding RESTful web service description languages this week. The debate is great for the community but I think Steve Vinoski has it basically right [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: To machine-document or not machine-document &#8230; &#124; sun</title>
		<link>http://steve.vinoski.net/blog/2008/01/16/idls-vs-human-documentation/#comment-479</link>
		<dc:creator>To machine-document or not machine-document &#8230; &#124; sun</dc:creator>
		<pubDate>Fri, 18 Jan 2008 06:38:37 +0000</pubDate>
		<guid isPermaLink="false">http://steve.vinoski.net/blog/2008/01/16/idls-vs-human-documentation/#comment-479</guid>
		<description>[...] off without an interface definition language. He is especially picking up on teve Vinoski’s IDLs vs. Human Documentation post, which emphasizes human readable documentation over [...]</description>
		<content:encoded><![CDATA[<p>[...] off without an interface definition language. He is especially picking up on teve Vinoski’s IDLs vs. Human Documentation post, which emphasizes human readable documentation over [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Patrick Mueller</title>
		<link>http://steve.vinoski.net/blog/2008/01/16/idls-vs-human-documentation/#comment-478</link>
		<dc:creator>Patrick Mueller</dc:creator>
		<pubDate>Fri, 18 Jan 2008 06:24:31 +0000</pubDate>
		<guid isPermaLink="false">http://steve.vinoski.net/blog/2008/01/16/idls-vs-human-documentation/#comment-478</guid>
		<description>I also don't think it meta-data should be REQUIRED, but that if there, can provide a benefit.  And I realize there's a cost (in most cases) - keeping the code and meta-data in sync.  Which is not insignificant, though testing can mitigate this.

That's a good first step - agreement on "not required" - I have arguments with people all the time who claim that meta-data is bad - inherently bad - and their rationale, oddly enough: "because that's WS-* all over again".  Putting me in an odd position of having to say something positive about WS-* :-)

I also agree there are some bad, bad things that can happen with reverse engineering the meta-data from an implementation, generating magical wrappers, etc.  That's actually a shame, because, if you know what you're doing, it's obviously quite possible to infer metadata from an implementation (that you've written), and generate useful wrappers (for you to use).  The problem is you have to know what you're doing, and most people don't.</description>
		<content:encoded><![CDATA[<p>I also don&#8217;t think it meta-data should be REQUIRED, but that if there, can provide a benefit.  And I realize there&#8217;s a cost (in most cases) - keeping the code and meta-data in sync.  Which is not insignificant, though testing can mitigate this.</p>
<p>That&#8217;s a good first step - agreement on &#8220;not required&#8221; - I have arguments with people all the time who claim that meta-data is bad - inherently bad - and their rationale, oddly enough: &#8220;because that&#8217;s WS-* all over again&#8221;.  Putting me in an odd position of having to say something positive about WS-* :-)</p>
<p>I also agree there are some bad, bad things that can happen with reverse engineering the meta-data from an implementation, generating magical wrappers, etc.  That&#8217;s actually a shame, because, if you know what you&#8217;re doing, it&#8217;s obviously quite possible to infer metadata from an implementation (that you&#8217;ve written), and generate useful wrappers (for you to use).  The problem is you have to know what you&#8217;re doing, and most people don&#8217;t.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John D. Heintz</title>
		<link>http://steve.vinoski.net/blog/2008/01/16/idls-vs-human-documentation/#comment-477</link>
		<dc:creator>John D. Heintz</dc:creator>
		<pubDate>Thu, 17 Jan 2008 21:09:20 +0000</pubDate>
		<guid isPermaLink="false">http://steve.vinoski.net/blog/2008/01/16/idls-vs-human-documentation/#comment-477</guid>
		<description>Steve: I agree with how you put it. REST systems don't require more than a uniform interface and MIME types, but they could sometimes benefit from processable definitions.

I also agree with your fear of code generation, magical annotations that distribute systems, and ignoring lessons already learned.

Part of what I think is the problem: the very name "interface definition". RESTful systems only have one interface, so entertaining creating new ones is at the least confusing.

Also, the most interesting and intricate parts are left out of most IDLs (CORBA, WSDL, Java/C# interfaces, ...): states, transitions, pre/post conditions, and everything else that is maybe described in a blurb of text.

My suggestion for what we should be talking about is a "state definition" language. REST is "State Transfer" with a uniform interface. Providing an extensible, composable, shared semantic between providers and consumers to document high level states and resources makes sense to me.

The tooling support that an "SDL" could provide is to abstract away some of the mechanics of HTTP interactions, but not the human coded logic. For example: a shopping agent needs some specific logic to decide when to "checkout" and buy things. That is the stuff developers need to think about and write. Once that decision is made finding the right URI, verb, and content can be assisted by an engine looking for meta-data corresponding to that shared SDL.</description>
		<content:encoded><![CDATA[<p>Steve: I agree with how you put it. REST systems don&#8217;t require more than a uniform interface and MIME types, but they could sometimes benefit from processable definitions.</p>
<p>I also agree with your fear of code generation, magical annotations that distribute systems, and ignoring lessons already learned.</p>
<p>Part of what I think is the problem: the very name &#8220;interface definition&#8221;. RESTful systems only have one interface, so entertaining creating new ones is at the least confusing.</p>
<p>Also, the most interesting and intricate parts are left out of most IDLs (CORBA, WSDL, Java/C# interfaces, &#8230;): states, transitions, pre/post conditions, and everything else that is maybe described in a blurb of text.</p>
<p>My suggestion for what we should be talking about is a &#8220;state definition&#8221; language. REST is &#8220;State Transfer&#8221; with a uniform interface. Providing an extensible, composable, shared semantic between providers and consumers to document high level states and resources makes sense to me.</p>
<p>The tooling support that an &#8220;SDL&#8221; could provide is to abstract away some of the mechanics of HTTP interactions, but not the human coded logic. For example: a shopping agent needs some specific logic to decide when to &#8220;checkout&#8221; and buy things. That is the stuff developers need to think about and write. Once that decision is made finding the right URI, verb, and content can be assisted by an engine looking for meta-data corresponding to that shared SDL.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: steve</title>
		<link>http://steve.vinoski.net/blog/2008/01/16/idls-vs-human-documentation/#comment-475</link>
		<dc:creator>steve</dc:creator>
		<pubDate>Thu, 17 Jan 2008 14:58:40 +0000</pubDate>
		<guid isPermaLink="false">http://steve.vinoski.net/blog/2008/01/16/idls-vs-human-documentation/#comment-475</guid>
		<description>Markus: I have no doubt that what you say is true. I also have no doubt that you also relied on human-oriented documentation that went beyond what your IDL provided in order to more adequately inform your developers of the semantics and side effects of calling your CORBA services.

But the fact remains that there's no need for an IDL-like language for REST, as the REST interface is uniform and is already fully defined. If you were going to create an analogous language for REST, then as John explains above, you'd want the language to help define interaction details based firmly on RESTful foundations, rather than focusing on object interfaces, operations, parameters, and inheritance relationships as OMG IDL does.</description>
		<content:encoded><![CDATA[<p>Markus: I have no doubt that what you say is true. I also have no doubt that you also relied on human-oriented documentation that went beyond what your IDL provided in order to more adequately inform your developers of the semantics and side effects of calling your CORBA services.</p>
<p>But the fact remains that there&#8217;s no need for an IDL-like language for REST, as the REST interface is uniform and is already fully defined. If you were going to create an analogous language for REST, then as John explains above, you&#8217;d want the language to help define interaction details based firmly on RESTful foundations, rather than focusing on object interfaces, operations, parameters, and inheritance relationships as OMG IDL does.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
