Steve: Developing on the Edge - No Jorgen, Mich does know what he is talking about.
Steve: Developing on the Edge
Thoughts on development, Web-services, technology and mountains.
2Jul
Sun2006
No Jorgen, Mich does know what he is talking about.

(updated, fixed an incomplete sentence, stubbed out better results from PowerPointUnit).

Jorgen Thielen, one of Savas' colleagues, argues that WS-* interop plugfests ensure that WS-* standards work better than Corba., indeed, that Workshops apply software testing disciplines to the way Web services specifications are developed, and that implement-standardise-interop is a better process.

Clearly I am mistaken, and the "WS" protocols that he is working on must be a different set from "Web Services". Because it is blatantly obvious that they don't apply test-driven development to those specifications, and it now seems inevitable that they are digging an even deeper hole, the more complex the specs get.

My proposed Apachecon lightning talk was going to be "Testing for Architects", in which after haranguing the members of the WSDL-1.0, 2.0 and WSA spec teams in the audience (Sanjiva, Dims and Glenn), I was going to argue that if we could not bring the architects to the test tools, we could bring the tools to the architects with PowerPointUnit being a test framework combining powerpoint macros and the truth-resolution feature of the semantic web, one that assuming that all non-resolvable statements are false. (i.e. we are working with Horn clauses). The test framework would evaluate the setUp and tearDown slides first, then run through the presentation parsing and evaluating all statements in text boxes given an label beginning with the word "test". Not having got this working on the short BRS-Dublin flight (Ryanair doesnt have room to unfold a laptop), I will have to do the work by hand, with some suitable text.

And what do I have to hand but a little note in my soapbuilders inbox, sent on June 30 from one Jorgen Thelin from a microsoft.com email address. Jorgen, I'm afraid my prototype RDF-truth-resolution tool cannot resolve the statement

working-process(X):-process(X),works(X).

for either X=corba or X=ws. Let's look at some of the error results of the email-analsis.

Microsoft Corporation would like to invite you to a 3-day Web Services Interop Plug-fest on Tuesday September 26, 2006 to Thursday September 28, 2006 from 09:30am to 5pm each day.

[PPTUnit] PASS

In terms of barrier to entry, the cost of a trip to SEA, the commute round I405 and then hanging round building whatever is probably the same as attending a standards meeting. Not worth participating, unless you have money to burn, and a high perceived value in attending, or you live in sight of Mount Ranier and the cost of attending is just the commute out to Redmond. But if you are in a standards meet, you have some chance of influencing the outcome and improving the process.

The Interop Plug-fest is an ad-hoc, open forum for companies who have implementations of various Web Services protocols to meet with engineers from the Connected Systems Group and test against the upcoming version of Microsoft's Windows Communication Foundation (formerly known as codename Indigo) product.

[PPTUnit] FAIL. Could not resolve has_tests(ws). Warning: process may not be test-driven.

Test against indigo. Which tests precisely? The tests that came with the specs? Oh, wait a minute, there are no such tests.

The focus of these plug-fest meetings is on interop testing, so no feedback will be taken on the WS-* specifications themselves.

[PPTUnit] FAIL. Expected process(ws,"agile"), found process(ws,"slowly iterative waterfall")

That is, "we won't listen if you say WSA doesn't make sense, it has taken something as simple as a URL and replaced it with 2003/03, 2004/05 and 2005/08 interim and 2005/08 drafts, all of which you can encounter in the field". Instead we are meant to be greatful for messages like this bunny, currently sitting at the top of my live endpoint tracelog (there's a link to it in the testing slides, go read them)

<Envelope
  xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns="http://schemas.xmlsoap.org/soap/envelope/"> 
<Header
 xmlns:wsa="http://schemas.xmlsoap.org/ws/2003/03/addressing"> 
<To soap:mustUnderstand="1"
  xmlns="http://schemas.xmlsoap.org/ws/2003/03/addressing"
   >http://deployapi.iseran.com:8080/alpine/system/?system=uuid_6ba4318b_23ce_46d7_ae38_b2500b443dcf</To>
<MessageID soap:mustUnderstand="1"
  xmlns="http://schemas.xmlsoap.org/ws/2003/03/addressing"
  >uuid:c0e61c77-ec5e-4d4b-89f6-2360fcdfe7d2-0</MessageID>
<Action soap:mustUnderstand="1"
  xmlns="http://schemas.xmlsoap.org/ws/2003/03/addressing"
  >http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd/Destroy</Action>
</Header> 
 <Body> 
 <Destroy
  xmlns="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceLifetime-1.2-draft-01.xsd"/>
</Body> 
</Envelope>

Admittedly, MS won't be expecting WSRF operations, but messages like this, in which most of the payload is WS-A headers and needlessly repeated xmlns declarations will undoubtedly be floating around. And feedback like "what is the point, just tell me?" is clearly not allowed.

This plug-fest event is open to anyone who desires to participate and who can bring an implementation to test interoperability with Microsoft's Windows Communication Foundation product any or all of the following areas: )

(listing including SOAP1.1, SOAP1.2, WS-Addressing 2004/08, MTOM, WS Secure Conversation 2005/02, WS-Trust 2005/02,WS-RM 2005/02, and many others

[PPTUnit] FAIL. Expected interoperable(P,P) where P=[ibm,sun,jboss,bea]; found interoperable(P,ms).

Interoperability with Indigo. Not interop between, say, Axis2 and the JBoss stack. Or between XFire and Alpine. No, those are our problems.

This shows what is wrong with the process. With no formal, machine readable and yet normative definition of the semantics of the communication other than XSD or WSDL, there is no way to prove the correctness of an implementation. You can write tests, but since there is no way to prove your tests match the spec, well, your tests may be wrong too. If there were normative tests included in the spec, then the test suite itself would be part of the official definition of system behaviour. There would be no real need for interop testing plugfests against a single vendor's implementation, because everyone would know that the test suite worked against their endpoints, and therefore that their impls matched the specs. The interop events would just be demos of this, and to catch little surprises like MTU inconsistencies and other stuff that kills performance.

The fact that instead WS-* implementors are reduced to flying to seattle, just to get their stuff working with MS and not with each other, shows that the process for achieving workable, interoperable implementations is not only crippled by the focus on O/X mapping for datatypes, but in the way that specs get written without thinking about testing or proofs of correctness.

I shall not be attending BTW, no snow there at that time of year. I managed to spend some time showing Alpine to the Axis2 folk and Dan Diephouse, author of XFire. Dan and I did some code walkthroughs, swapping design ideas and improving both our stacks through peer code review, even though neither project is under Apache. Because ApacheCon doesnt care what project you code for, or whom you test against, as long as you have fun and do useful things at the conference. WCF interop plugfests seem to have a different agenda, like declaring victory from having so many stack vendors demo interop with indigo.

NB, for anyone who does go, stay in the Silver Cloud just south of the campus and demand the MS rate. Free LAN; some restaurants in walking range.

Comments

On 3 July 2006 at 16: 29 Steve Loughran commented:
Note that this isnt meant to be an attack on Jorgen and colleagues (all nice people, inc savas, doug, chris, don...), or even interop fests per-se, which are themselves derivatives of the SOAPBuilders process.
Its more a criticism of standards that ship without a normative test suite, or some machine-readable declaration of the communication which can be used to automatically derive test suites or prove correctness.
De-facto standards are good, its how you evolve without waiting for decades in committees and end up with over-complex specs like corba. NFS, Samba, all wonderful. But at some point you may need to standardise, and at that point, you need tests. Samba lacks this, WS-* lacks it too.
To put it differently, Ant has more tests than the entire specification suite of SOAP, WS-A, WS-RF, even WSDL (I think). And that is just a build tool, not the strategic glue for a planet.
On 5 July 2006 at 22: 39 Steve Loughran commented:
s/samba/r/lanman. I get confused. as far as I am concerned, Samba is the lanman suite.