09/20/08 :: [REST] Concluding Remarks [permalink]
I'll let everyone decide for themselves which side
they want to stand on. I just want to add 2 comments that I find
fundamental and that I may not have expressed as clearly. These comments
come from an offline discussion I had with Francois Leygues.
I have well established that REST-* is on its way. Francois was noting that the standards of the web represent a good foundation for building the "additional semantics" that are missing in the (other) REST to address enterprise requirements. Let's assume this is true, let's assume that the RESTafarians will eventually find a way to specify a Resource Oriented protocol that does not require any interface definition and they will never have to backpedal because they completely underestimated this acute problem for building enterprise connected systems. Best case, we will see REST-* in 2015 (and I am not even counting the standardization of Media Types). In the meantime people will have to live what the WSians (Weesians) did in 1999 while they could not deliver a complete stack until 2007. We just finished that work and it is not because some people are suffering from the Standard Committee Deprivation Syndrome that we have to start over. I estimated the cost of WS-* to about $50 Billion (not just in travel and personnel cost of course, but when factoring delayed or missed opportunities and all the inertia of dealing with half-baked stuff). Now some people, with no plan, want to "kill" this for replacing it by something that will end-up looking exactly the same.
I spent 8 years writing and contributing to standards (ebXML ebBP, BPML, OAG-IF, WS-CAF, WS-CDL, WS-TX, SCA, SDO). Writing a standard is not like writing a post on a blog. It takes lots of time, it has to be implemented, debugged, revised, it has to fit with other standards, and what not. Anybody that wants to start over is, IMHO, insane. IT does not need the friction imposed by the development of yet another CORBA, JEE, WS-*,SCA ... Guys, IT will not be there in 2015 unless you deliver value today.
How many generation of standards have we gone through? CORBA, EJB/J2EE, WS-*, SCA... how many more times? WS-* has brought all vendors to the same table. Do we need anything else? Because some vendors have lost the game, they want to leave the table and start over? Tim, you think Sun is going to get anything out of your arsonist strategy? Sun is a failure, it has failed for the last 10 years and it will continue to fail. This is sad because Sun was a great company and there are great people that work and worked there, but this is the price you pay for putting the RESTpolitik ahead of the value you need to deliver. I have news for you Tim, there is only strategy that works for a company: deliver value, more value than your competitors.
The problem I have with REST is that it negates all the major advances that ebXML and WS-* brought to the table:
assembly / choreography
That is completely insane, yes, Stu, the RESTafarians do not understand a thing about WS-* and SOAP. They have not taken the measure of the implications of using one (and more) endpoint per resource. You can claim this is an insult, but there is no statement that is more truthful than this one. You can claim I speak to the abyss but this statement will resonate increasingly as you are trying to tackle more complex enterprise problems. The RESTafarians are just a bunch of remoting guys who don't get it. They hide in the shadow of the Web to claim their modernity, but there is nothing modern about the (other) REST. The (other) REST is the "ancien regime" that simply refuses to die. How far back do we have to go?
Yes, all the RESTafarians are doing is wagging the dog with dirty RESTpolitik: Enough is enough. IT will not survive this. IT will not survive not having the tools to deliver value to its business customers while the "hot shots" of the industry are creating yet another stack.
Let me make a second concluding remark and after that I'll shut up. The heart of the discussion is that MVC, WS-*/SCA or EDA are all about "infrastructure", i.e. middleware. These approaches are non or minimally invasive in terms of structuring the business logic of your application. People might discuss whether it is true for MVC, but I think it is. What's even more important is that these middleware technologies don't let you CRUD easily. When you try to use WS-* to CRUD all day, you can only conclude that this is not the right technology. (REST is better suited to CRUD, far better suited actually.) The things that you don't get is that you can't CRUD in a connected system. Yes, CRUD works for Web Pages and Wikis but it does not work for information. You can't CRUD lifecycles, it just happen that a Web page has -serendipitously- a lifecycle that is exactly CRUD.
But CRUD is not the point I am trying to make, REST is different from the 3 other candidates, REST was the first one to cross the Rubicon and create an application protocol. For good reasons, of course, to manage the lifecycle of Web pages. The Web is an "application", not middleware. The Web would have never existed if Roy had just built some "middleware" that people could build all kinds of "stuff".
That raises an important question: where do you stop the application protocol? For the Web, the answer was easy. Once you cross that Rubicon in the enterprise, you have to go all the way and create an application protocol capable of supporting enterprise information systems, connected systems, up to B2B. There is no in between. Can I trust the Webbies to know anything about that? Hell no, they don't even get any of the advances or WS-*, they reject them. They don't even get the importance of versioning, they ignore the problem. REST-* promises to be a complete disaster because you'll never find an end to an "enterprise application protocol". The RESTafarians are not even building a metamodel to guide them. They don't even have clear requirements they are trying to meet. How do the RESTafarians work? They take Roy's REST, they try to use it for anything in their day to day activities, and then when they stumble upon a problem, they try to find a more or less "RESTful" solution and post it on a blog. You guys are completely underestimating the development of an action-less, event-less, secure-less, unable to version, endpoint centric ... enterprise application protocol. You don't even understand the relational nature of information or the concept of lifecycle. The RESTafarians are building this enterprise application protocol by hacking the Web application protocol, one blog post at a time. Good luck guys.
The result of all this is that you will enslave a large number of developers to CRUD day in and day out, because they will have to go at that level to layer their semantics on top of REST-*. You will create yet another a massive wave of inefficiency for IT. And you think it's ok because the ISVs have lived comfortably on these inefficiencies for so long. Think again. The world has changed.
So yes, I am tired of this discussion because the RESTafarians have now entered the "fuite en avant" phase and they will loose face by telling everyone, they actually overestimated the power of REST and Resource Orientation alone (by a large margin).
The reality is that since 2004, hardly any progress has been made. Why don't you guys call us back when you actually have figured out how to use hypermedia and other "wonderful" REST foundational features for building enterprise connected systems. Until you figure that out, RESTafaraians could admit that they have nothing to talk about, otherwise they are no better than the WSians. They are just the same people playing the same games, without consideration for the people who pay the price.
For the people still wondering what the RESTafarians are doing, just think for a second about the storm coming on the horizon: Cloud Computing. Web 2.0, Ajax, GWT and the like are just a morning shower. Cloud Computing will destroy the Web as they know it, REST will be completely eliminated from the landscape as the "Web" becomes a "Cloud" where "application" are prevalent over "information", simply because REST is not an "enterprise application protocol". They are the one that are really in danger of irrelevancy. So they make noise, lots of noise trying to rally people behind ideas that once worked (very well) but may not be able to carry us for the next 50 years. The (other) REST is a complete dead end.
So I won't post anymore on the (other) REST unless there are major developments. I think IT architects have now enough arguments to see through their game. I am preparing a series of posts on "Metamodel-Driven-Programming" (not model driven programming), that's a lot more interesting.