Let’s make three assumptions: First, that Web Services are important. Second, that to make Web Services useful, you need some sort of declaration mechanism. Third, that WSDL and WSDL 2, despite being the work of really smart people, are so complex and abstract that they have unacceptably poor ease-of-use. What then? Naturally, the mind turns to a smaller, simpler successor, sacrificing generality and eschewing abstraction; in exactly the same way that XML was a successor for SGML. Well anyhow, that’s the direction my mind turned. So did Norm Walsh’s; his proposal for NSDL also includes a helpful explanation of why Web-Service description is important. My sketch is called SMEX-D. Interestingly, NSDL and SMEX-D, although both wave the banner of The Simplest Thing That Could Possibly Work, are wildly different; NSDL is the simplest way you could possibly declare an RPC-style function call with positional parameters. SMEX-D is the simplest possible way you could declare an exchange of XML messages. Which is more important? Are both necessary? I suspect that these days, the Simplest Thing That Could Possibly Work would include a declaration that a particular message-exchange/function-call should be reliable, using HTTPLR or equivalent. Are there any other proposals or skunkworks floating around out there? Let me know and I’ll aggregate pointers. [Updated with more proposals, startling commentary from Megginson and Obasanjo, and an appeal to Sowa’s law].
Feedback · Rich Salz proposed RSWS back in October 2003. Savas Parastatidis wrote to point out SSDL; but I think he’d agree that something identified as “a suite of specifications”, which has five protocol frameworks, one advertised as pi-calculus-based, is not attempting to be The Simplest Thing That Could Possibly Work. Steve Loughran wrote in about his attempt to desire for “a complete overhaul of the Java SOAP stack”. Mark Baker wrote to say that this is an RDF-based WSDL replacement.
Joe Gregorio pointed at his series of XML.com columns, which pretty clearly heading in a WSDL-ish direction.
Finally, today I had lunch with Dave Orchard, who thinks that my gripes are mostly about WSDL 1.1 and are addressed in WSDL 2; although he complained about pushback against his efforts to simplify WSDL2 further.
Do We Need It? · I was surprised to read arguments from David Megginson and Dare Obasanjo that maybe I’m barking up the wrong tree; maybe we just don’t need WSDL, or even a simpler replacement. David says hold off designing anything until we know what the real problem is; Dare points to existence proofs of popular Web Services that don’t seem to need any declarations.
These are pretty smart guys, but I really think they’re wrong.
Yeah, I can use a C interface without having a
.h file to help
me, but why should I have to?
The best I ever heard this expressed was by
Nelson Minar, like
so: “I want to publish any reasonably simple Web Service with a declaration
so that anybody who wants to can use it with like two lines of code.”
Ease of use, you just can’t overestimate how important that is; so in this
case I think Nelson’s right, David and Dare are wrong.
For further evidence, I introduce Will Iverson’s finding that WSDL, painful and inaccessible to mere mortals as it is, still produces a useful effect: Unfortunately, if the examples as shown in this book are any indication, REST-based projects are liable to lead to considerably more client code for the maintenance of the XML processing as compared to SOAP-based solutions. (By SOAP-based, he means SOAP-and-WSDL-based.)
So at the end of the day, I still think that declaring Web Services is important and that WSDL isn’t the answer and that this is a fruitful area for further work.
Sowa’s Law of Standards · The full exegesis is here, but the short form is: “Whenever a major organization develops a new system as an official standard for X, the primary result is the widespread adoption of some simpler system as a de facto standard for X.”
He has lots of examples. I think there’s another one coming.