<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:ebpmlChannel="http:/www.ebpml.org/blog">
    <channel>
        <title>Carnets de Bord</title>
        <link>http://www.ebpml.org/ebpml_radio.htm</link>
        <description>A weblog about Service Oriented, Process Centric, Model Driven Programming Models</description>
        <language>en-us</language>
        <copyright>Copyright 2001-2008 ebPML.org</copyright>
        <lastBuildDate>Sun, 20 Apr 2008 18:00:00 GMT</lastBuildDate>
        <generator>FingerTips</generator>
        <managingEditor>jdubray@gmail.com</managingEditor>
        <webMaster>info@ebpml.org</webMaster>


   <item>
			<title>[REST] Open Letter to the (other) REST community</title>
			<link>http://www.ebpml.org/blog/86.htm</link>
			<description>
			<![CDATA[

		<p>  I know it is far easier to tell me that &quot;<a href="http://www.haloscan.com/comments/jjdubray/85_htm/#18664">You don't understand</a>&quot; than to have an intelligent discussion 
		about the kind of things you dare publishing. </p>
		<p>  When someone is capable of
		<a href="http://www.infoq.com/articles/rest-introduction">writing</a> :</p>
		<blockquote><p>The statelessness constraint isolates the client against changes on 
		the server as it is not dependent on talking to the same server in two 
		consecutive requests.</p></blockquote>
		<p>  I don't know who does not understand what. Why don't we run a 
		scenario to validate your point? Again, in Roy's world, I 
		see exactly how this works, but when two software agents communicate (say on 
		behalf of two resources inter-acting - a PO and an Invoice), that is pure rubbish. I don't know who 
		convince you of this, but this does not make any sense if unqualified. </p>
		<p>  I have spent an extensive amount of time reading about your claims 
		and in particular I read your bible, the RESTful Web Services book, front to 
		back. All they
		explain in this arrogant book is how they created a DAL using REST, and 
		with that they claim victory. Incidentally, to build a decent DAL, the concept of 
		&quot;collection&quot; was missing&nbsp; in (Roy's) REST, so APP 
		was put together to plug that inconvenient hole after years of efforts.<br />
		</p>
		<p>  Let me repeat it, your understanding of SOA is pre-2004, what you 
		say about SOA and Web Services might 
		have been true at some point, but things have evolved and it is antiquated today. As Udi pointed 
		out, this is not SOA 2.0, but the picture that we have of SOA today is a lot 
		clearer for a lot more people than it was before 2004. </p>
		<p>  You know, or course (but that would be too easy) that the best way to convince me 
		(and many other people) is to show me something that does not look like 
		a DAL, so far all the examples I have seen from 		<a href="http://www.infoq.com/articles/rest-introduction">you</a> 
		or anybody in your community  are DAL-oriented:</p>
		<p>  <img alt="" src="http://www.ebpml.org/blog/img12.jpg" width="232" height="379" /><br />
		</p>
		<p>  Yes, you understood that my questions are relevant so you sugar 
		coated your interface with &quot;SubmitOrder&quot; or &quot;Cancel Order&quot; (did I 
		say interface? did you see the interface? the actions? does not look 
		that uniform to me !).&nbsp; You proceed to explain (smartly not in the 
		article, but way down as an answer to a reader's question): </p>
		<blockquote><p>a) one is to PUT a new state to the resource, effectively changing its 
		internal e.g. from booked to shipped. </p>
			<p>b) Another way is to do a logical 
		move of the resource from one collection (of booked orders) to another 
		(of shipped orders). </p>
			<p>c) A third way is to represent the state change as a 
		resource in itself, e.g. by POSTing it to the order where it becomes a 
		sub-resource. This way, you have a history of changes. The mapping to 
		CRUD is not 1:1 -- a POST can create new resources, or simply process 
		something and return a result. In case a POST is used to create a new 
		resource, the server chooses the URI. </p></blockquote>
		<p>  So you would easily admit: </p>
		<p>  a) is an &quot;UPDATE&quot; and you also understand the coupling it creates 
		between the consumer and provider. </p>
		<p>  b) is an &quot;INSERT&quot; in a collection, but it is not really practical 
		because you'd have to &quot;search&quot; all collections to figure out in which 
		state the resource is. (I assume that when you say a &quot;logical&quot; move, you 
		are not doing a physical move so other links to this resource would not 
		be broken, right?) </p>
		<p>  c) is funny, now you &quot;INSERT&quot; another resource to the initial 
		resource, of course that's not CRUDy? How does the consumer gets 
		notified that the order submission failed or succeeded?&nbsp; </p>
		<p>  And, all the consumer wanted to do is express his or her intent to 
		&quot;submit an order&quot;. Do you really think this is a lot simpler than 
		non-CRUD oriented approaches? Who are you fooling?&nbsp; </p>
		<p>  The reality of everything that you explain is a &quot;build-as-you-go&quot; 
		CRUDing language that can deal with the complex cases supported by SQL 
		or XQuery and which relies on a million different conventions decided in 
		a common document between the developers of the consumer and the 
		provider. This is not coupling, this is called mortar. These conventions 
		will be done and interpreted differently by different people. So what 
		have you gained? absolutely nothing, we just created a bigger mess than 
		before. Sure, some people can now get back to their familiar 
		CRUD-Oriented Synchronous Client/Server architecture and continue 
		CRUDing happily. They don't realize that COSC/S is the core of the 
		problem in IT today. Some
		<a href="http://www.tbray.org/ongoing/When/200x/2008/05/07/REST-at-J1">
		people</a> call that &quot;&#8220;<em>Full control without much complexity</em>.&#8221; 
		Yeah, that works for me.</p>
		<p>  But of course &quot;I don't understand&quot;. How easy! Why don't you show us 
		the code? Why not? why wait for questions from the readers to even touch 
		that very central question? (BTW, I was not the one who asked the 
		question in case you wonder, I always use my true identity - but of 
		course, I am lonely).<br />
		</p>
		<p>  At the end of the day,  I have simply never seen any evidence
		that the (other) REST community would use (Roy's) REST for anything other than a DAL and CRUD around
		with it. When you talk to Steve Vinoski, the action &quot;interface&quot; does not 
		even exist. Few people are that &quot;extreme&quot;, the
		non-sectarian REST lovers use POSTs and define an action interface
		with WADL. If I understand Roy correctly, that's considered RESTful
		not harmful.<br />
		<br />
		You have one way to stop this huge waste of time: why don't you show us a non-trivial scenario implemented with
		REST principles? Pick your process, insurance, banking, procurement,
		reserve a tennis court&#8230; whatever. Maybe, just maybe, you will realize
		that you can't build connected systems with just a DAL and a CRUD 
		mentality. You might also realize that even
		this principle will not work: &quot;<em>REST is limited to the 
		client being told what to do next by the current state of where they are 
		now&quot;. </em>The way Roy
		frames REST is counter to SOA principles. It assumes an &quot;application&quot;
		boundary. It assumes shackles between the client and the server. SOA is about Peer-to-Peer
		software agents performing units of work. There is no client, there is
		no server, there is no-single agent telling everybody else what to do.
		There are autonomous agents which work Coordination (and not cohesion) 
		is a central concept of SOA. Go read WS-CAF if you don't understand what I mean.<br />
		</p>
		<p>  Yes, I have
		<a href="http://soa-talk.blogs.techtarget.com/2008/05/08/javaone-report-apache-tuscany-can-soa-be-this-easy/">
		great hopes for the future</a>, I start seeing that there is a strong 
		movement emerging behind SOA. It is built along the lines of 
		SOA-a-la-WSDL with a bi-directional interface asynchronous mechanism, 
		with orchestration at the core, coordination at the center, with 
		resources too !&nbsp; SCA and the SCA's Widget capability will kill this 
		silly RESTy CRUDing, have no doubt about it.</p>
		<p>  I think at this point you guys are just wasting everyone's
		time. Other &quot;<em>You don't understand</em>&quot; won't cut it
		much longer... hey, you can use it as much as you want, but, funny 
		enough, there is only one thing that I care, it is precisely to 
		&quot;understand&quot; like the most of us. So why don't you explain? No you 
		won't...</p>
		<p>  &nbsp;</p>
]]>				</description>
			<pubDate>05/08/08</pubDate>
			<guid>http://www.ebpml.org/blog/86.htm</guid>
		</item>

  <item>
			<title>[REST] Roy's Post on REST</title>
			<link>http://www.ebpml.org/blog/85.htm</link>
			<description>
			<![CDATA[

		<p>  Subbu pointed to a really interesting
		<a href="http://tech.groups.yahoo.com/group/rest-discuss/message/10740">
		post</a> from Roy Fielding.</p>
		<blockquote><p>There seems to be a common thread with most posts here. People 
			have been busy modeling everything as a resource and now <strong>
			they want to know how to do everything in a PUT or DELETE instead of 
			any of the other HTTP methods</strong>. That is wrong. </p>
<p>REST is not limited to GET, PUT, and DELETE. Anyone who says so is 
		just making things up as they go along.</p>
		<p><strong>REST is limited to the client being told what to do next by the 
		current state of where they are now</strong>, aside from the entry point(s) we 
		call a bookmark.</p>
		<p>That is feasible because the set of methods is uniform, not because 
		it is limited to CRUD.</p></blockquote>
		<p>  If you read the (other) REST community bible, the RESTful Web 
		Services book, all they recommend is to use REST to create a Data Access 
		Layer, so they mostly GET, PUT and DELETE. Unless I am mistaken, I also 
		heard most of the people in the (other) REST community talk about how 
		bad &quot;POST&quot; was, not to mention how a WADLization of the resources would 
		be a tragic design mistake.</p>
		<p>  I have heard so many times that there is no &quot;actions&quot; in REST that 
		you simply &quot;PUT&quot; resource representations back or new resources in 
		collections at will. </p>
		<p>  I must admit that your post is refreshing, though I would still 
		need some clarification about the &quot;Client is being told what to do 
		next&quot;. As I have explained many times, this makes perfect sense when the 
		client is a browser operated by a human. When the client is a (mundane) 
		piece of code, I would be really curious to understand your opinion on 
		how much &quot;coupling&quot; is needed in that case, and how this coupling would 
		materialize (in relation to the uniform interface).</p>
]]>				</description>
			<pubDate>05/07/08</pubDate>
			<guid>http://www.ebpml.org/blog/85.htm</guid>
		</item>


<item>
			<title>[SOA] Is the REST vs WS-* debate over?</title>
			<link>http://www.infoq.com/news/2008/05/rest-vs-ws-star</link>
			<description>
			<![CDATA[
			I wrote <a href="http://www.infoq.com/news/2008/05/rest-vs-ws-star">a summary</a> of a great article by Olaf Zimmermann and his colleagues from IBM Research. They may have found a fair and objective way to end this silly debate.
]]>				</description>
			<pubDate>05/05/08</pubDate>
			<guid>http://www.ebpml.org/blog/84c.htm</guid>
		</item>


<item>
			<title>[Other] At least we know that Jerry was not the reason why Microsoft wanted to buy Yahoo...</title>
			<link>http://biz.yahoo.com/rb/080505/yahoo.html?.v=10</link>
			<description>
			<![CDATA[
			<p>"If they have anything new to say, we would be open. ... I am more than willing to listen."</p>
			<p>If a company is willing to give away all the cash they have in the bank to buy something that's not even worth half of it, you would think the seller would listen with both ears open. Either you want to sell or you don't, but if you want to sell, you don't let 47.5 billion walk away while creating such a chaos for your company to operate. One could think this was Microsoft's master plan all along, but no, not a chance.</p>
			<p>IMHO, the battle ahead is not ads, it is just part of it, the battle is the cloud. Microsoft's willingness to bet the farm in this segment is simply showing that desktop computing as we know it has no longer any value. Welcome to the connected systems world.</p>
]]>				</description>
			<pubDate>05/05/08</pubDate>
			<guid>http://www.ebpml.org/blog/84b.htm</guid>
		</item>

 <item>
			<title>[SOA] SOA Data Services</title>
			<link>http://www.ebpml.org/blog/84.htm</link>
			<description>
			<![CDATA[
		<p>
		<a href="javascript:HaloScan('84.htm');" target="_self"><script type="text/javascript">postCount('84.htm');</script></a> | <a  href="javascript:HaloScanTB('84.htm');" target="_self"><script type="text/javascript">postCountTB('84.htm'); </script></a>
		</p>
		<p>  <a href="http://www.ittoolbox.com/profiles/eroch">Eric</a> is 
		definitely the kind of people I like (apologies for not tracking your 
		blog earlier).&nbsp;</p>
		<blockquote><p>Yet when I review many SOA enterprise designs, I find that creating 
		specific entity services are most often designed and implemented 
		incorrectly. What many are building is simple CRUD service access to 
		data that provides little business value and causes technical problems 
		with data integrity,
		<a href="http://blogs.ittoolbox.com/eai/business/archives/soa-data-services--23515#">
		performance</a> and tight-coupling with the underlying data structures &#8211;
		<a href="http://blogs.ittoolbox.com/eai/business/archives/soa-design-patterns-17563">
		see CRUD anti-pattern.</a> </p>
		<p>What you want from an entity service is business orientation (e.g. an 
		order or customer entity vs. CRUD like operations), federation 
		(aggregating disparate but related data), high performance (such as 
		caching federated data) and abstraction (data structure and location 
		hidden from the services). </p></blockquote>
		<p>  Actually REST (Roy's Theory of the Web) does has something to teach 
		us in the Data Services world. When Data is spread across autonomous 
		systems of record (e.g. services), you need to consider 3 levels of federation:</p>
		<ul>
			<li>navigational (from customer to order)</li>
			<li>attribute level (some customer attributes are in two separate systems)</li>
			<li>record level (customer records are in different systems)</li>
		</ul>
		<p>  Of course an information system often involves all 3 levels of 
		federation simultaneously. The role of federation is to manage 
		seamlessly the relationships (as in ER) across disparate systems. So for 
		instance, in the first type, a purchase order systems is obviously going 
		to have a bit of customer information embedded in it. Each customer will 
		have an identifier and the goal of a federation system is to make sure 
		that when you navigate from a customer to an order, the correct 
		identifier mapping is applied to get to its orders.</p>
		<p>  If you use a URI as an identifier (and not as a QBE with this silly 
		URI mapping ritual), REST provides an identifier mechanism that can 
		avoid complex foreign key mappings.</p>
		<p>  At the attribute level, REST (Roy's Theory of the Web) has also 
		something to teach us. If we go back to the 
		<a href="http://www.ebpml.org/blog/80.htm">cohesion discussion </a>and the 
		point I was making about &quot;Cohesive Information Models&quot;, REST can also 
		help to solve quite elegantly the problem of providing just-in-time 
		information. The purchase order would hold a URI to the customer's 
		contact information (which for a business can change quite often). It is 
		not until you physically need to consume this information (i.e. call the 
		contact, or at least display this information) that you would actually 
		invoke the corresponding GET operation. </p>
		<p>  I cannot stress enough the importance of Data Federation concepts 
		in a Service Oriented Architecture, precisely because cohesive 
		boundaries are virtually impossible to define. </p>
		<p>  The only issue I have with the REST community (not Roy) is that 
		they probably see the same benefits as I do, and they go all the way, 
		they say, REST works for everything else, yet what they end up doing is 
		CRUDing because they absolutely refuse to consider how important the 
		concept of Inter-Action is (which is missing from Roy's Theory). </p>
		<p>  I have nothing against theories, they are obviously the right thing 
		to do, but so many times in my career have I seen theories applied 
		outside the context from which they were developed (no less than the Web here). The 
		first week into my PhD, my advisor asked me to review some of his 
		calculations. I smelled something fishy, but I was not familiar with the 
		theory, and I told him. Remember it was 
		a time where you could not &quot;Google&quot; anything. It was a time where you 
		had to order books from a librarian and wait sometimes several weeks 
		before you could get it. Sure enough during my second PhD (I have 
		technically 1.5 PhD, I dropped out the second), I attended a class where 
		they reviewed the theory that my advisor had applied and he had pretty 
		much violated all assumptions that you needed to validate before you 
		could apply the theory). Similarly, I was working as part of a 50 M 
		DARPA project at HRL, and again a Professor from CU demonstrated that one of the key 
		goal of this project could not be achieved based on the theory of 
		non-linear systems. Yet, our system had only a few discontinuities and was 
		&quot;linear-enough&quot; otherwise to get the job done with linear 
		system controls. So if you allow me, I 
		am quite suspicious when people (PhDs or not) apply &quot;theories&quot; well outside 
		their boundaries without validating (and understanding) the context in 
		which the theories apply.    
		</p>
		<p>  Roy's developed his theory by looking at the 
		Web as a collection of &quot;resources&quot;. IMHO, he has built his theory 
		without&nbsp; considering the concept of &quot;Resource Lifecycles&quot; 
		(for good reasons). He made an approximation, like every scientist does. 
		Here is why, the 
		lifecycle of a Web Page is very basic:   
		</p>
		<p>  <img alt="" src="http://www.ebpml.org/blog/img4A.jpg" /></p>
		<p>  You can question whether &quot;update&quot; is a good thing to do for a Web 
		page, but, whatever the lifecycle is, it is basic and most importantly, 
		it is <strong>UNIFORM </strong>for all web pages. This uniformity is the 
		reason for the Uniform Interface, there is nothing intrinsic to the 
		&quot;uniform interface&quot; (I think Roy goes a bit overboard in his thesis with 
		this constraint, he does not explain enough the origin of the 
		constraint, he focuses too much on the benefit).    
		</p>
		<p>  Here is a plausible general metamodel for resources, I think REST 
		principles can be derived from this metamodel but it has the merit to 
		surface an arbitrary resource lifecycle and an arbitrary inter-action 
		interface.</p>
		<p> <a href="http://www.ebpml.org/blog/img48.jpg"><img alt="" src="http://www.ebpml.org/blog/img48.jpg" width="488" height="394" /></a>  </p>
		<p>  A uniform 
		interface is a complete myth when the lifecycle of a resource is 
		different than the one of a web page. This is yet another case of a few 
		people (not Roy) applying &quot;theories&quot; well beyond the context for 
		which they were defined. It is already hard enough to come up with a 
		useful theory (ask Newton) but thinking that there are extended areas of 
		application that serendipitously appear here and there is, in general, 
		pure fantaisy.</p>
		<p>  Sure enough the remoting patrol, jumped on this like a bear on a 
		beehive, they saw yet another uniform <strong>communication</strong> interface they had 
		not explored. Moreover this communication interface was backed with 
		extremely scalable web servers activation mechanisms. But, yet again, they don't realize that the 
		lack of &quot;lifecycle&quot; and &quot;inter-actions&quot; that made them fail to apply 
		Distributed Computing communication principles to information systems construction, 
		is going to fail them again in REST. As long as we will give people some 
		mechanisms to CRUD the resources, we will face the same wall.</p>
		<p>  I don't think 
		<a href="http://blogs.ittoolbox.com/eai/business/archives/soa-data-services-23515">I am that lonely</a> saying all this, but sure enough, it 
		is not as sexy as telling people: look how successful the Web is, now 
		imagine how successful you are going to be by implementing your 
		information systems with the technologies that made the Web successful. Woa, can't beat that 
		logic !</p>
		<p>  &nbsp;</p>
]]>				</description>
			<pubDate>05/03/08</pubDate>
			<guid>http://www.ebpml.org/blog/84.htm</guid>
		</item>


 <item>
			<title>[SOA] WOAmiting</title>
			<link>http://www.ebpml.org/blog/83.htm</link>
			<description>
			<![CDATA[

		<p>  The recent movement of &quot;so called&quot; analysts and experts around WOA 
		has left quite a few people a bit sickened (<a href="http://schneider.blogspot.com/2008/04/soa-and-woa-comparison.html">Jeff</a>,
		<a href="http://www.biske.com/blog/?p=400">Todd</a>,
		<a href="http://www.soacenter.com/?p=154">Miko</a>...)</p>
		<p>  We have lived in the &quot;transistor age&quot; for the past 40 years, just 
		CRUDing around. </p>
		<p>  SOA is about building integrated circuits and reusing these ICs 
		when to construct solutions. It is no surprise that some people can't 
		make the switch, so to speak, and will find every possible way to build 
		their solutions from transistors. Yes, the ICs have been hard to come 
		by, because the old mentality is hard to break (Some people will still 
		use an OpAmp as a transistor). It is also true that the IC technologies 
		are barely hitting the market with: SCA and BPEL for instance.&nbsp;&nbsp; </p>
]]>				</description>
			<pubDate>05/01/08</pubDate>
			<guid>http://www.ebpml.org/blog/83.htm</guid>
		</item>

<item>
			<title>[Other] The rules of Internet Business CIRCA 2008 by Rich Barton</title>
			<link>http://blog.seattlepi.nwsource.com/venture/archives/137881.asp?source=rss</link>
			<description>
			<![CDATA[
			<p>Barton ... offered a few bullet points on the Internet business, saying the 
&quot;age of verticals has really just begun.&quot; Here are Barton's rules of the 
Internet.</p>
<ul>
	<li>If it can be rated, it will be rated.</li>
	<li>If it can be free, it will be free.</li>
	<li>Professionals who are active players in new vertical marketplaces will 
	win.</li>
	<li>If it can be known, it will be known.</li>
	<li>There can be no vertical marketplace without community.</li>
	<li>The digital media model rules.</li>
</ul>
<p>This has definitely a feel of 1999 and B2B, but it looks quite real this time.</p>
]]>				</description>
			<pubDate>05/01/08</pubDate>
			<guid>http://www.ebpml.org/blog/82b.htm</guid>
		</item>

<item>
			<title>[REST] Who Said Uniform Interface?</title>
			<link>http://www.ebpml.org/blog/82.htm</link>
			<description>
			<![CDATA[
		<p>  These days, Tim Bray
		<a href="http://www.tbray.org/ongoing/When/200x/2008/04/24/Inflection">
		courageously</a> claims &quot;REST, <strong>they</strong> say, is the 
		way to go&quot;. I guess if &quot;they&quot; say, it must be true, as long as Tim 
		repeats it.</p>
		<p>  Francois Leygues, a French member of the REST community, sent me a 
		pointer to this blog post from Andrew Townley: &quot;<a href="http://atownley.org/2008/04/uri-opacity-revisited/">URI 
		Opacity Revisited</a>&quot;.</p>
		<p>  Andrew's findings are in line with mine when it comes to explaining 
		how &quot;uniform&quot; an interface can be. Yes, when a human is in the loop, it 
		works like magic, and...</p>
		<blockquote><h3>The Big Problem</h3>
		<p>While all the above discussion about hypermedia applications is great 
		stuff, the big problem with interesting hypermedia applications is that 
		you need to understand what all the links do. <strong>With people, it&#8217;s easier, 
		but with automated service consumers, it&#8217;s much harder</strong>.</p></blockquote>
		<p>  &quot;Ben oui&quot;, as we say sadly in French. You don't have to be rocket 
		scientist to figure that out. I would not be surprised if many more 
		people figure this out after playing 5 minutes with a REST framework 
		trying to implement some server-to-server communication.</p>
		<p>  Let's take yet another example. I have a &quot;Tennis Court&quot; resource. 
		This resource can be reserved or not (just to keep it simple). So there 
		are two actions, reserve and free. The resource itself can be in two 
		states: reserved and free. How do you implement a reservation system? </p>
		<p>  a) the CRUD way: the resource representation has an element called 
		&lt;free&gt;, you change its value and you PUT the Tennis Court resource. </p>
		<p>  b) you POST something somewhere: that's really like a Web Service 
		operation</p>
		<p>  c) you PUT a &quot;reservation&quot;/&quot;termination&quot; resource with the Tennis 
		Court ID and your ID (at this point you can either assumes that the 
		Tennis Court resource implementation looks up for the latest reservation 
		or termination and returns the content of the &lt;free&gt; element 
		accordingly, or the implementation invokes a) to avoid figuring out the 
		state of the resource when it's queried again).</p>
		<p>  Solution a) strongly couples the consumer and the provider, b) is 
		business as usual, c) you mean c) is really simpler than a web service 
		operation? no at end of the day there is something called a &quot;reserve&quot; 
		operation (you could also think of a reservation service), and this 
		&quot;reserve&quot; operation has to fly from the consumer to the provider. When a 
		user is in the loop, all this works automagically, and I explained many 
		times why (Andrew agrees). When two software agents talk to each other, 
		then they both have to agree on what a &quot;reserve&quot; operation is and use a 
		&quot;<a href="http://www.ebpml.org/blog/81.htm">uniform interface</a>&quot; to 
		exchange the intend. </p>
		<p>  Now, two words on the topic of &quot;URI Opacity&quot;. Again, when humans 
		are in the loop, meaningful URL make perfect sense. I don't think it is 
		a good idea to rely at all on this mechanism in the case of 
		server-to-server communication because a service implementation is 
		usually involving some back-end system and it is likely that this 
		backend system will want to take a look at this metadata too. </p>
		<p>  At the end of the day, programming is really about not being 
		&quot;sloppy&quot;, and REST, as a programming model, is the ultimate sloppy 
		technology. Again, when applied to the architecture of the Web, REST is 
		great, terrific, I can't say enough good things about it. When applied 
		to SOA, its principles are terrible. Except for the concetp of 
		&quot;Resource&quot;, REST has absolutely nothing that is required for 
		constructing a SOA: bi-directional 
		interfaces, inter-actions, orchestration, coordination and assemblies. 
		People&nbsp; like Tim Bray simply don't get it, be sure that they won't 
		be around to help clean up the mess they are creating.</p>
		<p>  Who said again, that &quot;I was the only one to say what I am saying 
		and therefore I MUST be wrong&quot;? I am simply appalled at the type of 
		things some people in the REST community will do and claim to try to 
		stop any reasonable discussion. </p>

]]>				</description>
			<pubDate>04/30/08</pubDate>
			<guid>http://www.ebpml.org/blog/82.htm</guid>
		</item>

<item>
			<title>[OTHER] Where's your DVD drive?</title>
			<link>http://www.ebpml.org/blog/81.htm</link>
			<description>
			<![CDATA[
		<p>  This <a href="http://didierb.com/?p=108">video</a> caught my 
		attention. So its the Spring of 2008, you are the CEO of 60+ billion 
		dollar ISV and when someone shows you an Air Book, you ask
		</p>
		<blockquote>  where's your DVD drive? </blockquote>
		
		<p>  I am surprised he did not add, where's your modem?</p>
]]>				</description>
			<pubDate>04/29/08</pubDate>
			<guid>http://www.ebpml.org/blog/81b.htm</guid>
		</item>

<item>
			<title>[SOA] Dave Thomas on SOA</title>
			<link>http://www.infoq.com/interviews/dave-thomas-programming-languages-soa-and-the-web#</link>
			<description>
			<![CDATA[

					<p>Dave is a pretty cool guy. I think he has a point about SOA standards, however, I have lived quite a few years in the Technical Commitees and Working Groups of the SOA standards at W3, OASIS and OAGIS. I can tell you that the John Yunkers, Dale Mobergs, Monica Martins, John Evdemons, Eric Newcomers, Mike Edwards and Jim Marinos of the world (and many many more) worked their a... off to get great stuff out the door. There is a lot more personal politics (driven by substandard thinkers more concerned to leave their name on a spec than what the spec does) than vendor politics that get in the way of producing well designed standards.</p>

]]>				</description>
			<pubDate>04/27/08</pubDate>
			<guid>http://www.ebpml.org/blog/82.htm</guid>
		</item>


<item>
			<title>[SOA] Can't wait to get Webberified and Savastisized</title>
			<link>http://www.1060.org/blogxter/entry?publicid=B9AACBD579F0128C2B59697F2CB34F7F</link>
			<description>
				<![CDATA[
				<p>I am seu <a href='http://www.1060.org/blogxter/entry?publicid=B9AACBD579F0128C2B59697F2CB34F7F'>scared</a>, I think I am going to go duck under by bed, ney, I am from Marseilles (Remember Zidane?) with roots in Porto-Vecchio, and I did live in my youth in the North Quarters (Boulevard Jourdan Prolongé to be exact), so I learnt a thing or two there. Steve, thanks for the post, I had such a good leugh. Frankly, never have I seen a post as crapy as Jim's (that being said, I do feel a bit less bad, now that you said this).</p>
				<p>This <a href='http://jasonwoodruff.wordpress.com/2008/04/24/cohesive/'>one</a> from Jason Woodruff is for a good laugh too, I am glad people have humor.</p>
				
 		
 		]]>				</description>
			<pubDate>04/27/08</pubDate>
			<guid>http://www.ebpml.org/blog/81.htm</guid>
		</item>

 <item>
			<title>[SOA] What's Cohesive About SOA?</title>
			<link>http://www.ebpml.org/blog/80.htm</link>
			<description>
			<![CDATA[

		<p>  Some people tend to think that I enjoy creating such a 
		controversies, but at the end of the day I don't. Anybody is of course 
		free to say and do what they want, but we seem to have reached a point 
		of evolution that seem to imply &quot;as long as you can say or write 
		something, there is always some truth to it&quot;.</p>
		<p>  SOA could very well be the ideal area to say anything you want. And 
		boy do some people enjoy doing that. Of course, you could very well turn 
		this argument to me, but I pride myself to keep the debate open, no 
		mater what. My only concern is helping IT architects make their day to 
		day decisions, whether they are strategic or tactical.
		</p>
		<p>  The short history of SOA is that people once thought 10 years ago 
		to use Web technologies to exchange information between servers (that 
		was a sensitive thing to try). It started with ebXML for B2B 
		applications, then Microsoft and IBM drove it to focus on 
		interoperability while some people threw BPM in the mix. We then realize 
		we could do EAI a bit better with XML and SOAP than the clunky EAI 
		frameworks of the 90s. Now we are reinventing a component model using 
		SOA principles with SCA, while a new community is emerging calling all 
		these effort &quot;crap&quot;, and asking us to go back to the basics of the Web 
		(and with it, going back the corniest programming model concepts).
		</p>
		<p>  Overall nothing really took shape over the last 10 years, sure 
		there are successful products and technologies, but at the end of the 
		day, you look back and you say Service Orientation did not emerge the 
		way Object Orientation did. I have not lost hope, this one is hard, and 
		there is also a lot more baggage (solid baggage) today than we had in 
		the 70s.
		</p>
		<p>  So in this context it is no wonder why so called &quot;experts&quot; and 
		&quot;analysts&quot; can paint an &quot;ubuesque&quot; vision of SOA and say anything they want 
		while FUDing an entire industry one 
		post at a time. I won't say it enough, SOA is unfamiliar and to the 
		people that tell you they were doing SOA 20 years, just ask them what 
		they used for an orchestration engine, how they were &quot;assembling&quot; 
		components together and if their IDL supported &quot;<strong>bi</strong>-directional&quot; 
		(let me keep the dash to really emphasize the bi) interfaces.</p>

		<p>  There are many approaches to agent-to-agent &quot;communications&quot;&nbsp; 
		(I don't want to say &quot;distributed computing&quot; as I see the goal of DC to 
		actually distribute computing resources and make them act as one). DC 
		has been tremendously successful if you ask me, and huge progress is 
		still made every day.
		</p>
		<p>  Now, you need a &quot;uniform interface&quot; to communicate for sure. As I 
		said in an earlier post there are plenty to choose from:</p>
		<ul>
			<li>Send, Receive (MEST, WSE)</li>
			<li>Get, Put, Delete, Post (REST)</li>
			<li>Select, Insert, Update, Delete (SQL)</li>
			<li>Request/Response, Notification, Solicit/Response, One-Way (WSDL)</li>
			<li>Publish/Subscribe (JMS and the like)</li>
			<li>Prepare/Commit/Rollback</li>
			<li>OAGIS Verbs</li>
			<li>...</li>
		</ul>
		<p>  You can implement agent-to-agent communication with any of them. 
		Each have some merit, I don't really see one better than another, just 
		trade-offs. For instance, Udi does
		<a href="http://cid-c8ad44874742a74d.skydrive.live.com/self.aspx/Blog/Avoid_a_failed_SOA.ppsx">
		great things</a> with the Publish/Subscribe uniform interface (which is a 
		bit off the beaten paths of SOA). I 
		could even argue that it does not really matter which one you pick, at 
		the end of the day, this collection of interfaces shows that, somehow, 
		at some point, you will need all the other semantics. By picking one you 
		simply agree to layer the semantics of the others on top of the one you 
		picked. Incidentally, you will notice that some of these uniform 
		interface may require some form of coordination, so any &quot;so-called&quot;
		<a href="http://www.haloscan.com/comments/jjdubray/72_htm/">SOA 
		Reference Model</a> that does not surface &quot;coordinators&quot; are incomplete 
		and require major redesign.</p>

		<p>  The question, the very question, is do you really have a SOA once 
		you picked one? Is SOA about taking the current programming model and 
		arbitrarily &quot;remote&quot; something using one of these uniform interfaces? 
		Anybody would venture to say Yes? I don't think so when the question is 
		asked in these terms. So what's more to the uniform interface?</p>
		<p>  Of course, first and foremost, SOA is about creating autonomous 
		software agent that react to a request. By definition an &quot;autonomous&quot; 
		software agent of that sort exhibits a high degree of cohesion. You 
		can't invoke anything else from a Service than what it's interface 
		exposes. So I hope Jim, this is not what you were trying to teach us.
		</p>
		<p>  The problem though is this stubborn service interface, that can't 
		be hacked in any way, and if you have to change it, you have to version 
		it, this is yucky. In reality, let's face it, people are used to by-pass 
		cohesive principles all the time. They can never make up their mind 
		about what the best way to fetch or update some data elements. There is 
		always a scenario that requires a new query to be exposed or a new 
		update gram to be built. So over time, low level services interfaces 
		tend to become messy as modifications result in an expanded interface. 
		REST found the solution to this mess, &quot;don't use a service interface&quot;, 
		just pretend it is not there, and keep adding URIs (which are really 
		interface point and not resources) to deal with these constant 
		modifications. Ta..da... problem solved? not quite. There are two 
		problems with that: a) in a connected world, there are more than one 
		consumers, nobody owns both ends any more. What happens if you break 
		&quot;the other end&quot;? b) the other problem is precisely that the programming 
		model should not let you CRUD from the consumer side. As long as you 
		will CRUD, you will strongly couple the &quot;consumer&quot; and the &quot;provider&quot;. 
		This is not because you chose a uniform interface to happily continue 
		CRUDing remotely that you are building a Service Oriented Architecture. 
		You can tell anyone this is not true, ultimately, this is what people 
		will realize. It does not matter if you apply good cohesion design 
		principle as you are CRUDing, you will fail to build reusable services, not because the service can't be reused at a given point in time, but because you will break existing consumers as you try to accommodate the needs of new consumers.
		<strong>Above the service interface, Cohesion&nbsp; is Coercion in a 
		SOA.</strong></p>
		<p>  The goal of a Service Oriented Architecture is precisely about 
		using <strong>new </strong>technologies a) that support forward compatibility (XML, XSD, WSDL)  and b)<strong> </strong>creating a new factoring 
		of your business logic (SCA, BPEL) that is not CRUD-oriented to 
		avoid this terrible coupling between the consumer and the provider. This 
		is why people were not doing SOA 20 years ago, nobody was doing SOA 20 
		years ago. Of course, ultimately you hit the systems of record, so some 
		CRUD operation is going to be performed. Of course cohesive design 
		principles are going to be applied within a service implementation. But 
		above the service interface I would argue that nothing is cohesive. You 
		actually want to achieve quite the opposite with loose coupling. You 
		want to be able to assemble your service with as many consumers as 
		possible. You may even want the consumer to tell you a few things about 
		how to provide the service by injecting some decision rules or a 
		sub-service provider..., again <strong>this is loose coupling</strong>. 
		At that level none of the cohesion principles apply. I would even argue 
		that technically, <strong>one of the major advances of SOA </strong>, 
		(again at the technical architecture level), is that I can now build 
		systems in ways that let me scale, secure, fail-over,... different parts 
		of the systems differently, against all principles of cohesion. Hence, 
		the principles of good cohesion are of no help when it comes to design 
		the service interface.
		</p>
		<p>  Now, Jim, have you ever asked how cohesion can apply to an 
		Enterprise Information Model? Information is relational, has always 
		been, will always be. How could you apply any cohesion principles to a 
		data model that is entirely related? There are none that you can apply. 
		And frankly this is also a challenge in SOA. You can't easily do join 
		across service interfaces (REST or WSDL for that matter). It really 
		requires that you factor your data structures in two tiers: an 
		information business entity tier and the parts that constitute a given 
		information entity. If you have a purchase order service and a customer 
		service, how do you pull customer information as you fetch a Purchase 
		Order? (Say, the telephone number of the customer or the contact person, 
		that you would always want to be the latest information available).&nbsp; 
		Now, let's say you want to use SalesForce.com as you &quot;Customer Service&quot; 
		and &quot;NetSuite&quot; as your Purchase Order Service. You will 
		quickly conclude that pretty much every &quot;Resource Centric&quot; service is 
		&quot;related&quot; to any other service and cohesive boundaries are really hard 
		to define.</p>
		<p>  If you also look at this process (click on the picture to zoom in).</p>
		<p>  <a href="http://www.ebpml.org/blog/img11.jpg">
		<img alt="" src="http://www.ebpml.org/blog/img11.jpg" width="501" height="123" /></a></p>
		<p>  (this figure is coming from Slide 4 of
		<a href="http://www.omg.org/docs/soa-c/08-03-01.pdf">Ross Altman's 
		presentation</a> on composite applications)</p>
		<p>  There is nothing, absolutely nothing, cohesive about it. You want to be able to create value across cohesive boundaries. Services 
		like &quot;credit score&quot;, &quot;blue book value&quot;, &quot;appraisal&quot;, &quot;payment&quot; can be 
		reused in many different context: home, car, boat, ... loans. Business 
		Information like &quot;Loan Application&quot;, &quot;Loan&quot;, &quot;Customer&quot;, again brought 
		into the process assembly in a lot more opportunistic manner than a 
		cohesive manner. This is where concept where agility, business 
		alignment, reuse... come to play. You are not &quot;programming&quot; in a service 
		oriented architecture, you are &quot;assembling&quot;, you are &quot;compositing&quot;, you 
		are &quot;orchestrating&quot;.</p>
		<p>  <strong>Cohesion offers design concepts antagonist to Service Oriented 
		Architecture</strong> and only lives within the service implementation. 
		I understand why, if you CRUD all day with &quot;services&quot;, you want 
		(absolutely) to apply cohesion principles like people have been doing it 
		for 40 years, but don't tell me you are doing SOA.</p>
		<p>  SOA is about the emergence of an
		<a href="../com/an_introduction_to_SOA.htm">Inter-Action Oriented, 
		Asynchronous Peer-to-Peer programming model</a>. Sure the old 
		programming model, the CRUD-oriented synchronous client/server one) is 
		still going to be used &quot;inside&quot; a service implementation, down below, 
		but SOA is new, it is unfamiliar, it is based on technologies that did 
		not exist 20 years ago,
		<a href="http://steve.vinoski.net/pdf/IEEE-Old_Measures_for_New_Services.pdf">
		<strong>all the good software design principles</strong></a><strong> 
		that were discovered back then don't generally apply. </strong>Again, I 
		am absolutely not surprised that you or Steve think in these terms, this 
		is precisely the problem. Once you will unlearn some of the great things 
		of the past, and come to SOA with and open mind, you may, understand how 
		to use WSDL, BPEL or SCA.</p>
		<p>  So yes, I am quite mad at the &quot;cheap&quot; and sometimes incoherent 
		arguments that a small and cohesive community of &quot;experts&quot; and 
		&quot;analysts&quot; are spreading to keep the &quot;old regime&quot; in place. 
		I was just as mad at Assaf Arkin, Howard Smith and Frank Leyman who 
		argued for years that BPEL/BPML were a &quot;Business Process&quot; thing, when 
		most of the semantics to support business processes were missing. This 
		handful of people set the BPM industry 5-7 years back. Can you imagine 
		the magnitude of the loss? The same thing is happening here today, for 
		the exact same reasons: closed minds, cheap arguments over CIRCA 2001 pictures of SOA, a small group of 
		buddies who point at each other to gain credibility... the recipe is 
		well known. At least, 
		they won't be able to tell in the future that they were &quot;unaware&quot; of 
		possible alternatives to their best interpretation of what a Service 
		Oriented Architecture is. <br />
		</p>
]]>				</description>
			<pubDate>04/26/08</pubDate>
			<guid>http://www.ebpml.org/blog/80.htm</guid>
		</item>


<item>
			<title>[SOA] Is SOA about building distributed systems?</title>
			<link>http://www.ebpml.org/blog/78.htm</link>
			<description>
			<![CDATA[
		<p>  Stefan
		<a href="http://www.innoq.com/blog/st/2008/04/how_to_piss_off_people_and_kil.html#comment-1691">
		commented</a> that &quot;<em>respected members of the distributed computing 
		community for a long time</em>&quot; had to be right about SOA and 
		I had to be wrong because I was a lonely voice.</p>
		<p>  First, I am not alone, we are simply not as &quot;cohesive&quot; as certain 
		groups. Even saying &quot;we&quot; sounds weird to me. This is not about we, us, 
		them. This is about SOA.</p>
		<p>What I am often arguing about is well supported by commercial 
		products and open source frameworks such as Tuscany and Fabric3. There 
		is also this researcher and her group at IBM Zurich,
		<a href="http://www.zurich.ibm.com/~ryn/">Ksenia Ryndina</a>,, who are 
		actively researching the kind of programming model I advocate for. There 
		is also an entire open source methodology that is based on these 
		principles: <a href="http://www.praxeme.org.">http://www.praxeme.org.</a> I may well 
		be the most vocal of all these people, but I am certainly not alone&#8230; on 
		this side of the discussion. I am certain most of them have given up a 
		long time ago arguing with the other side. </p>
		<p>Amusingly, the large distributed computing power houses (IBM, Sun, 
		Oracle/BEA, and even SAP) have all a composite application strategy, and 
		I don&#8217;t think I would be in the position to teach them anything on the 
		topic. At best, I could point out that I have been saying this kind of 
		thing for a long time. </p>
		<p>  Second, yes, I do have a track record of being a lonely voice and 
		being right. I do remember a time in early 2000s when &quot;Business Process&quot; 
		and pi-calculus was the craze. Even people as famous as Frank Layman 
		from IBM research (whom I met in 2003) were spreading their wisdom about 
		BPEL being a &quot;Business Process Execution Language&quot;, when I was the only 
		one, not anyone else, against Frank, against Assaf, against Howard 
		Smith, against John Pike to say that no, BPEL was a programming language 
		and it had nothing to do with &quot;business process&quot;. BPEL was and is a 
		Service implementation language that is a key component of an 
		Inter-Action Oriented Asynchronous Peer-to-Peer programming model. 
		Howard Smith and John Spike has been converted. We don't hear Frank on 
		the topic anymore. Jim Webber in a recent presentation clearly 
		positioned BPEL as a programming language. I don't think there is many 
		people to say otherwise. I was also the one, the only one that 
		pi-calculus was not enough, though a solid theoretical foundation, and 
		again these days, there are hardly anybody to argue that leveling this 
		SIL at the level of pi-calculus is not a sensitive thing to do. You can 
		create a pi-calculus VM if you want, but the semantics are incomplete to 
		make it an efficient SIL.</p>
		<p>Even David Chappell had told me once (at the 2004 WCF SDR) that I was wasting my career as I was explaining to him the difference between orchestration and choreography and the place of orchestration in SOA (as a SIL). He said, "if Microsoft says this is what it is", why do you fight it? I fight, because of remarks like this, or remarks like yours. If our industry was less full of so-called "experts" we would make progress a lot faster, if you know what I mean. Yes, I have come very close to "experts" and I can safely tell anyone that "experts" are just like everyone else.
</p>
		<p>  So Stefan, if you allow me, if you want to &quot;shut me up&quot; I would 
		request that you use a different argument (this one was really 
		cheap) and maybe, just maybe, we could use technical arguments to reach 
		a conclusion.</p>
		<p>  Third, and that's the most interesting point, we could ask the 
		question whether SOA is really about Distributed Systems, whether an 
		&quot;expert&quot; in distributed systems is coming to SOA with the right mindset? 
		Do these &quot;experts&quot; really ask themselves why distribution at the 
		programming level has been a failure when applied to information systems 
		(and a big success when applied to other things)? why CORBA failed to 
		deliver a sound architectural foundation? When you read Steve Vinoski's 
		papers you understand what his vision of distributed system is. He wrote 
		recently an excellent one on REST and ERLANG, and what you see is that 
		these respected distributed computing experts are really thinking in 
		terms of activation. He loves ERLANG because it has a fantastic, light 
		weight, very scalable activation model (plus a cool pattern matching 
		capability that fits REST like a glove). This is what he dreamed to build one day. Is this useful, yes, very much 
		so. Is this SOA? not quite. </p>
		<p>  I wrote many times that SOA is not just about distributed systems, 
		but it is a lot more about &quot;connected&quot; systems. I had great hopes when 
		Don Box started to talk along these lines in 2003, at the LA PDC. He 
		sure delivered a great distributed communication framework, but as a 
		&quot;distributed expert&quot;, I think he missed the mark on &quot;connected systems&quot;. 
		Connected Systems are about reuse a lot more than they are about 
		activation and &quot;distribution&quot;. Reuse is about &quot;connecting&quot; arbitrary 
		pieces of code together, not in a serendipitous fashion, but in a 
		deliberate fashion. Connected systems are about inter-actions, 
		assemblies and forward compatibility, semantically accessible data 
		structures... Don Box himself had said once that Web Services technologies 
		were the first technology that did not require code generation 
		systematically, and that change was profound, this quote is still on the first 
		page of my web site, and of course, the first thing he did was to force 
		code generation in every aspect of WCF, negating the very innovation of 
		Web Service technologies (and XML). Right about the same time, WS-CAF 
		came along. This is truly the best standard work I have ever seen. Jim 
		Webber (and Mark Little) was a co-author of that spec. I always wondered 
		if WS-CAF was consciously designed to participate in this IAOAP2P 
		programming model. I know today that it was a pure coincidence, even the 
		name CAF was right on, but no, this was a coincidence. </p>
		<p>At the end of the day, SOA is about replacing a CRUD-oriented 
		Synchronous Client/Server programming model that has been in use for 
		over 40 years as the core foundation of information systems by an 
		Inter-Action oriented Asynchronous Peer-to-Peer programming model. There 
		is no other way around it, COSC/S cannot raise to the challenge of a 
		connected world, COSC/S <strong>is</strong> responsible for the silos 
		that we have built for the last 40 years. As long as the &quot;experts&quot; will 
		merely XMLize a COSC/S, we will keep asking why we can't get benefits 
		with SOA. The answer is simply because we are NOT doing SOA.</p>
		<p>So if you allow me, Stefan, I'll continue patiently hammering these 
		concepts and the difference between distributed and connected (i.e. 
		composite), until this is a well establish concept, even if you think 
		that I am too lonely in this discussion to deserve&nbsp; consideration 
		by the <em>intelligentsia</em>.<br />
]]>				</description>
			<pubDate>04/24/08</pubDate>
			<guid>http://www.ebpml.org/blog/78b.htm</guid>
		</item>


<item>
			<title>[SOA] Composite Applications, Service Oriented Architecture and ESBs – Issues and Decisions</title>
			<link>http://www.omg.org/docs/soa-c/08-03-01.pdf</link>
			<description>
			<![CDATA[
				<p></p>This is a good high level presentation from Ross Altman (Sun Microsystems) on Composite Applications. 
				<p>The statement I have a bit an issue with is that: "Most ESB Suites also provide technology to deliver
Composite Applications on top of those services". For me, an ESB is a service container that offers great "technical services" to construct services that can participate in a composite application. 
With JBI offering an assembly model, you can also think that ESB's can play that role too, but I don't know many ESB who also offer a <a href="http://www.infoq.com/articles/seven-fallacies-of-bpm">task container.</a> 
Other than that, this is a clear and great introduction about Composite Applications. </p>
]]>				</description>
			<pubDate>04/23/08</pubDate>
			<guid>http://www.ebpml.org/blog/78.htm</guid>
		</item>

<item>
			<title>[SOA] Cohesive Response</title>
			<link>http://www.ebpml.org/blog/77.htm</link>
			<description>
			<![CDATA[

		<p>  Well I got a lot of people upset:
		<a href="http://www.innoq.com/blog/st/2008/04/how_to_piss_off_people_and_kil.html">
		Stefan</a>,
		<a href="http://savas.parastatidis.name/2008/04/22/0a938298-7e90-42e5-9ab0-64e0fd7c7184.aspx">
		Savas</a>, Jim kept the legendary British cool.</p>
		<p>  Again, I stand by what I am saying, Jim's position on:</p>
		<ul>
			<li>cohesion in SOA (beyond the trivial conclusion that <strong>any</strong> 
			autonomous asset is by default exhibiting a high degree of cohesion)</li>
			<li>process-to-service relationship</li>
			<li>MVC as a design pattern for SOA/BPM</li>
			<li>Business people becoming IT architects (last but not least by 
			far)</li>
		</ul>
		<p>  is more than questionable.</p>
		<p>  Savas, about my communication style, I found that it works 
		-indirectly-: these days, I don't read many more people in the REST 
		community bashing WS-*, Tim Bray's BS on &quot;the end of SOA&quot;, or Steve's 
		serendipitous crap. Actually people eventually strengthen their 
		arguments or give them up (they don't want to look stupid).&nbsp; 
		Everybody saves time: you, the reader, me. Now, yes, it hurts me, you 
		are probably not the first one to think that I am rude and 
		unprofessional, but that's ok, if this is the price to pay, this is a 
		very tiny price compared to the end result.</p>
		<p>  The reality Savas, Stefan, Jim is that SOA is still raising a
		<a href="http://www.soacenter.com/?p=153">lot of questions</a>. We can 
		circle around for years if you want to. I offer an alternative: I just 
		ask anybody to answer just two very simple questions: </p>
		<p>  Have you ever considered factoring the business logic along the 
		lines of a <a href="http://www.ebpml.org/blog/33.htm">Resource Lifecycle</a>? 
		How does this fit with whatever your recommendations are?</p>
		<p>  Answering these two questions alone would end the REST/WOA vs SOA, 
		MEST vs WSDL, BPEL vs BPMN (if you want to) and surface how critical 
		representation-friendly data structures, bi-directional interface 
		definitions, orchestration, assemblies are to designing a Service 
		Oriented Architecture (note that I use concepts not technologies, pick 
		your favorite technology).</p>
		<p>  I would argue that all of the people that are so prompt to be 
		offended by my posts will <strong>never</strong> answer these questions, 
		they will never drive the discussion to answer these two questions.</p>
		<p>  An Inter-Action oriented, Asynchronous, Peer-to-Peer programming is 
		here to replace the CRUD-Oriented, Synchronous Client/Server programming 
		model. This is only a matter of time.</p>
		<p>  The irony here is that MEST is a lot closer to an IAOAP2P than a 
		COSC/S, but Jim does not see it. </p>

]]>				</description>
			<pubDate>04/22/08</pubDate>
			<guid>http://www.ebpml.org/blog/77.htm</guid>
		</item>

<item>
			<title>[SOA] Loose coupling and Cohesion</title>
			<link>http://www.ebpml.org/blog/76.htm</link>
			<description>
			<![CDATA[
		<p>  Quite hilarious (and symptomatic), I advise Jim to catch up with 
		modern SOA concepts, technologies and principles and he advises me to 
		read antiquated software engineering books, or articles from
		<a href="http://steve.vinoski.net/pdf/IEEE-Old_Measures_for_New_Services.pdf">
		Steve Vinoski</a>.</p>
		<p>  Jim, if all you wanted to tell us is that autonomy requires some 
		degree of cohesion, well you did not need a blog post for that. I was 
		trying to interpret your blog post in the context of an assembly of 
		services performing a unit of work and wondering how cohesive could an 
		assembly of services be?</p>
		<p>  Again, if you take a modern view of SOA (say post 2005) you 
		really wonder how an assembly (a module for me) can exhibit some degree 
		of cohesion. Even a service within an assembly (a component in SCA 
		terms) is likely to fail &quot;cohesion&quot; litmus tests. </p>
		<p>  Let's review Steve Vinoski's article. </p>
		<p>  <em>Functional cohesion occurs when a module does only one thing</em>: 
		take a look at 
		<a href="http://www.infoq.com/articles/seven-fallacies-of-bpm">Resource Lifecycle Services</a>, what does &quot;one thing&quot; means. 
		Is your recommendation really that services do only one thing at a time? </p>
		<p><em>Communication Cohesion is when a module carries out multiple 
		operations based on the same input or output data</em>: ok. why not, 
		some services might be designed that way but this is not the case for 
		the vast majority of them. I would argue that this is not even very important in SOA: XML helps 
		you not having the need to establish Communication Cohesion.</p>
		<p><em>Sequential Cohesion </em>is when a module carries out several 
		tasks and the input of one tasks feed to the other. What's the big deal 
		about that one? This is true in a pre-XML civilization. With XML you 
		don't care as much to achieve this level of cohesion.</p>
		<p><em>Logical Cohesion is a condition in which a module's activities 
		are grouped together because they appear to be able to share common 
		implementations</em>: that's a bit closer to SOA but again, have you 
		ever considered that when a Service Interface is implemented by a BPEL 
		definition, all the operations are tied together in the same 
		implementation? unlike OO you don't have necessarily a one-to-one 
		relationship between operation and implementation. </p>
		<p>  Jim in case you have not noticed, SOA is unfamiliar, it is time to 
		rewrite the books. Concepts like XML extensibility, semantic access (XPath), 
		or forward compatibility precisely alleviate the need to be cohesive. 
		Whatever the principles you learned in school, they most likely don't 
		apply any longer in an Inter-Action Oriented, Asynchronous Peer-to-Peer 
		programming model. </p>
		<p>  So for me cohesion is not a design principle you can apply at the 
		assembly level and even at the operation level. XML is the technology 
		that allowed us to break from cohesive software engineering (CSE). CSE 
		has been developed for bronze age programming languages. We are in 2008 
		today, things have evolved a tiny bit.&nbsp; </p>
		<p>  I stand by what I have said, a cohesion requirement creates 
		absolutely unnecessary constraints on the design of service interfaces 
		and implementations that actually reduce the degree of reuse of a given 
		service and its capacity to participate in different assemblies. Maybe 
		it is time to become familiar with modern loose coupling concepts that 
		include: bi-directional interfaces, assemblies, orchestration languages, 
		extensible and semantically accessible data structures. Ancient 
		programming techniques have been designed <strong>precisely</strong> 
		because you did not have these concepts within your programming model.</p>
		<p>  Every thing you say in your post, from applying cohesion principles 
		to SOA, &quot;a process is a service&quot; or 
		&quot;look at MVC if you don't get it&quot;, to &quot;Business people should 
		become IT architects&quot; does not make any sense and are likely to fail 
		anyone trying to build a Service Oriented Architecture. </p>
]]>				</description>
			<pubDate>04/22/08</pubDate>
			<guid>http://www.ebpml.org/blog/76.htm</guid>
		</item>


<item>
			<title>[SOA] Loose coupling</title>
			<link>http://www.ebpml.org/blog/75.htm</link>
			<description>
			<![CDATA[
		<p>A couple posts picked my interest today. &quot;<a href="http://soa-talk.blogs.techtarget.com/2008/04/21/does-woa-bring-anything-new-to-soa/?track=NL-130&amp;ad=636148&amp;asrc=EM_USC_3509525&amp;uid=2963443">Does 
		WOA bring anything new to SOA?</a>&quot; by Mike Meehan. Well, I have already 
		expressed what <a href="http://www.ebpml.org/blog/70.htm">I thought about WOA</a> and REST so I won't do a repeat here. 
		What I found surprising is that there is actually quite a few people 
		agreeing with some of what I was saying.</p>
		
		<blockquote>If users perceive WOA to be outside the
			
			principles of SOA, it could prove an excellent vehicle for 
			building Web-based stovepipes.</blockquote>
		
		<p>The article concludes:</p>
		<blockquote>[people] expressed an unequivocal desire to have no more than one 
		something-oriented architecture in their lives</blockquote>
		<p>Well someone who is trying single-handedly to topple SOA 
		with a &quot;Something Else Oriented Architecture&quot; is Jim Webber -the 
		<a href="http://www.ebpml.org/blog/32.htm">MEST</a> 
		guy. Mark Little points out this post by Jim: &quot;<a href="http://jim.webber.name/2008/04/19/30b4f0e9-f67a-4310-bf38-ca0a3423206e.aspx">Anemic 
		Service Model</a>&quot;. I am not sure why. I found his post being completely 
		erroneous. I may be missing something, but Jim is looking at the 
		relationship between Cohesion and Loose Coupling.</p>
		<p>He defines Cohesion as follows:</p>
		<blockquote><a href="http://www.site.uottawa.ca:4321/oose/index.html#cohesion">
		&quot;[Cohesion] measures of the extent to which related aspects of a system 
		are kept together in the same module, and unrelated aspects are kept 
		out.&quot;</a></blockquote>
		<p>  For me cohesion sounds like a good engineering principle that looks 
		a lot like &quot;<a href="http://www.lattix.com/technology/whatisdsm.php">Dependency 
		Structure Matrix</a>&quot;. In fact Jim concludes:</p>
		<blockquote>In fact good software tends to be both loosely coupled and highly 
		cohesive.</blockquote>
		<p>This is the part that I find completely bogus (again, unless I am 
		missing something). The goal of loose coupling is precisely to mitigate 
		cohesion as a good engineering principle. You can't be cohesive in a 
		connected system. You can't be both cohesive and loosely coupled. Even 
		in English, associating the two sounds really bad. </p>
		<p>The goal of loose coupling is to make to pieces of code work together 
		even though they may have been written at a different time, using 
		different technologies, with a different security model, ...</p>
		<p>SOA is about going away from cohesive systems to enable a wider range 
		of reuse scenarios. Nested cohesive systems do provide a &quot;nested&quot; 
		(library-style) reuse model: the upper layers can reuse the lower 
		layers. Unfortunately, it forces us to create systems in a way that is 
		incompatible with the way information systems should be architected. 
		Cohesion is the problem, loose coupling is the solution. Jim, do you 
		really think that people are trying to &quot;keep stuff together in the same 
		module&quot;?</p>
		<p>How can you say that when a system is loosely coupled, </p>
		<blockquote>even minor changes ripple through multiple components or systems</blockquote>
		<p>Have you considered this definition for &quot;<a href="http://www.ebpml.org/blog/40.htm">Loose 
		coupling</a>&quot;?</p>
		<p>The funny thing is that Jim thinks that other people think SOA is 
		best built by &quot;nesting&quot; service invocation in a &quot;Dependency Structure 
		Matrix&quot; style. Jim, I am sorry to say, but this view is what people 
		where talking about in 2001-2002. You need a
		<a href="../com/an_introduction_to_SOA.htm">refresh</a>. The very 
		picture that you think people have of SOA is highly-cohesive.</p>
		<p>Then you continue and recommend that people</p>
		<blockquote>build out a service that implements [a] process</blockquote>
		<p>  Jim, what are you talking about a service implements an entire 
		process? for sure that's going to be very cohesive. Now, how can you say 
		that this is an instance of &quot;MVC&quot;? Precisely the fundamental problem 
		with MVC is that is does not have natural boundaries for processes and 
		human tasks. People using MVC keep creating &quot;representations&quot; (i.e. 
		Model), views and controllers that cannot be associated easily to 
		processes and human tasks. Your recommendations and analyses are 
		completely bogus. I would really recommend that you spend more time 
		understanding SOA and less time trying to create specs that are 
		absolutely counter to SOA principles.</p>
		<p>  You know:</p>
		<blockquote>It might sound like a pretty dumb idea that my business stakeholders 
			to become (inadvertent) IT architects.</blockquote>
		<p>  is one of the dumbest recommendation you can make. You are no 
		George Lucas, there is only one thing anemic about your post, it is your understanding of SOA.</p>
]]>				</description>
			<pubDate>04/21/08</pubDate>
			<guid>http://www.ebpml.org/blog/75.htm</guid>
		</item>


 
<item>
			<title>[Other] Winter Fatigue?</title>
			<link>http://www.ebpml.org/blog/74.htm</link>
			<description>
			<![CDATA[

		<p>Yes, it's April 20th and yes it has been snowing yesterday, today and 
		it will probably snow tomorrow too. Want some proof? I took this picture 
		of my neighborhood this morning !</p>
		<p><img alt="" src="http://www.ebpml.org/blog/DSCN0670.JPG" width="481" height="376" /></p>
]]>				</description>
			<pubDate>04/20/08</pubDate>
			<guid>http://www.ebpml.org/blog/74.htm</guid>
		</item>
  	<item>
			<title>[SOA] An Introduction to SOA</title>
			<link>http://www.ebpml.org/com/an_introduction_to_SOA.htm</link>
			<description>
			<![CDATA[
		
				<p>Peter Brown, one of the editor of the SOA RM OASIS specification felt that I was making cheap comments about his spec.</p>
				<p>So I decided to use Web 2.0 technologies to voice my concerns rather than writting an endless critic to his spec. Here is my vision for SOA, it has been pretty 
				stable at least since 2002 and with most of those elements in place since 1999. I expressed this vision in a presentation that I made public in 2004 (Constructing Software for Service Oriented Architecture).</p>
			]]>				
				</description>
			<pubDate>04/19/08</pubDate>
			<guid>http://www.ebpml.org/blog/73.htm</guid>
		</item>
		
  	<item>
			<title>[SOA] SOA Fatigue?</title>
			<link>http://www.ebpml.org/blog/72.htm</link>
			<description>
			<![CDATA[
		
		<p>John claims that :</p>
		<blockquote>SOA is no longer a mysterious concept that we need conferences, 
		presentations, books and articles to clarify for us</blockquote>
		<p>I rarely disagree with John and I can't say that I completely 
		disagree with him on this one. I would argue however that what we need 
		is a lot less of
		<a href="http://www.infoq.com/presentations/steve-jones-business-soa">
		this</a> and a lot more discussions on what we do when &quot;we roll up our 
		sleeves and get to work&quot;. My main concern is that when John says:</p>
		<blockquote>We get it already - stop debating what it is and go build something 
		already.</blockquote>
		<p>I am not sure this is true, I am not sure people get it and know what 
		to do despite the hundreds of conferences that claimed to talk about 
		SOA. I am certain that John gets it, I agree that there are some 
		products and technologies that are mature enough but most people use SOA 
		within the boundaries of the current programming model. </p>
		<p>I won't say it enough, over the last 40 years the software industry 
		has developed a &quot;CRUD Oriented Synchronous Client/Server&quot; programming 
		model. Using SOA technologies within this programming model will lead 
		you nowhere.</p>
		<p>SOA represents the emergence of an alternative programming model 
		which is &quot;Inter-Action oriented, Asynchronous and Peer-to-Peer&quot;. </p>
		<p>I don't know many people who say what I am saying and sending people 
		CRUDing around with XML, SOAP and WSDL is likely to create a huge 
		disillusion. </p>
		<p>I mean, John, come on, we don't even have a decent SOA Reference 
		Model: Duane Nickull probably delivered one of the worst possible SOA RM 
		, only second to the one developed by the W3C TAG in early 2000.</p>
]]>				</description>
			<pubDate>04/17/08</pubDate>
			<guid>http://www.ebpml.org/blog/72.htm</guid>
		</item>	



  	<item>
			<title>[Other] Interesting contrast this week on TV</title>
			<link>http://www.ebpml.org/blog/71.htm</link>
			<description>
			<![CDATA[
		<p>I don't watch TV that much except for football. For everything else, 
		I have a little home built digital recorder that occasionally records 
		interesting things. </p>
		<p>This week there was an interesting contrast. First there was this 
		show from the University of Washington on &quot;<a href="http://www.uwtv.org/programs/displayevent.aspx?rID=23451">Shared 
		Prosperity in an Age of Global Warming</a>&quot;. I can't say enough how 
		proud I am to live in the Northwest. It's almost like living in a 
		different country and nobody captures best the Northwest spirit than 
		this ad from a local insurance company showing all kinds of Northwest 
		characters and claiming &quot;<a href="http://www.werealotlikeyou.com/">We 
		are a lot like you, ... a little different</a>&quot;. I would argue a lot 
		different.</p>
		<p>In this presentation Ron Sims, a local county level politician 
		presents his vision about tying together global warming, the global and 
		local economy and poverty. This guy makes you really proud to live here, 
		just like our governor, Christine Gregoire, and so many other people. It 
		looks to me that the US always had forward thinking areas like the 
		greater Chicago area (up to Ohio) in the late 1800s which had incredible 
		innovations, not just in Technology but also economically, 
		architecturally (F.L. Wright) ... or California in the second half of 
		the 20th century. Will the Northwest walk in these footsteps? It is probably too early to tell.</p>
		<p>The bottom line is that I feel really privileged to live here. I 
		don't want to comment on Ron's presentation, I think it should be placed 
		in perspective with the current presidential campaign. I'll let you 
		watch it since it is now available on UWTV.org.&nbsp; </p>
		<p>The other show that I watched this week-end was Frontline's &quot;Bush's 
		War&quot;, aired on PBS, earlier this week. This show made me sick at two 
		levels (I am constantly sickened by how many people die each day). First 
		it reminded me of 2002-2003 where I could not stand to watch TV and 
		listen to the radio as American was chanting on the path to war. It also 
		made me sick because one of the key turning point the show claims is 
		right after Colin Powell's talk at the UN when the French Prime Minister 
		reacted in Powell's back. They claim that Powell was the only one that 
		could avoid war and our prime minister killed him with his little 
		anti-war talk. But at the end of the day, it is Powell who delivered 
		that talk to the UN it is he who delivered the case for war (even though 
		we now know that Cheney was the one that wrote that talk, Powell simply 
		delivered it). </p>
		<p>Ironically, America is probably the country where there are the most 
		hours of news per day: the networks deliver 3 hours of news in the 
		evening (5 to 7pm) and another 3 hours earlier in the day, yet quality 
		of what they deliver is abysmal. Worse, they not only make deadly 
		mistakes, but when they venture on the commentary side, they mislead 
		their viewers. Today, the press has completely given up on its role, 
		journalists are no different than a reality show producer, eager to 
		collect ad revenue. </p>
		<p>My question is very simple, how can the American press teach anyone a 
		lesson today? The French (and Europe at large) went above and beyond to 
		avoid this war, this is the reality. Where were they then, even Cheney 
		was able to corroborate the false uranium accusation with an article 
		from the NY Times? Where are they today? they want the American people 
		to believe that the French are responsible and sweep everything else 
		under the rug (hundred's of thousands of dead people). </p>
		<p>I also found interesting to look back at Tony Blair (I don't want to 
		say the British people or the British Government because they voiced 
		just as hard as the French how terrible a mistake that would be). I'd be 
		really interested to know today what George Bush thinks of himself? Sure 
		his family, and to a certain extend, Britain, have benefited from the 
		strong hand he and Tony put on the Iraki Oil Faucet. But how does he 
		sees himself with respect to his country? What does he think as a 
		Christian and pro-life supporter about all these people dead? What does 
		his wife and daughters think about him? About what he has done to his 
		own country? What Keneth Starr thinks about all this? Why isn't he so 
		prone to impeach Bush and so many other officials for what they have done to 
		their country? </p>
		<p>But the saddest thing of all is that the press has learned nothing. 
		It continues to go with the wind, it continues to focus on the wrong 
		things with the wrong attitude. If this country wants to rebuilt itself, 
		it has to rebuilt its press from the ground up. This is no easy task, 
		but the press is one of the most important pillars of democracy, and 
		ultimately freedom. </p>
]]>				</description>
			<pubDate>03/30/08</pubDate>
			<guid>http://www.ebpml.org/blog/71.htm</guid>
		</item>	

  	<item>
			<title>[SOA] WOA: The future of SOA</title>
			<link>http://www.ebpml.org/blog/70.htm</link>
			<description>
			<![CDATA[

		<p>There is no shortage of thought leadership when it comes to twisting 
		SOA in every possible way. Dion Hinchcliffe has written for quite some 
		time a series of (generally good) articles on bringing Web 2.0 and SOA 
		together. In his latest article last week, he
		<a href="http://hinchcliffe.org/archive/2008/02/27/16617.aspx">sketched 
		for us the future of SOA</a>. </p>
		<p>He starts by a free for all statement:</p>
		<blockquote>Even though <a href="http://webservices.xml.com/lpt/a/1292">
		Service-Oriented Architecture (SOA)</a> initiatives around the world 
		have the right goals, most efforts have fallen profoundly short of our 
		desired levels of integration and improved business agility.</blockquote>
		<p>It hard to know what he means by &quot;profoundly&quot;, or &quot;our desired&quot;. 
		Being down in the weeds of SOA, working for a large financial 
		institution, I can see first hand how wrong Dion's statement can be. 
		Sure SOA is complex, no doubt about that. People that look at SOA as a 
		lipstick on a pig might very well end up where Dion seems to be, but I 
		would argue that has nothing to do with SOA, precisely, it shows that 
		perpetuating the &quot;old ways&quot; of building information system is wrong, and 
		nothing can fix it, &quot;interoperability&quot; is of no help at all. The truth 
		and the matter is that without a significant architectural change an 
		organization will remain there for ever. Blaming SOA for it, is simply a 
		new way to perpetuate a systemic problem.</p>
		<p>Dion sees SOA being reshaped by the Web 2.0 era. He continues:</p>
		<blockquote>However, the news isn't all bad, the fascinating story is that there 
		is a place today where the deep integration of our systems and 
		information on a large scale has largely been solved and is a foregone 
		conclusion in most cases. And that place is at the leading-edge of the 
		World-Wide Web, sometimes referred to as Web 2.0.</blockquote>
		<p>He sees Mashups leading the charge:</p>
		<blockquote>At the leading end of this is the
		<a hef="http://web2.socialcomputingmagazine.com/the_web_20_mashup_ecosystem_ramps_up.htm">
		Web mashups story</a> with
		<a href="http://blogs.zdnet.com/Hinchcliffe/?p=106">enterprise mashups</a> 
		being one of the major improvements to the IT landscape that WOA is 
		heralding.</blockquote>
		<p>Of course, &quot;<em>WOA puts the focus on Web Resources not Services</em>&quot; 
		(LoL). His assessment could not be clearer:</p>
		<blockquote>The basic tenets above paints a picture of a galaxy of nearly 
		infinite granular information resources integrated into a deeply 
		interconnected set of dynamic connections that can be processed 
		individually for a given task, in part (for integrated applications), or 
		as a whole (such as enabling a comprehensive directory or search engine 
		of all data and metadata.) In other words, the Web model provides a 
		single, open, and unified information architecture that is consistent, 
		easily consumed, extremely scalable, securable, very reusable, 
		resilient, and highly federated.</blockquote>
		<p>Sometimes I wonder if people read what they write. Why didn't I think 
		of that before? Dion even goes as far as claiming that
		<a href="http://web2.socialcomputingmagazine.com/a_timeless_way_of_building_software.htm">
		there is a &quot;timeless&quot; way of building software</a>. I know countless 
		useless ways of building software, but so far, I never found a timeless 
		way.</p>
		<p>He concludes:</p>
		<blockquote>I should close by emphasizing that I enjoy and use traditional SOA 
		technologies like SOAP, WSDL, and XSD frequently [really?]. But as more and more 
		of the consumer Web moves to a more Web-oriented model, the evidence 
		continues to mount that approaches based on WOA are easier to implement, 
		scale better, and result in much greater uptake and usage scenarios.</blockquote>
		<p>And of course:</p>
		<blockquote>Traditional SOA is facing a crises of identity at this point [poor SOA, let's give you a big hug], 
		particularly given fairly lackluster results for most, and WOA may just 
		be the prescription we need to make SOA deliver the robust outcomes that 
		we were formerly expecting of it.</blockquote>
		<p>I would not hold my breath. The fact and the matter is that 
		real-world composition technologies are emerging, with a real-world 
		composition model. Everyone should understand that pushing composition 
		at the presentation layer simply does not work. You also need process 
		and information composition capabilities. Sure is it a lot less fancy 
		and a lot more technical, but WOA isn't going to cut it, by a large 
		margin. The funny <span class="style3">sad</span> thing is that people will 
		never question how they build software.</p>
		<p>So REST? WOA? SOA? ROA? COA? How about Duh-OA?</p>
		<p>I estimate that 99.999 % of Web Applications are not built in a 
		RESTful/WOA way, but of course it is a terrible sin to build a Web 
		Service with something else than REST/WOA.</p>

]]>				</description>
			<pubDate>03/03/08</pubDate>
			<guid>http://www.ebpml.org/blog/70.htm</guid>
		</item>	


  	<item>
			<title>[REST] REST easy...</title>
			<link>http://www.ebpml.org/blog/69.htm</link>
			<description>
			<![CDATA[
		<p>Steve got his best shot at explaining how ...</p>
		<blockquote>the uniform-interface constraint reduces client-server coupling and 
		helps minimize gratuitous differences in interface and method semantics 
		across disparate resources.</blockquote>
		<p>So here he starts:</p>
		<blockquote>One is that different resources should each have specific interfaces 
		and methods that more accurately reflect their precise functionality.</blockquote>
		<p>But, Steve, have you considered that information systems 		<a href="http://www.austinchronicle.com/gyrobase/Issue/story?oid=oid%3A74962">
		where invented 8000 years ago</a>? Have you ever understood that 
		information systems are independent of computers and programming 
		languages? Do you understand that you &quot;inter-act&quot; with information, you 
		just don't crud around at will? You also query or research information, and it subscribes to or produces events (the occurrence 
		of a particular state). This is inherent to information, independent of 
		any programming model. This is not engrained in the minds of the 
		developers, this is engrained in information systems design, of which 
		you seem to ignore the most basic details. </p>
		<blockquote>those who raise this objection fail to properly consider the effects 
		of networking and distribution.</blockquote>
		<p>If you ignore &quot;inter-actions&quot; and events and you try to remote your 
		crud operations, sure enough what you say is true. Inter-actions are the 
		easiest to monitor and &quot;intermediate&quot; because they represent a unit of 
		work. Just try to intermediate or monitor when someone is cruding 
		around. </p>
		<p>You continue:</p>
		<blockquote>As we&#8217;ll see, the purpose and form of exchanged data in REST differ 
		significantly from those of other systems</blockquote>
		<p>So you explain:</p>
		<blockquote>the definitions they encourage greatly resemble typical programming 
		language method definitions.</blockquote>
		<p>But do you understand just a thing about XML? Do you understand that 
		X stands for eXtensible? Have you ever seen an IDL prior to WSDL that 
		enabled forward compatibility? No, XML
		<a href="http://jeffsutherland.com/oopsla99/Dubray/dubray.html">does not 
		represent any think like structures </a>in a traditional programming 
		language. Do you understand that you can create &quot;projection&quot; of an XML 
		document, you can transform it at will, and most importantly, you can 
		access its content semantically without ever understanding the overall 
		structure of the document, using relative XPath statements. Do you think 
		you can achieve things like
		<a href="http://www.infoq.com/news/2007/11/data-services-in-soa">CAM</a> 
		or
		<a href="https://www.sdn.sap.com/irj/sdn?rid=/webcontent/uuid/1baa57f9-0a01-0010-1684-c42a08982294">
		CCTS</a> in &quot;traditional programming languages&quot;? Where do you come from, 
		where have you been for the past 10 years? Don't you ever talk to Tim? 
		This is no RPC, just like WSDL is an &quot;inter-action&quot; definition language 
		which supports &quot;Orchestration&quot; and &quot;Choreography&quot;. Again, where have you 
		been? what are you talking about? </p>
		<blockquote>Consider the coupling that these constructed types induce within a 
		local application between a caller and a function or method it calls.</blockquote>
		<p>Precisely, this is the whole beauty of XML, it is nothing to do with 
		the &quot;uniform&quot; interface. </p>
		<blockquote>The caller and called method are also either compiled together into 
		the same application or are strongly connected via dynamic loading</blockquote>
		<p>Again, this is a very surprising statement for somebody who lead the 
		development of an ESB. I can appreciate why some people are criticizing 
		some aspects of an ESB, but you can't argue that an ESB makes your 
		statement above invalid. If you look at Oracle SOA Suite 11g, you will 
		see that they reduced the ESB to its right size a &quot;mediator&quot; component 
		that can be put in place in an assembly precisely to avoid consumer and 
		provider to be totally coupled. </p>
		<blockquote>Either way, changing the constructed type&#8217;s definition means 
		recompiling both the caller and the called method.</blockquote>
		<p>This could not be more fallacious. You want us to make the connection 
		&quot;this is what happen in Java and C++&quot;, &quot;Java and C++ are RPC&quot;, by the 
		way &quot;WSDL is RPC too right?&quot; therefore it is true for WSDL. Do you think 
		your readers are stupid? Why do you propagate such false statements?</p>
		<p>And you don't stop here, here is the best statement of your paper:</p>
		<blockquote> changing the definition of any specialized data type shared across 
		those applications is fraught with problems.</blockquote>
		<p>Really? because now, REST does not even share data definitions? a 
		uniform interface and a blob of data, naturally, pick what you want, and voila. In 
		REST you don't share anything, of course, why didn't I think of that 
		before? I really thought that the reviewers at IEEE IC where a bit 
		better to avoid letting this kind of thing pass through but I guess not.</p>
		<blockquote> A client might also replace the state of the employee details by 
		using PUT to send a new state representation, also in HTML form.</blockquote>
		<p>Yes, of course, this is super realistic. Why don't I PUT the new 
		balance of my bank account? That'd be a lot easier. The bank would save 
		money with less IT people that write useless business logic. </p>
		<blockquote> Resource representations do, however, help alleviate some 
		datacoupling problems because they&#8217;re not tied to the underlying 
		protocol.</blockquote>
		<p>You mean the content of a SOAP Body is of course tied to the SOAP 
		protocol? right? </p>
		<blockquote> A REST resource&#8217;s ability to handle state representations in 
		different formats makes it easier to support a wider variety of client 
		applications. It lets clients minimize their data coupling to the 
		resource by choosing which representation is best for them.</blockquote>
		<p>Yes this is of great value, as noted yesterday. At least we agree on 
		something. </p>
		<blockquote>In HTTP, message payloads are identified using standard Internet 
		Assigned Numbers Authority (IANA) Multipurpose Internet Mail Extensions 
		(MIME) media types.</blockquote>
		<p>Has anyone looked at the
		<a href="http://www.iana.org/assignments/media-types/">IANA Media Types
		</a>web site? I am sure every one who has decided to walk away from 
		REST. Why don't you compare
		<a href="http://www.rfc-editor.org/rfc/rfc2652.txt">this one</a> (picked 
		totally randomly) to an XML Schema definition of a message type in WSDL? 
		Natural Language it is. And of course as you write an application you 
		are going to expose you media type definition to IANA and the world, 
		write an RFC, submit it to the Internet Society. </p>
		<blockquote>The fact that IANA controls these media type definitions means that 
		they&#8217;ll never change, which eliminates a lot of versioning related churn 
		and uncertainty.</blockquote>
		<p>Wow, you mean, once I submitted to IANA, that's it. I am done, 
		can't never change it? I am sure lots of people are going to line up to 
		submit their favorite type to the IANA. No more Churn, no uncertainty, 
		Yes We Can. </p>
		<p>Now the piece de resistance. </p>
		<blockquote>they, rather than the resources, maintain application state. 
		Resource representations contain hyperlinks to help applications know 
		how to perform application state transitions.</blockquote>
		<p>Yes, the very question you set out to answer, here it is. Since they 
		contain &quot;hyperlinks&quot; you are done, of course, the consumer naturally 
		speaking knows what these hyperlinks are. Makes sense, ...not. We went over 
		and over and over this question and you write a new article to say the 
		same erroneous statement that even the REST community acknowledges. </p>
		<blockquote>An application looking for information about a given employee need 
		only follow the relevant hyperlinks using data and metadata within the 
		representation as a guide.</blockquote>
		<p>How can you be sure that this is a link of such kind. How do you know 
		it is a series of employees? How do you know a link is a contract? a 
		benefit sheet? </p>
		<p>What a waste of time, don't you think we have better things to do? I 
		think by this time even Roy might the tired to ear the kind of things 
		you write. You are actually taking a great idea: the architecture of the 
		Web (as it was originally designed) and trashing it trying to apply to 
		things it was never designed for and it can't handle. </p>
]]>				</description>
			<pubDate>02/28/08</pubDate>
			<guid>http://www.ebpml.org/blog/69.htm</guid>
		</item>	

  	<item>
			<title>[REST] What's great about REST?</title>
			<link>http://www.ebpml.org/blog/68.htm</link>
			<description>
			<![CDATA[

       <p>Interesting combination of posts on Stefan's blog:
		<a href="http://www.innoq.com/blog/st/2008/02/rest_doubts.html#comments">
		REST doubts</a> and the announcement of
		<a href="http://www.infoq.com/interviews/vinoski-qcon-interview">Steve's 
		interview at QCon</a>. </p>
		<p>Let me do with Steve first. Steve, we actually have a similar 
		background, I am also an EE self-trained developer. I think I taught 
		about 100 more classes in software engineering than I took. I just want 
		to point out two things you said.</p>
		<p>First, you say:</p>
		<blockquote><p>There's a problem if you have to define something in IDL just to know 
		how to use it. That doesn't really work. No one takes an IDL and says: 
		&quot;Here's this method, I call this and I pass this. I just look at the IDL 
		and I know what to do&quot;.<br />
		<br />
		Nobody does that. IDL is really for code generation. If I want to know 
		how to use a service whether it has IDL or not, I go talk and talk to 
		the developers, if they're nearby; if they're not I look at their 
		documentation.</p></blockquote>
		
		<p>Steve, could you consider just one second what an &quot;assembly&quot; is. Come 
		on, you are an Electrical Engineer, how could this concept ever escape 
		you? Can you create an assembly without an interface? Have you tried to 
		wire &quot;<em>Natural Language Service Description</em>&quot; (p210 of the RESTFul Web Services book).</p>
		<p>Second you talk about Erlang:</p>
		<blockquote><p>it has to fail over in case of problems with one of the nodes, or you 
		need fault tolerance, all the reliability issues, and then the whole 
		concurrency thing which is where you spend a lot of time just figuring 
		out ...</p></blockquote>
		<p>Steve, Erlang is great at what it is doing, I can appreciate the 
		exceptional activation model and the lack of shared memory, but do you 
		really think this is the ultimate programming language (I don't think 
		you do). My point is&nbsp; why not
		<a href="http://www.wsper.org/primer.html">create 
		a programming language from scratch</a> that solve all these problems, 
		specifically designed to build composite <span class="style3"><strong>information</strong></span> systems? 
		Isn't it time that we think of a programming model rather than 
		programming languages on one side and middleware on the other? It made 
		sense 20 years ago, but this view is completely outdated.</p>
		<p>Before I take my final stab at REST, I would like to underline what I 
		find great about REST:</p>
		<ul>
			<li>the resource concept: this is an integral part of the 
			programming model</li>
			<li>resource representations as an interaction model between 
			provider and consumer and media type mediation (though I like role 
			mediation better than type mediation)</li>
			<li>extensible QBE interface</li>
			<li>safety and idempotence (that's a big one)</li>
			<li>consumer oriented error messages </li>
			<li>the programming model when the consumer is a client</li>
			<li>(Please note that I did not say that the URI concept was great)</li>
		</ul>
		<p>The first 5 items can easily be emulated in the web services stack. 
		QBEs are trivial to specify in WSDL and you can create forward 
		compatible WSDLs by expanding the number of QBEs in your interface 
		definition. Please note with SDO, WS-* has already a very advanced 
		representation update mechanism.</p>
		<p>Now, before I started this discussion I used to see REST with a good 
		eye. I used to say &quot;Use it where you can, and WSDL where you can't&quot;. I 
		must admit that after reading the book RESTful Web Services (which I got 
		at the King County Library), my recommendation is really don't use REST 
		at all, and here is why:</p>
		<p>a) when the consumer is a browser,
		<a href="http://incubator.apache.org/tuscany/getting-started-with-tuscany.html">
		Tuscany's latest widget bindings </a>allow you use a &quot;Service Oriented&quot; 
		model up to the browser. Jean-Sebastien gave me a demo of what the 
		Tuscany team was doing. It is simply spectacular. I did not expect it 
		would turn out that way, but IMHO, SCA signs the death of REST because 
		it takes away the only competitive advantage REST has over WS-*: the 
		browser-to-service relationship.</p>
		<p>b) The REST community is thinking of REST as a CRUD-Oriented 
		Architecture (you don't have to do it that way, but this model is so 
		engrained that they can't think differently). This has been exemplified 
		by the recent &quot;<a href="http://bitworking.org/news/296/How-To-Do-RESTful-Partial-Updates">Partial Update</a>&quot; discussion started by Joe Gregorio. It 
		culminated with Joe concluding that it had to make &quot;a variable&quot; a 
		&quot;resource&quot;. Let me give you a piece of advice, when you create a 
		programming concept that is based on the concept &quot;foo&quot; and you reach the 
		conclusion: <em>look ma', it is beeoutiful, everything is a &quot;foo&quot; even a 
		variable is a &quot;foo&quot;</em>, then you are on the wrong path, you can end 
		your work immediately.</p>
		<p>c) REST is CRUD-Oriented because the REST community wants to 
		manipulate the resource content and state from the consumer. Most of the 
		REST community does not understand that there is a difference between 
		expressing the changes you made to the resource representation and 
		CRUDing the resource directly. This is what the old guard of 
		architects have been doing for over 30 years and this is wrong. This is 
		what Service Orientation is suggesting you don't do (though you can do 
		CRUD-OAs with WSDL and SOAP just as well, this was the SalesForce.com 
		API at some point -some people even built an ADO.Net adapter on top of 
		their WSDL interface LoL).</p>
		<p>You can see the CRUD spreading just about everywhere: here in
		<a href="http://s3.amazonaws.com/ozonesoft.net_public/RESTfulRails.pdf">
		RESTful Rails</a>, or here in the RESTful Web Services book (p188):</p>
		<blockquote>The Controler code: the code that converts incoming requests into 
		specific actions on the database.</blockquote>
		<p>In 2004
		<a href="http://integralpath.blogs.com/thinkingoutloud/2004/05/thought_leader__1.html">
		Thinking-out-loud </a>(??) had already identified this problem: </p>
		<blockquote><p>I have seen several systems that on the surface appear to be doing 
		the RightThang (tm), in that they are developing with the latest and 
		greatest technologies and platfoms, e.g. J2EE or .NET, they are 
		following iterative and incremental development processes, and all of 
		their application interfaces are exposed via web services. </p>
		<p><strong>The problem is that they didn't know when to say when, and that led 
		to basically a massive collection of CRUD-oriented interfaces on top of 
		entity/domain class concepts</strong>, i.e. there ends up being a service per 
		entity, say, for example, Employee, and the operations are basically CreateEmployee, SaveEmployee, FindEmployee, DeleteEmployee. The service 
		should be defined at a business semantic that expresses a sense of 
		acheiving a user/business goal. For the Employee example, for example, 
		business operations might be Hire, Terminate, Promote, etc.</p></blockquote>
		<p>d) The REST community is &quot;religious&quot; about where the application 
		state should reside. Let me quote Richardson and Ruby:</p>
		<blockquote>Statelessness means that every HTTP request happens in complete 
		isolation. When the client makes an HTTP request, it includes all 
		information necessary for the server to fulfill that request. (p86)</blockquote>
		<p>This could not be more wrong. This is why RESTians are CRUDing in all 
		the time. All resources are &quot;stateful&quot; and as a 
		mater of fact can participate in multiple &quot;applications&quot; simultaneously. 
		A PO, an Invoice, a ticket, a trip... all have a lifecycle independent 
		of the &quot;application&quot; that advance their state. This is IMHO, one of the 
		two worst architectural mistake the REST community is making. Yes, a web 
		page does not have a complex lifecycle and of course, this statement is correct in 
		that very limited (yet widely abundant) scenario. Again, nothing says 
		you have to do that, but the REST community will take years to 
		understand why it is bad. Instead they prefer to CRUD the resource to 
		death (LoL). Incidentally, Mark, calling &quot;state&quot; both the resource 
		&quot;content&quot; and the resource &quot;state&quot; with respect to its lifecycle is not 
		going to help you architect a solution the right way, it will simply 
		encourage you to CRUD around. </p>
		<p>e) The second worst architectural mistake is inherent to REST itself, 
		it is the URI concept. This is the Achilles' heel of REST and this is 
		deadly as soon as you go away from web pages and feeds and into 
		the world of information systems. URI mixes the concept of identity and 
		&quot;accession&quot; while &quot;flattening&quot; the accessor query language. There is no real concept of identity in REST and this is 
		deadly. This bolts getters and putters to the resource and creates a 
		versioning nightmare. Not to mention that it prevents you to compare two 
		resource representations. URIs are QBEs. Nothing less, nothing more. You 
		would be creating a huge mess if you let them &quot;hang&quot; around in &quot;consumer 
		state&quot; longer than they would otherwise stay in a browser. URIs are a 
		lot more transient (in the real world) than the REST community want you 
		to believe (of course, again, in the case of a web page or a feed, it 
		works).</p>
		<p>f) All this and Stefan's list as well could be fixed. The problem is that 
		the REST community has made fun of the ebXMLers and WS-Starers. They 
		never appreciated how difficult it is to write a spec. It requires 
		giving a lot of yourself, a tremendous amount of energy and focus. Not 
		to mention that there are always a couple idiots that want to derail the 
		spec to match their inferior product, get a (hidden) consulting gig... or simply 
		out of ignorance.</p>
		<p>Guys, I like you, I respect you, you are smart and want to do good 
		things and deliver value. I have no doubt of that. But please, be 
		honest: fix REST or ditch it and relax...</p>
]]>				</description>
			<pubDate>02/26/08</pubDate>
			<guid>http://www.ebpml.org/blog/68.htm</guid>
		</item>	


  	<item>
			<title>[SOA] SCA and JBI bring nothing to the SOA table</title>
			<link>http://www.ebpml.org/blog/67.htm</link>
			<description>
			<![CDATA[
		
		<p>Somebody brought to my attention Jason Bloomberg's opinion about 
		these technologies (CIRCA May 2007) and asked me what's the big fuss 
		about SCA? Jason argues:</p>
		<blockquote><p>JBI, [...] is essentially a Java plug-in architecture that you could 
		use to build a Java-based ESB.</p>
		<p>[SCA is] a component architecture for building service components, 
		which are pieces of software that could consume or provide services</p></blockquote>
		<p>He continues:</p>
		<blockquote>SCA is more about building components that consume services. So its 
		for doing traditional development where you consume services, if that's 
		part of what you want to do, but it's not about building services</blockquote>
		<p>Jason thinks:</p>
		<blockquote>it more difficult to come up with a truly service-oriented approach. 
		Because on the one hand JBI is saying build all your services in Java so 
		we can plug them into this Java infrastructure. The SCA world is saying 
		well let's think of services as components, so we can do traditional 
		component development. It's not a service-oriented approach either.</blockquote>
		<p>He then bring OO in the picture:</p>
		<blockquote>It is object-oriented development. We're going to build objects. 
		Objects are going to have interfaces. Sometimes the interfaces are 
		service interfaces, sometimes they're other kinds of interfaces. We're 
		working in the object-oriented paradigm where we are not able to support 
		services in the OO paradigm as opposed to saying let's work in the 
		service-oriented paradigm and think about how we are going to deal with 
		objects in the service-oriented world.</blockquote>
		<p>It is quite unfortunate for someone who runs a &quot;SOA Analyst Firm&quot; to 
		be so ignorant about SOA and how to position underlying technologies in 
		a Service Oriented Architecture including OO.</p>
		<p>I am going to try to make it short and sweet. I have advocated the 
		concept of using BPEL and Service Interactions since
		<a href="http://www.ebpml.org/ebpml2.2.doc">July 2002</a>, well before 
		anybody started to work on SCA. in 2003 and 2004, our working group at 
		OASIS delivered the first assembly concept in the
		<a href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=ebxml-bp#technical">
		OASIS ebXML Business Process v2.0.4</a> specification, with support for
		<span class="style3"><strong>both</strong></span> ebXML and Web 
		Services. </p>
		<p>So here are my comments. His first statement above is correct. Yes, 
		JBI was thought to be a modular architecture for Java based ESBs. It 
		fits very well one of the possible topologies of loose coupling that I 
		described <a href="http://www.ebpml.org/blog/55.htm">here</a>. Sun 
		actually complemented JBI with an assembly paradigm which proves how 
		important this concept has become since 2002.</p>
		<p>Then Jason starts diverging when he says &quot;So its for doing 
		traditional development where you consume services, if that's part of 
		what you want to do, but it's not about building services&quot;. What he has 
		in mind is &quot;Web Services&quot;. He has looked at the prototypical SCA 
		assembly pictures and he has seen a &quot;Web Service&quot; hanging at the back of 
		an SCA assembly and concluded erroneously that you would do 
		&quot;traditional&quot; development and from time to time you would invoke a &quot;Web 
		Service&quot;. Jason could not be more wrong. </p>
		<p>He continues to be completely wrong by saying: &quot;JBI is saying build 
		all your services in Java&quot;. JBI's binding components can connect to 
		&quot;anything&quot;. Sure enough the ESB itself is implemented in Java, but the 
		binding component can reach anywhere. This is the point of an ESB. Jason 
		again thinks in terms of &quot;Service Engines&quot; and see them implemented in 
		Java, but they are really for the Loose Coupling (LC) code, not for the 
		service implementation itself. </p>
		<p>Jason sees it as &quot;It is object-oriented development&quot;. LoL, &quot;Sometimes 
		the interfaces are service interfaces, sometimes they're other kinds of 
		interfaces.&quot; And what could be the other kinds of interfaces? &quot;We're 
		working in the object-oriented paradigm where we are not able to support 
		services&quot;, Really? </p>
		<p>I have said it and I'll say it again,
		<a href="http://www.wsper.org/primer.html">there are several core 
		differences between SO and OO</a>:</p>
		<p>a) the interface in SO is <strong><span class="style3">bi-directional</span></strong>, 
		in OO the &quot;references&quot; are not explicit, hence Spring, OSGi...</p>
		<p>b) activation: in OO, there is no &quot;activation&quot; framework. All method 
		invocations are serialized, Bertrand Meyer has written enough articles 
		about Object and Concurrency to make it clear</p>
		<p>c) in OO there is a &quot;one-to-one&quot; relationship between method and 
		implementation. in SO, several operations can be tied onto the same 
		implementation (BPEL is the best example).</p>
		<p>SCA, finally, digs us out of the pre-historic &quot;CRUD-Oriented 
		Architecture&quot; that has been the bread and butter of an old generation of 
		architects for the last 30 years. SCA IS-THE technology that is bringing &quot;<a href="http://www.infoq.com/articles/async-sca">peer-to-peer 
		asynchronous inter-actions</a>&quot; at the core of the application model. 
		SCA is one of the most elegant and most important technologies I have 
		ever seen because it is changing radically the application model from OO 
		to SO without disrupting existing technologies. This is not about 
		replacing Java, this is not about adding orchestration concepts to every 
		language under the Sun, it is about enabling the definition of 
		inter-action based interfaces and enabling older technologies to 
		leverage orchestration concept today without any disruption. How smart 
		is that? Mike Edwards and a few others who have invented SCA are some of 
		the most important thinkers of the last 30 years. SCA enables SOA, SCA 
		is SOA, SCA brings SOA to everybody. </p>
		<p>Finally we can move on from the antiquated, Synchronous, 
		CRUD-oriented, Client/Server application model that has brought IT to 
		its knees and leverage an Asynchronous Service Oriented Peer-to-Peer 
		model to create the information systems of the 21st century.</p>
		<p>Yes, SCA is changing a lot of things, but not in a revolutionary way, 
		it is not about replacing skills but augmenting them. It is not about 
		killing Java (politically), it is about augmenting it. </p>
		<p>As Mike points it out in his response to Jason, SCA is the technology 
		that
		<a href="http://www.infoq.com/minibooks/composite-software-construction">
		enables composition</a>. It is also the technology that finally gives us
		<a href="http://www.infoq.com/articles/seven-fallacies-of-bpm">the 
		correct foundation for BPM</a>.</p>
		<p>If I were a member of this core team that created SCA from scratch, 
		I'd be quite proud of these accomplishments. </p>
]]>				</description>
			<pubDate>02/25/08</pubDate>
			<guid>http://www.ebpml.org/blog/67.htm</guid>
		</item>	





    </channel>
</rss>


