12/14/07 :: [Other] An answer for Sergey [permalink]
Sergey (from the infamous 10 questions to Steve Vinosky) asks:
Sergey, I apologize for being that condescending, but when someone writes:Is it about REST vs WS-* ? No, it's about [Do-it-yourself] vs Kits
I'm wondering, am I the last one who has understood this somewhat obvious thing ?
I don't think it's going to stop people from actually doing REST across the enterprise. I believe one can do. After all, RESTful approach is Turing-complete (I don't remember what exactly does it mean :-) but in this context it means one can do any type of enterprise service with REST).
he should really question his ability to identify obvious things. Thinking that there is anything "obvious" about SOA is really naive. This is precisely the problem, people relate to SOA as they have already known it and done it for years. I know, this is how the brain reacts to the "unknown", it maps it to familiar concepts and then performs a diff. Most people either associate SOA to something they liked or hated. For instance, all the RESTifarians see it as <CORBA/>. SOA is unfamiliar, very unfamiliar, you should question everything you have learned so far when you enter the world of SOA.
I actually admit that I don't know if your statement is true or false (it is probably true), I don't mean to pick on you, the argument has been used before, this is why I am picking on it (not you). Assaf Arkin pushed back on anybody's request to add semantics to BPML on the premise that it was already Turing Complete. Same argument came about the Pi-calculus later in WS-CDL, since pi-calculus is Turing-complete we don't need anything else. I also heard that at eXcelon when one of the developer wanted to use UML activity diagrams (1.4) as a business process model. I simply have seen the dramatic consequences of this statement which basically kills all discussion while capping any evolution of the programming model. "I am complete, therefore I am done", end-of-debate. Please, let's not use this argument. Let's use our neurons instead.
Now, back to your question, No, the answer is NO. The REST vs WS-* debate is about composition. WS-* is not just for generating code (or the other way around, generating WSDLs from code as some people think it is a better approach). WCF is the prototypical example of code overtaking SOA. No wonder that these guys are waking up today and asking themselves, what have we done? we could have got the kind of interoperability we were seeking way back in 2000 with REST. At the end of the day, across the industry, Microsoft is the only company that is left without a composition model. Ouch. Worse they trying to convince everyone that SCA is all about Java and has nothing to do with interoperability (LoL). Even Sun (who has been living in the wonderful 90s up until recently) had the foresight to repurpose JBI to act as an assembly mechanism and define a good alignment between JBI and SCA.
Please check this article from Boris Lublinsky on the SOA programming models to see how "composition" is different and not a given at all in any so-called "SOA Programming Model".
At the end of the day, there is not a lot of value in code generation and I would have agreed with the RESTifarians: if this was all WS-* would bring you, we would not need the complexity of WS-*.
No, sadly enough, in 2007, even after SCA, WS-CDL, BEPL, WS-TX (WS-CAF was the better one that a handful of idiots had to kill -not surprisingly, always the same people) and ebBP, most people don't see that there is an underlying powerful composition model that can really change the way we develop, deploy and consume software.. In 2003 at the PDC in LA, I really thought that Microsoft had got it, they started to talk about "Connected Systems". For me, it was a natural evolution: understanding how to "connect systems" was the (next) problem to solve. In 2005 I spoke very briefly with Steve Shwartz and Don Box about it, but it was clear then that "connected" was just a marketing term for them. By that time, Microsoft had trashed their SOA message and the SOA section on MSDN was reduced to one page that you had to Google since it was not even linked from any other MSDN pages.
If I may, I would like to draw a parallel. When OO started to become mainstream, I know a lot of people that were developing their own "OO" runtime in C using functions with handles, because C++ was not good enough for whatever the reason was. For sure OO was unfamiliar then. I had the privilege to teach an Object Oriented Programming class for Seniors at the Faculte des Sciences de Luminy (ESIL) in Marseilles, home of the Prolog programming language. In 1993, my students had never heard of OO before (the web was nascent). I was very touched by their dedication (I am an easy professor, I don't believe in "grading", I believe in "teaching") because repeatedly they spent nights and nights doing the projects I was giving them, even though they knew they would easily get a passing grade. Those guys were already rock solid developers, but for them, there was the before OO and the after OO, they could not think without OO any longer. They were working so hard at their projects not because of me, but because their mind was captivated by this paradigm shift. Just like it captivated my mind when I first sat at the keyboard of a NeXT computer and used NeXTStep in the summer of 1991 at Penn State. I sincerely hope that Composite Software will captivate people just as much.
Today, the silence of the RESTifarians tells me that the door to composition is now wide open, THEY were the last line of defense of the "old' connected think'in", now, you can choose to enter or ignore that door and stay behind. There is simply no turning back. We have wasted enough years already.
So please, let's stop this discussion, if you want, and let's get back to work. The way forward is a programming model that offers the best of REST and WS-*. This debate is history.
JJ-