Subject: Usefulness of WSDL

From: Lisa Dusseault <[email-masked]>
Date: Fri, 9 Nov 2007 10:55:31 -0800

I see WSDL proposed for some spec in the IETF every so often but  
nobody's ever explained to me what it solves.  James Snell who has  
more experience than me in the matter wrote:

"Those who are familiar with my history with IBM should know that I  
was once a *major* proponent of the WS-* approach. I was one of the  
original members of the IBM Emerging Technologies Toolkit team, I  
wrote so many articles on the subject during my first year with IBM  
that I was able to pay a down payment on my house without touching a  
dime of savings or regular paycheck, and I was involved in most of  
the internal efforts to design and prototype nearly all of the WS-*  
specifications. However, over the last two years I haven’t written a  
single line of code that has anything to do with WS-*. The reason for  
this change is simple: when I was working on WS-*, I never once  
worked on an application that solved a real business need. Everything  
I wrote back then were demos. Now that I’m working for IBM’s WebAhead  
group, building and supporting applications that are being used by  
tens of thousands of my fellow IBMers, I haven’t come across a single  
use case where WS-* would be a suitable fit."

Anybody got counter-arguments or is this a reasonable indictment?

Lisa

[from James' blog: http://www.snellspace.com/wp/?p=798]

---

From: James M Snell <[email-masked]>
Date: Fri, 09 Nov 2007 11:06:39 -0800

Just as a point of clarification: I'm not saying that WSDL is not useful
in general; I'm saying that in my personal experience I've never had any
reason to ever use it in a real-world application. :-)

- James

Lisa Dusseault wrote:
> nobody's ever explained to me what it solves.  James Snell who has more
> experience than me in the matter wrote:
> 
> "Those who are familiar with my history with IBM should know that I was
> once a *major* proponent of the WS-* approach. I was one of the original
> members of the IBM Emerging Technologies Toolkit team, I wrote so many
> articles on the subject during my first year with IBM that I was able to
> pay a down payment on my house without touching a dime of savings or
> regular paycheck, and I was involved in most of the internal efforts to
> design and prototype nearly all of the WS-* specifications. However,
> over the last two years I haven’t written a single line of code that has
> anything to do with WS-*. The reason for this change is simple: when I
> was working on WS-*, I never once worked on an application that solved a
> real business need. Everything I wrote back then were demos. Now that
> I’m working for IBM’s WebAhead group, building and supporting
> applications that are being used by tens of thousands of my fellow
> IBMers, I haven’t come across a single use case where WS-* would be a
> suitable fit."
>

---

From: "Mark Baker" <[email-masked]>
Date: Fri, 9 Nov 2007 15:26:21 -0500

On 11/9/07, Lisa Dusseault <[email-masked]> wrote:
>
>
> I see WSDL proposed for some spec in the IETF every so often but nobody's
> ever explained to me what it solves.  James Snell who has more experience
> than me in the matter wrote:
>
> "Those who are familiar with my history with IBM should know that I was once
> a *major* proponent of the WS-* approach. I was one of the original members
> of the IBM Emerging Technologies Toolkit team, I wrote so many articles on
> the subject during my first year with IBM that I was able to pay a down
> payment on my house without touching a dime of savings or regular paycheck,
> and I was involved in most of the internal efforts to design and prototype
> nearly all of the WS-* specifications. However, over the last two years I
> haven't written a single line of code that has anything to do with WS-*. The
> reason for this change is simple: when I was working on WS-*, I never once
> worked on an application that solved a real business need. Everything I
> wrote back then were demos. Now that I'm working for IBM's WebAhead group,
> building and supporting applications that are being used by tens of
> thousands of my fellow IBMers, I haven't come across a single use case where
> WS-* would be a suitable fit."
>

Nope, sounds about right to me.  IMO, the whole notion of
service-specific interfaces - the reason WSDL exists - is an anethema
to Internet scale and so has no place in the IETF.  It also encourages
bad practice around exposing implementation details, such as the
current schema support by the device (because we all know, those never
change over time 8-).

That said, if some spec author wants to use it, I don't see any need
to prevent them from doing so, so long as the emphasis of the spec is
on the protocol.

Mark.
-- 
Mark Baker.  Ottawa, Ontario, CANADA.         http://www.markbaker.ca
Coactus; Web-inspired integration strategies  http://www.coactus.com

---

From: "RL 'Bob' Morgan" <[email-masked]>
Date: Fri, 9 Nov 2007 13:33:22 -0800 (PST)

> nobody's ever explained to me what it solves.

The motivations for Interface Definition Languages (IDLs), of which WSDL 
is an example, and of Remote Procedure Call (RPC) systems, of which IDLs 
are a component (and of which WS-* is an example), are straightforward. 
Among other places they are described in RFCs 1057 and 1831, which 
document Sun's ONC RPC (1831 is standards-track even).  The seminal paper, 
as mentioned in 1831, is

   Birrell, A. D.  & Nelson, B. J., "Implementing Remote Procedure
   Calls", XEROX CSL-83-7, October 1983.

for which a cursory search doesn't reveal an online instance.  (Some might 
flame at calling WS-* "RPC", so OK, substitute "RPC-like distributed 
computing system" instead.)

The idea is that protocols are hard to write, and software implementing 
protocols is hard to write.  So an RPC system creates a meta-protocol; a 
concrete protocol to do real operations is created by writing an interface 
definition in an IDL.  The IDL serves as generator for both a protocol 
spec and an API spec; the IDL is fed into a language-specific stub 
generator which produces libraries for use in that language for that 
interface (ie, that protocol).  The programmer just uses those libraries 
like she would any other libraries when implementing a system.  Voila, the 
pain of writing protocol implementations, and protocols, vanishes.

This argument has been so compelling that dozens (maybe hundreds) of RPC 
systems have been invented, and many widely deployed, over the years. 
Each promises to solve the problems that have led to the previous ones not 
meeting the hype of their promoters.  And of course the gap between hype 
and adoption has led to some of them being among the highest-profile 
computing failures (see "DCE"), at least in popular opinion.

I think the story has remained largely the same for the last 25 years or 
so.  Using an RPC system is undeniably better than the usual system 
integration alternative of making up a new protocol from scratch, which 
anyone doing system integration knows leads to appalling protocol 
interfaces on systems of all kinds.  But RPC systems never seem to escape 
this niche of home-grown interfaces for a small purpose with a few 
consumers.  Probably there are lots of reasons why this has been so.  I'd 
guess among the most important is that IDL toolkits inevitably become 
language- and vendor-centric, so the theoretical cross-platform agility 
and interop doesn't happen in real life.  So people with real scalable 
distributed systems work to do focus on real protocols and accept the 
burden of writing implementations of them more or less from scratch (often 
these days based on HTTP+REST).  (Obviously there are many perspectives 
and counterexamples, it's a big Internet.)

Given that Internet protocols specified in RFCs are presumably intended 
for those widely distributed and widely implemented cases, it seems like 
RPC/IDL technology, including WS-*/WSDL, is generally inappropriate. 
Obviously there have been exceptions, as RFCs 1831-3 and 3530 demonstrate.

  - RL "Bob"

---

From: "Tim Bray" <[email-masked]>
Date: Sun, 11 Nov 2007 13:06:44 -0800

Lisa, you might it useful to pull a copy of the WSDL spec and invest a
half-hour in just looking at it.  It's really hard to understand, and
my feeling is that it's an extremely poor piece of design.

I can remember I was once speaking at a big Java conference, maybe 600
people in audience; I asked for a show of hands as to who was using
WSDL.  A large majority of hands went up.  Then I asked how many
thought they actually understood it.  Maybe 2 or 3 hands.  How many
liked it?  Another couple of hands.

Based on experience with WS-*, I suspect that in general any IETF spec
that requires the use of WSDL will be expensive to implement and
fragile in deployment.   Among other things, a spec that's regarded as
difficult to understand should be avoided if there's a plausible
alternative.  -Tim

---

From: Leif Johansson <[email-masked]>
Date: Mon, 12 Nov 2007 12:12:03 +0100

These days WS-* is something everyone loves to hate (and often for
good reason). In the case of WSDL I think its good to remember that
WSDL is one of the very few WS* technologies that has been widely
implemented - people do actually use WSDL from perl-based SOAP-
stacks to lookup and call java-based services etc.

As for how much developers _really_ understand technology, I suspect
one would get similar answers as Tim got if one were to ask a set of
programmers about just about any set of technologies for which there
is good tooling available. Those programmers probably was thinking more
about the quality of the tooling than about the quality of the under-
lying technology.

I think it may be interesting to ask why WSDL turns up in IETF specs
but not (say) WS-Policy or WS-ReliableMessaging. My guess would be
that in many cases solutions which started out as simple systems-
integration RPCs (ct-kip-ws may be an example) have grown into
protocols in the sense that they are implemented by multiple vendors etc.

          Cheers Leif

---

From: Mark Nottingham <[email-masked]>
Date: Mon, 12 Nov 2007 23:55:15 +1100

On 10/11/2007, at 7:26 AM, Mark Baker wrote:
> That said, if some spec author wants to use it, I don't see any  
> need to prevent them from doing so, so long as the emphasis of the  
> spec is on the protocol.

I disagree. The interop and interpretation problems with WSDL make it  
too much of a liability to use in a spec; it will cause more problems  
than it solves.

Even if you plaster warnings that it's non-normative and that the  
spec wins, people will still use it to generate their code, and  
they'll be stuck with the data binding and interface modelling mess  
that results.

--
Mark Nottingham     http://www.mnot.net/

---

From: "Mark Baker" <[email-masked]>
Date: Tue, 13 Nov 2007 08:29:40 -0500

> they'll be stuck with the data binding and interface modelling mess

I hear you, but the alternative seems to be a mandate that it not ever
be used, which AFAIK, there's no precedent for.  I'd rather its use be
evaluated on a case-by-case basis during the review process.

Mark.