<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Integrate This</title>
	<atom:link href="http://www.coactus.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.coactus.com/blog</link>
	<description>Topics in Web based integration</description>
	<pubDate>Sun, 26 Aug 2007 15:09:01 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Mobile Ajax Workshop position paper</title>
		<link>http://www.coactus.com/blog/2007/08/mobile-ajax-workshop-position-paper/</link>
		<comments>http://www.coactus.com/blog/2007/08/mobile-ajax-workshop-position-paper/#comments</comments>
		<pubDate>Sun, 26 Aug 2007 15:09:01 +0000</pubDate>
		<dc:creator>Mark Baker</dc:creator>
		
		<category><![CDATA[ajax]]></category>

		<guid isPermaLink="false">http://www.coactus.com/blog/2007/08/mobile-ajax-workshop-position-paper/</guid>
		<description><![CDATA[This is the position paper we recently submitted to the W3C/OpenAjax Workshop on Mobile Ajax.

  The best mobile Ajax application &#8230;


  is the one that&#8217;s never written



  A position paper for the
  W3C/OpenAjax
  Workshop on Mobile Ajax
  by Mark Baker of
  Coactus
  Consulting


  Hypertext inventor Ted [...]]]></description>
			<content:encoded><![CDATA[<p>This is the position paper we recently submitted to the <a href="http://www.w3.org/2007/06/mobile-ajax/">W3C/OpenAjax Workshop on Mobile Ajax</a>.</p>
<h4 style="TEXT-ALIGN:center">
  The best mobile Ajax application &#8230;<br />
</h4>
<h4 style ="TEXT-ALIGN:center">
  is the one that&#8217;s never written<br />
</h4>
<p></p>
<div style="TEXT-ALIGN:center">
  A position paper for the<br />
  <a href="http://www.w3.org/2007/06/mobile-ajax/" title="W3C/OpenAjax Workshop on Mobile Ajax">W3C/OpenAjax<br />
  Workshop on Mobile Ajax</a><br />
  by Mark Baker of<br />
  <a href="http://www.coactus.com" title="Coactus Consulting">Coactus<br />
  Consulting</a>
</div>
<p>
  Hypertext inventor Ted Nelson talked about &#8220;the two Gods of literature&#8221;[1],<br />
  publisher and reader, and the battle between them in determining what the<br />
  reader ultimately consumes.&nbsp; Traditional Web programming with HTML and<br />
  CSS (no script) provides effectively equal power to each God, permitting the<br />
  publisher to provide the content together with declarations about how that<br />
  content&nbsp;could be presented, but enabling the reader&nbsp;to instruct its<br />
  agent to&nbsp;ignore and/or extend those declarations as it sees fit.&nbsp;<br />
  Scripting, on the other hand,&nbsp;puts all the power in the hands of the<br />
  publisher,&nbsp;providing the reader two options; either execute it to be able<br />
  to consume the content it contains, or don&#8217;t and don&#8217;t.
</p>
<p>
  The &#8220;reader power&#8221; afforded by declarative programming is especially important<br />
  for mobile use for at least&nbsp;two reasons.&nbsp; First, it&nbsp;allows the<br />
  user agent to repurpose the content so it can be presented to the user&nbsp;in<br />
  the context of the&nbsp;particular nuances of the input and output methods of<br />
  the device.&nbsp; Second, it allows the user agent to&nbsp;be shipped<br />
  with&nbsp;code which is optimized for the processing of&nbsp;the predefined<br />
  markup language, where &#8220;optimized&#8221; can be along any dimension: speed, size,<br />
  battery consumption, etc..
</p>
<p>
  Fortunately, there exists an approach which permits us to have the best of<br />
  both worlds.&nbsp; If we factored out the commonly used script components, and<br />
  extended HTML so that those components could be instantiated declaritively,<br />
  then we could use declarative programming&nbsp;for these common components but<br />
  continue to use script for the less common cases.&nbsp; As an example, &#8220;drag<br />
  and drop&#8221; is a reasonably common feature implemented by scripts, but could<br />
  easily be accomplished via a declarative approach [2].
</p>
<p>
  One&nbsp;downside of this hybrid approach is that standardization of the<br />
  extensions - and deployment of software which uses them - can take a very long<br />
  time.&nbsp; However it is not as big a problem as it first seems.&nbsp;<br />
  Somewhat ironically, we can use script to help us incrementally deploy<br />
  declarative content, by&nbsp;associating&nbsp;that content with&nbsp;script<br />
  which interprets and processes the extension tags when browsers don&#8217;t support<br />
  them (see [2] again for an example of this).
</p>
<p>
  Some Javascript toolkits already provide for a somewhat similar approach, at<br />
  least regarding the binding of HTML extensions to script.&nbsp;<br />
  Dojo&nbsp;includes &#8220;Dijits&#8221; (Dojo widgets) which permits, for<br />
  example,&nbsp;HTML forms to be extended with attributes whose value explicitly<br />
  references a Dojo-specific scripted TextBox widget.&nbsp; Once&nbsp;the Dojo<br />
  libraries are linked in, the extended processing occurs.&nbsp; All Dijits seem<br />
  to be missing is to acknowledge the value of standardizing their HTML<br />
  extensions.
</p>
<p>
  HTML 5 (ne a bunch of WHAT WG specs) can also be seen in a new light when<br />
  considering its role in&nbsp;this proposed approach.&nbsp; It defines<br />
  (amoungst other things) a number of extensions that aim to do in a declarative<br />
  manner what is currently done with script.&nbsp; For example, in-browser form<br />
  validation.&nbsp; The&nbsp;approach outlined here also suggests that there<br />
  would be value in developing a script which could process the HTML 5<br />
  extensions for HTML 4 browsers.
</p>
<p>
  Note: see also the TAG&#8217;s view on declarative vs. imperative, in their Rule of<br />
  Least Power finding[3].
</p>
<p>
  &nbsp;[1]&nbsp;Theodore Nelson.&nbsp; The Future of Information: Ideas,<br />
  Connections and the Gods of Electronic Literature.&nbsp; ASCII Corp,<br />
  1997.&nbsp; Unpublished.
</p>
<p>
  &nbsp;[2]<br />
  <a href="http://www.markbaker.ca/blog/2006/07/21/declarative-drag-and-drop/">http://www.markbaker.ca/blog/2006/07/21/declarative-drag-and-drop/</a>
</p>
<p>
  &nbsp;[3]<br />
  <a href="http://www.w3.org/2001/tag/doc/leastPower.html">http://www.w3.org/2001/tag/doc/leastPower.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.coactus.com/blog/2007/08/mobile-ajax-workshop-position-paper/feed/</wfw:commentRss>
		</item>
		<item>
		<title>REST at OOPSLA</title>
		<link>http://www.coactus.com/blog/2007/05/rest-at-oopsla/</link>
		<comments>http://www.coactus.com/blog/2007/05/rest-at-oopsla/#comments</comments>
		<pubDate>Wed, 23 May 2007 21:49:44 +0000</pubDate>
		<dc:creator>Mark Baker</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.coactus.com/blog/2007/05/rest-at-oopsla/</guid>
		<description><![CDATA[I&#8217;m pleased to announce that Stuart Charlton and I have had our tutorial proposal for OOPSLA &#8216;07 accepted.  Our topic, as you can probably guess, is REST and the Web, and the (working) title is The Web: Distributed Objects Realized!  We&#8217;ll be talking about REST and the Web of course, including why REST [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m pleased to announce that <a href="http://stucharlton.com">Stuart Charlton</a> and I have had our tutorial proposal for <a href="http://oopsla.acm.org">OOPSLA &#8216;07</a> accepted.  Our topic, as you can probably guess, is REST and the Web, and the (working) title is <em>The Web: Distributed Objects Realized!</em>  We&#8217;ll be talking about REST and the Web of course, including why REST was initially called the &#8220;HTTP Object Model&#8221;.</p>
<p>See you in Montreal!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coactus.com/blog/2007/05/rest-at-oopsla/feed/</wfw:commentRss>
		</item>
		<item>
		<title>David Baron on versioning</title>
		<link>http://www.coactus.com/blog/2007/03/david-baron-on-versioning/</link>
		<comments>http://www.coactus.com/blog/2007/03/david-baron-on-versioning/#comments</comments>
		<pubDate>Sun, 25 Mar 2007 13:29:05 +0000</pubDate>
		<dc:creator>Mark Baker</dc:creator>
		
		<category><![CDATA[integration]]></category>

		<category><![CDATA[webarch]]></category>

		<guid isPermaLink="false">http://www.coactus.com/blog/2007/03/david-baron-on-versioning/</guid>
		<description><![CDATA[David Baron of Mozilla has
chimed in
on a topic
near and
dear to much of the work we do at Coactus.  It looks like it&#8217;s part one of a series; I look forward to the rest.
One observation; it looks like David&#8217;s using the term &#8220;versioning&#8221; to mean what I call &#8220;explicit versioning&#8221;, where the consumer of the [...]]]></description>
			<content:encoded><![CDATA[<p>David Baron of <a href="http://www.mozilla.org">Mozilla</a> has<br />
<a href="http://dbaron.org/log/2007-03#e20070325a">chimed in</a><br />
on a topic<br />
<a href="http://www.coactus.com/blog/2006/12/validation-considered-harmful/">near</a> and<br />
<a href="http://www.coactus.com/blog/2007/01/two-more-reasons-why-validation-is-still-harmful/">dear</a> to much of the work we do at Coactus.  It looks like it&#8217;s part one of a series; I look forward to the rest.</p>
<p>One observation; it looks like David&#8217;s using the term &#8220;versioning&#8221; to mean what I call &#8220;explicit versioning&#8221;, where the consumer of the document needs to know what &#8220;version&#8221; the document is in order to understand it.  I think that&#8217;s an important difference between the general versioning problem which can have &#8220;no explicit versions&#8221; as a solution.  I haven&#8217;t looked at the <a href="http://www.w3.org/2001/tag/doc/versioning">latest draft TAG finding</a> to understand that view, but I suspect they use the term similarly to how I use it.</p>
<p><em>Update</em>;  <a href="http://www.innoq.com/blog/st/2007/03/27/duck_typing_for_web_services.html">Stefan Tilkov finds</a> that <a href="http://blog.springframework.com/arjen/archives/2007/03/27/ws-duck-typing/">Arjen Poutsma says essentially the same thing</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coactus.com/blog/2007/03/david-baron-on-versioning/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Thoughts on the W3C Enterprise Services Workshop</title>
		<link>http://www.coactus.com/blog/2007/03/thoughts-on-the-w3c-enterprise-services-workshop/</link>
		<comments>http://www.coactus.com/blog/2007/03/thoughts-on-the-w3c-enterprise-services-workshop/#comments</comments>
		<pubDate>Thu, 08 Mar 2007 15:25:33 +0000</pubDate>
		<dc:creator>Mark Baker</dc:creator>
		
		<category><![CDATA[webarch]]></category>

		<category><![CDATA[webservices]]></category>

		<guid isPermaLink="false">http://www.coactus.com/blog/?p=39</guid>
		<description><![CDATA[It&#8217;s been a week since the W3C Workshop on Web of Services for Enterprise Computing
wrapped up, and I&#8217;ve had some time to reflect on it.
On the plus side, there&#8217;s been some very welcome progress in Web services vendors moving towards the Web.  Having Web services stalwarts Chris Ferris and Glen Daniels acknowledge that the [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a week since the <a href="http://www.w3.org/2006/10/wos-ec-cfp.html">W3C Workshop on Web of Services for Enterprise Computing</a><br />
wrapped up, and I&#8217;ve had some time to reflect on it.</p>
<p>On the plus side, there&#8217;s been some very welcome progress in Web services vendors moving towards the Web.  Having Web services stalwarts <a href="http://www-03.ibm.com/developerworks/blogs/page/chrisferris">Chris Ferris</a> and <a href="http://www.bloglines.com/blog/gdaniels">Glen Daniels</a> acknowledge that the use of URIs and HTTP GET was a better way to request data, gave me the warm-and-fuzzies.  But they didn&#8217;t go beyond that, to consider the value of the mutating-side of the uniform interface.  <a href="http://www.pacificspirit.com">Dave Orchard</a> also reiterated his position that <a href="http://pacificspirit.com/blog/2004/09/28/web_services_needs_transfer_protocols_and_specific_protocols/">Web services need service-specific writes</a>.</p>
<p>On the down side though, I don&#8217;t think much was accomplished at the workshop itself.  The point I was trying to make in <a href="http://www.w3.org/2007/02/wos-ec-slides/coactus.pdf">my presentation</a>, about SOA/WS not separating interface and implementation, must have gone totally over peoples&#8217; heads because nobody commented on it, either to agree or disagree.  And the recommendations seemed largely toothless with respect to doing something about this mess within the W3C&#8230; though I suppose the WS-Core proposal to consolidate maintenance of the W3C WS-* specs would save some resources.</p>
<p>As always though, it was great to get together with this group of folks; despite our technical disagreements, and the occasional hurt feeling over the past few years, there&#8217;s still a lot of mutual respect there.  It was also nice to meet some people face-to-face for the first time, such as <a href="http://wanderingbarque.com/nonintersecting/">Pete</a> and <a href="http://blogs.cocoondev.org/dims/">Dims</a>.</p>
<p>Speaking of Pete, he also had, IMO, the best line of the workshop.  On the topic of description languages, he commented;</p>
<blockquote><p>
Stop trying to stop the world and describe it
</p></blockquote>
<p>Bang on.</p>
<p><em>Update</em>; I forgot to mention that I met <a href="http://chuckhinson.blogspot.com/">Chuck</a> as well.  He has a great <a href="http://chuckhinson.blogspot.com/2007/02/wsec.html">workshop-followup post</a> with an example of why GET+URIs are better.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coactus.com/blog/2007/03/thoughts-on-the-w3c-enterprise-services-workshop/feed/</wfw:commentRss>
		</item>
		<item>
		<title>W3C Workshop slides online</title>
		<link>http://www.coactus.com/blog/2007/02/w3c-workship-slides-online/</link>
		<comments>http://www.coactus.com/blog/2007/02/w3c-workship-slides-online/#comments</comments>
		<pubDate>Wed, 28 Feb 2007 15:24:04 +0000</pubDate>
		<dc:creator>Mark Baker</dc:creator>
		
		<category><![CDATA[webarch]]></category>

		<category><![CDATA[webservices]]></category>

		<guid isPermaLink="false">http://www.coactus.com/blog/2007/02/w3c-workship-slides-online/</guid>
		<description><![CDATA[My slides for the
W3C Web of Services for Enterprise Computing Workshop.
It&#8217;s a short presentation because I anticipated (and received!) lots of questions.  The objective was to drill down to the primary technical reason why I believe the Web is better; it&#8217;s the same reason I&#8217;ve been writing about a lot recently.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.w3.org/2007/02/wos-ec-slides/coactus.pdf">My slides</a> for the<br />
<a href="http://www.w3.org/2007/01/wos-ec-program.html">W3C Web of Services for Enterprise Computing Workshop</a>.</p>
<p>It&#8217;s a short presentation because I anticipated (and received!) lots of questions.  The objective was to drill down to the primary technical reason why I believe the Web is better; it&#8217;s the same reason I&#8217;ve been <a href="http://www.infoq.com/articles/separation-of-concerns">writing about</a> a lot recently.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coactus.com/blog/2007/02/w3c-workship-slides-online/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Starting with the Web</title>
		<link>http://www.coactus.com/blog/2007/01/starting-with-the-web/</link>
		<comments>http://www.coactus.com/blog/2007/01/starting-with-the-web/#comments</comments>
		<pubDate>Wed, 03 Jan 2007 03:07:45 +0000</pubDate>
		<dc:creator>Mark Baker</dc:creator>
		
		<category><![CDATA[architecture]]></category>

		<category><![CDATA[integration]]></category>

		<category><![CDATA[webarch]]></category>

		<category><![CDATA[webservices]]></category>

		<guid isPermaLink="false">http://www.coactus.com/blog/?p=38</guid>
		<description><![CDATA[Starting with the Web
A position paper for the W3C Workshop on Web of Services for Enterprise Computing, by Mark Baker of Coactus Consulting.
My position
For those that might not be aware of my position regarding Web services, I will state it here for clarity.
I believe that the Web, since its inception, has always been about services, [...]]]></description>
			<content:encoded><![CDATA[<h1 align="center">Starting with the Web</h1>
<p align="center">A position paper for the <a href="http://www.w3.org/2006/10/wos-ec-cfp.html">W3C Workshop on Web of Services for Enterprise Computing</a>, by <a href="http://www.coactus.com/about/">Mark Baker</a> of <a href="http://www.coactus.com">Coactus Consulting</a>.</p>
<h2>My position</h2>
<p>For those that might not be aware of my position regarding Web services, I will state it here for clarity.</p>
<p>I believe that the Web, since its inception, has always been about services, and therefore that &#8220;Web services&#8221; are redundant.  Worse than that though, while the Web&#8217;s service model is highly constrained in order to provide <a href="http://www.infoq.com/articles/separation-of-concerns">important degrees of loose coupling</a>, Web services are effectively unconstrained, and therefore much more tightly coupled.  As a result, Web services are unsuitable for use at scale; certainly <em>between</em> enterprises, but even between departments in larger enterprises.</p>
<p>With that in mind &#8230;</p>
<h2>Problem statement</h2>
<p>I begin from the assumption then, that Web services are not part of the solution, and that the Web is.  And while I believe that the Web is far more capable as a distributed system than commonly believed, there is also little doubt that it is lacking in some important ways from an enterprise perspective &#8230; just not as much as some believe.</p>
<p>I suggest that the problem statement is this;</p>
<blockquote><p>
How can the Web be used to meet the needs of the enterprise?
</p></blockquote>
<h2>Part of the Solution</h2>
<p>When looking at how to use the Web - how to add new &#8220;ilities&#8221; (architectural properties) or modify amounts of existing ones - we need an architectural guide to help us understand the tradeoffs being made by either relaxing existing constraints, or adding new ones.  I suggest that the <a href="http://roy.gbiv.com/pubs/dissertation/top.htm">REST architectural style</a> is a good starting point, because in addition to being rigorously defined and providing well documented kinds and degrees of properties, it is also the style used to craft the foundational specifications of the Web; HTTP and URIs.</p>
<h2>Tradeoffs</h2>
<p>I anticipate that most of the improvements that are developed will be REST extensions; solutions which provide <em>additional</em> constraints atop REST, and therefore don&#8217;t require disregarding any of REST&#8217;s existing constraints.  In my experience, this is a desirable situation in general because of the emphasis of REST on providing simplicity, and the role many of its constraints have in providing it.  In addition, on the Web, it means that network effects are maximized and centralization dependencies (and other independent evolvability issues) avoided.  It&#8217;s also often achievable in practice, as long as the problem continues to involve document exchange, in my experience&#8230;  but not always.</p>
<p>For example, when performance is a make-or-break proposition, and other avenues for improving it have been exhausted, sometimes the <a href="http://roy.gbiv.com/pubs/dissertation/rest_arch_style.htm#sec_5_1_3">stateless constraint</a> will need relaxing.  This comes with reasonably large costs - reliability, scalability, and simplicity are reduced for example - but if those costs are fully appreciated and the benefits worth it, then it <em>is</em> the right choice.  Because, of course, the solution isn&#8217;t REST as a panacea, it&#8217;s REST as a starting point, a guide.</p>
<h2>The Enterprise Web?</h2>
<p>So what features do enterprises need exactly?  Some of the common ones mentioned include reliability, security, and transactions.  Let&#8217;s dig a little deeper into those &#8230;</p>
<h3>Reliability</h3>
<p>Reliability is often mentioned by Web services proponents as a property in which the Web is lacking.  But what is meant by &#8220;reliability&#8221; in that context?  Commonly, it&#8217;s used to refer to a quality of the messaging infrastructure; that HTTP messages are not, themselves, reliable.  That&#8217;s true of course, but it&#8217;s equally true of <em>any</em> message sent over a network which is not under the control of any <a href="http://today.java.net/jag/Fallacies.html#fallacy6">single authority</a>, like the Internet; sometimes, messages are lost.</p>
<p>The issue, therefore, is how to build reliable applications atop an unreliable network.</p>
<p>In general, there is little that can be done for a Web services based solution.  As arbitrary Web services clients and servers share knowledge of little more than a layer 6 message framing technology and processing model (SOAP), the only option for addressing the problem is at this level, using that knowledge.  So we can take actions such as assigning messages unique identifiers in an attempt to detect loss or duplication, but not much else.  Solutions at this level tend to do little more than tradeoff latency (i.e. wait time for automated retries) for slightly improved message reception rates.  But even then, applications still have to deal with the inevitable case of message loss.  Some might even argue that &#8220;reliable messaging&#8221; is an oxymoron, and that RM solutions are commonly attempts to <a href="http://research.sun.com/techrep/1994/abstract-29.html">mask the unmaskable</a>.</p>
<p>Web servers and clients though, share a lot more than just a message framing and processing standard; they share a standardized application interface (HTTP GET, PUT, POST, etc.. as well as associated headers and features), and a naming standard (URIs), both richer (layer 7) artifacts that a generic Web services solution can&#8217;t take advantage of.  As a result, the options for providing reliability are greater and, in my experience, simpler.</p>
<p>Consider that a reliable HTTP GET message would make little sense, as HTTP GET is defined to be safe; if a GET message is lost then another can be dispatched without fear of the implications of two or more of those messages arriving successfully at their destination.  The same also holds for PUT and DELETE messages; though they&#8217;re not safe, they are still idempotent.  Known safe and/or idempotent operations are a key tool in enabling the reliable coordination of activities between untrusted agents.  Most important though, is that there exist known operations, as this makes a priori coordination possible in the first place.</p>
<p>HTTP POST messages, however, due to POST being neither safe nor idempotent, have some of the same reliability characteristics as do Web services.  But despite this, the use of POST as an application layer semantic, together with standardized application identifiers, permits innovative solutions such as <a href="http://www.mnot.net/blog/2005/03/21/poe">POE (POST Once Exactly)</a>, which uses single-use identifiers to ensure &#8220;only once&#8221; behaviour.</p>
<p>The &#8220;404&#8243; response code is also sometimes mentioned as a reliability problem with HTTP, but it is not at all; quite the opposite, in fact.  The 404 response code, once received, <em>reliably</em> tells the client that the publisher of the URI has, either temporarily or permanently, detached the service from that URI.  A distributed system without an equivalent of a 404 error is one which cannot support independent evolvability, and therefore is inherrently brittle and unreliable.</p>
<h3>Security</h3>
<p>Security on the Web today is likely the best example of how the Web itself has been limited by the canonical &#8220;Web browsing&#8221; application.  The security requirements for browsing were primarily to provide privacy, and the simplest solution providing privacy was to use SSL/TLS as a secure transport layer beneath HTTP (aka &#8220;HTTPS&#8221;).</p>
<p>For the enterprise, and for enterprise-to-enterprise integration in particular, privacy is necessary, but insufficient in the general case as requirements such as non-repudiation, intermediary based routing, and more are added (others can better speak to these requirements than myself).  Of course, TLS doesn&#8217;t really begin to address these needs, and work is clearly needed.</p>
<p>Luckily, I&#8217;m not the first person to point this out.  There have been at least two initiatives to add message-level security (MLS) to HTTP; <a href="http://www.w3.org/TR/WD-http-sea.html">SEA</a> from 1996, <a href="http://www.httpsec.org">HTTPsec</a> from 2005.  One might also consider <a href="http://www.imc.org/smime-pgpmime.html">S/MIME and OpenPGP</a> as simple forms of MLS insofar as they&#8217;re concerned with privacy and sender authentication.</p>
<p>Interestingly, message-level security is actually more RESTful than transport level security in two respects; that visibility is improved through selective protection of message contents (versus encrypting the whole thing with transport layer security), and that layering and self-descriptiveness (possibly including statelessness) are improved by using application layer authentication instead of (potentially - when it&#8217;s used) transport layer authentication.</p>
<h3>Transactions</h3>
<p>This is obviously an immensely broad topic that we couldn&#8217;t begin to cover in a position paper in detail sufficient to actually make a point.  Suffice it to say though, that as with reliability, my position is that the space of possible solutions is transformed considerably by the use of a priori known application semantics (and otherwise within the constraints of the REST architectural style), and therefore that solutions will look quite unlike those used for Web services.</p>
<p>Perhaps there will be an opportunity to work through a scenario at the workshop, if there&#8217;s enough interest.</p>
<h2>Conclusion</h2>
<p>The Web offers a more highly constrained, more loosely coupled service model than do &#8220;Web services&#8221;.  While enterprises can often afford the expense of maintaining and evolving tightly coupled systems, inter-enterprise communication and integration is inherrently a much larger scale task and so <em>requires</em> the kind of loose coupling provided by the Web (not to suggest the Web has a monopoly on it, of course).  Even <em>within</em> the enterprise though, loose coupling using existing pervasively deployed standards (and supporting tooling, both open source and commercial) could offer considerable benefits and savings.  REST should be our guide toward that end.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coactus.com/blog/2007/01/starting-with-the-web/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Two more reasons why validation is still harmful</title>
		<link>http://www.coactus.com/blog/2007/01/two-more-reasons-why-validation-is-still-harmful/</link>
		<comments>http://www.coactus.com/blog/2007/01/two-more-reasons-why-validation-is-still-harmful/#comments</comments>
		<pubDate>Tue, 02 Jan 2007 04:45:41 +0000</pubDate>
		<dc:creator>Mark Baker</dc:creator>
		
		<category><![CDATA[integration]]></category>

		<guid isPermaLink="false">http://www.coactus.com/blog/?p=37</guid>
		<description><![CDATA[Another way to look at the validation problem is through the eyes of a software architect.  We&#8217;re often concerned about &#8220;encapsulation&#8221;, the practice of keeping related business logic and data together.  That practice can take the form of &#8220;objects&#8221; in OO systems, or just through the partitioning of data and processing logic in [...]]]></description>
			<content:encoded><![CDATA[<p>Another way to look at the <a href="http://www.coactus.com/blog/2006/12/validation-considered-harmful/">validation problem</a> is through the eyes of a software architect.  We&#8217;re often concerned about &#8220;encapsulation&#8221;, the practice of keeping related business logic and data together.  That practice can take the form of &#8220;objects&#8221; in OO systems, or just through the partitioning of data and processing logic in non-OO systems.  In either form, the value there is that maintainability is improved.</p>
<p>Schemas, on the other hand, when used in a typical &#8220;gatekeeper&#8221; style - where the software doesn&#8217;t see the document until after it&#8217;s passed validation - break encapsulation by enforcing some business rules separately from the software responsible for them.  In practice, it&#8217;s rarely the case that software doesn&#8217;t <em>also</em> have some of these rules, meaning that they&#8217;re duplicated, creating a maintainability issue.</p>
<p>Yet another way of looking at the problem is as a <em>communication problem</em> (or lack thereof in this case).  In the scenario described in the previous post, the meaning of the document with the field value of &#8220;4&#8243; is still unambiguously <em>clear</em> to both sender and recipient, it&#8217;s just that the recipient isn&#8217;t <em>expecting</em> that specific value, and so it rejects the whole message as a result.</p>
<p>It&#8217;s true that there will be cases where unknown values like this need special attention; for example, if the &#8220;4&#8243; represented &#8220;nuclear core shutdown procedure #4&#8243; and the software only currently knows numbers 1 to 3.  But we know how to handle those cases - by defining sensible fallback behaviour as part of our extensibility rules - and schemas play no part in that solution.  More often than not, software which can handle the value &#8220;3&#8243; can also handle the value &#8220;4&#8243; without any trouble; an age of &#8220;200&#8243;, a quantity of &#8220;100000&#8243;, the year &#8220;8000&#8243;, a SKU following a non-traditional grammar, etc&#8230;, and the only reason we don&#8217;t accomodate those values is because we don&#8217;t <em>currently</em> believe them to be reasonable.</p>
<p>But that&#8217;s really no way to write long-lived software, is it?  To expose - essentially as part of the contract to the outside world - a set of assumptions made at some soon-to-be-long-past point in time?  Is this anything less than an announcement to the world of the inability of the developers of this software to adapt?  Isn&#8217;t it also an implementation detail, further eroding the <a href="http://www.infoq.com/articles/separation-of-concerns">separation of interface and implementation</a>?</p>
<p>If the message can be understood, then it should be processed.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coactus.com/blog/2007/01/two-more-reasons-why-validation-is-still-harmful/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Validation considered harmful</title>
		<link>http://www.coactus.com/blog/2006/12/validation-considered-harmful/</link>
		<comments>http://www.coactus.com/blog/2006/12/validation-considered-harmful/#comments</comments>
		<pubDate>Wed, 13 Dec 2006 06:10:58 +0000</pubDate>
		<dc:creator>Mark Baker</dc:creator>
		
		<category><![CDATA[semanticweb]]></category>

		<category><![CDATA[webarch]]></category>

		<guid isPermaLink="false">http://www.coactus.com/blog/?p=36</guid>
		<description><![CDATA[We don&#8217;t get a lot of enjoyment about trampling sacred cows here at Coactus, honest we don&#8217;t.  But we see so much bad practice out there - more so recently - that we feel compelled to speak out.
Today&#8217;s sacred cow is document validation, such as is performed by technologies such as DTDs, and more [...]]]></description>
			<content:encoded><![CDATA[<p>We don&#8217;t get a lot of enjoyment about trampling sacred cows here at Coactus, honest we don&#8217;t.  But we see so much bad practice out there - <a href="http://www.infoq.com/articles/separation-of-concerns">more so recently</a> - that we feel compelled to speak out.</p>
<p>Today&#8217;s sacred cow is document validation, such as is performed by technologies such as <a href="http://en.wikipedia.org/wiki/Document_Type_Definition">DTD</a>s, and more recently <a href="http://www.w3.org/TR/xmlschema-1/">XML Schema</a> and <a href="http://www.relaxng.org">RelaxNG</a>.</p>
<p>Surprisingly though, we&#8217;re not picking on any one particular validation technology.  XML Schema has been getting its fair share of <a href="http://cafe.elharo.com/xml/relax-wins/">bad press</a>, and rightly so, but for different reasons than we&#8217;re going to talk about here.  We believe that virtually <em>all</em> forms of validation, as commonly practiced, are harmful; an anathema to use at Web scale.  Specifically, our argument is this;</p>
<blockquote><p>
Tests of validity which are a function of time make the independent evolution of software problematic.
</p></blockquote>
<p>Why?  Consider the scenario of two parties on the Web which want to exchange a certain kind of document.  Party A has an expensive support contract with BigDocCo that ensures that they&#8217;re always running the latest-and-greatest document processing software.  But party B doesn&#8217;t, and so typically lags a few months behind.  During one of those lags, a new version of the schema is released which relaxes an earlier stanza in the schema which constrained a certain field to the values &#8220;1&#8243;, &#8220;2&#8243;, or &#8220;3&#8243;; &#8220;4&#8243; is now a valid value.  So, party A, with its new software, happily fires off a document to B as it often does, but this document includes the value &#8220;4&#8243; in that field.  What happens?  Of course B rejects it; it&#8217;s an invalid document, and an alert is raised with the human adminstrator, dramatically increasing the cost of document exchange.  All because evolvability wasn&#8217;t baked in, because a schema was used in its default mode of operation; to restrict rather than permit.</p>
<p>Just because it only makes sense for a field in a document to contain the values &#8220;1&#8243;, &#8220;2&#8243;, or &#8220;3&#8243; today, does not necessarily mean &#8220;4&#8243;, &#8220;0&#8243;, or &#8220;9834&#8243; won&#8217;t be valid tomorrow.  Similarly, just because a document doesn&#8217;t now contain a field named &#8220;Blarg&#8221;, it doesn&#8217;t mean it won&#8217;t later.  A good rule of thumb in document design is to avoid making assumptions about what <em>won&#8217;t</em> be there in the future, and a rule of thumb for software is to defer checking extension fields or values until you can&#8217;t any longer.</p>
<p>On the Web, you need to be able to process messages from the future.</p>
<p>P.S. if you&#8217;re wondering what time-<em>in</em>dependent validity looks like, we&#8217;ll cover that at a later date (check the tags of this post for a hint).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coactus.com/blog/2006/12/validation-considered-harmful/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Lost Art of Separating Concerns</title>
		<link>http://www.coactus.com/blog/2006/12/the-lost-art-of-separating-concerns/</link>
		<comments>http://www.coactus.com/blog/2006/12/the-lost-art-of-separating-concerns/#comments</comments>
		<pubDate>Mon, 04 Dec 2006 20:47:51 +0000</pubDate>
		<dc:creator>Mark Baker</dc:creator>
		
		<category><![CDATA[architecture]]></category>

		<category><![CDATA[webarch]]></category>

		<category><![CDATA[webservices]]></category>

		<guid isPermaLink="false">http://www.coactus.com/blog/2006/12/the-lost-art-of-separating-concerns/</guid>
		<description><![CDATA[I&#8217;ve elaborated on an earlier blog post about reuse over at InfoQ with an article titled The Lost Art of Separating Concerns.  Check it out and let me know if this helps you understand REST&#8217;s value-add over SOA/WS any better.
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve elaborated on an <a href="http://www.coactus.com/blog/2005/11/on-interface-and-implementation-and-reuse/">earlier blog post about reuse</a> over at <a href="http://www.infoq.com">InfoQ</a> with an article titled <a href="http://www.infoq.com/articles/separation-of-concerns">The Lost Art of Separating Concerns</a>.  Check it out and let me know if this helps you understand REST&#8217;s value-add over SOA/WS any better.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coactus.com/blog/2006/12/the-lost-art-of-separating-concerns/feed/</wfw:commentRss>
		</item>
		<item>
		<title>One thing</title>
		<link>http://www.coactus.com/blog/2006/10/one-thing/</link>
		<comments>http://www.coactus.com/blog/2006/10/one-thing/#comments</comments>
		<pubDate>Tue, 17 Oct 2006 14:09:05 +0000</pubDate>
		<dc:creator>Mark Baker</dc:creator>
		
		<category><![CDATA[architecture]]></category>

		<category><![CDATA[webarch]]></category>

		<category><![CDATA[webservices]]></category>

		<guid isPermaLink="false">http://www.coactus.com/blog/?p=33</guid>
		<description><![CDATA[I&#8217;ve been doing a lot of writing recently (most of it yet to be published) on a specific topic that I first wrote about here a while back.  The topic is important because it&#8217;s the answer to a question I was asked (offline) a few weeks ago;

In your opinion, what is the one thing [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been doing a lot of writing recently (most of it yet to be published) on a specific topic that I first <a href="http://www.coactus.com/blog/2005/11/on-interface-and-implementation-and-reuse/">wrote about here</a> a while back.  The topic is important because it&#8217;s the answer to a question I was asked (offline) a few weeks ago;</p>
<blockquote><p>
In your opinion, what is the one thing that most clearly separates REST from SOA?
</p></blockquote>
<p>The answer I gave was&#8230; generality.</p>
<p>If you ignore identifiers, hypermedia, and all those other Webby things, and just look at REST and SOA as two architectural styles, the main difference is that REST internalizes the best practice that <em>generalized interfaces are better</em> (in the general case of document oriented distributed systems).  That&#8217;s really 90% (to pick a large number out of the air) of the difference.  If you&#8217;ve come from an RPC or OO-RPC background (CORBA, DCE, DCOM, RMI, Web services, etc..), and understand that, then you understand the Web.  And if you don&#8217;t, you don&#8217;t.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coactus.com/blog/2006/10/one-thing/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
