Politics of Plumbing
Thursday, February 4, 1999 by Dave Winer.
Hello and welcome back to my narrative. This week I've been working more with Microsoft on XML-RPC, and working with Marc Canter and his team on a new connection between servers and web browsers that lets each do what they do best. The server stores and computes and schedules, and the browser is the user interface, it presents, simplifies, learns, interacts and delights.
Our first target is the ubiquitous free email service that all portal sites offer. We've already implemented an HTML-only interface that works with 2.0-or-above level web browsers, but this is just for completeness, the true innovation will come when the higher-bandwidth interface comes online.
Imagine the Internet Cafe of 2000, or the broadband-connected home or office of 2002 and you'll see the target environment we want this software to run in. Not surprisingly, this involves XML-RPC, more on that later, and of course more on the Canter demo project as it comes online.
Flipping channels around dinnertime last night, I came across Larry King's interview with West Virginia Democrat Senator Robert Byrd. Along with Pat Moynihan of New York, also a Democrat, Byrd is the senior Senate Democrat and a Constitutional historian. As Richard Stallman is to the Open Source world, Byrd is to the Constitution. A purist, a visionary, a zealot. Previously silent, he's just the right guy to talk right now, as the Senate looks for its exit strategy from the impeachment process.
Last night Byrd said something new and stunning. He has no doubt that Clinton did what he was accused of, and that in his opionion the accused acts are sufficient for removal. How will the White House respond? They can't point the partisan finger at him, he's a Democrat, of the same party as the President, and the legislative authority on the Constitution, at a time when all the power is with the legislature. Today's events will be very interesting to watch. Will the Democrats close ranks behind Byrd? Does he offer a compromise with the Republicans? What does Moynihan say?
One of the reasons I'm so fascinated with the US political process is that I'm personally involved in a political process myself, the evolution of a cross-platform wiring protocol known as XML-RPC. However it happened, thru luck, vision, patience or effective compromising, I have become a pivotal person in the evolution of the protocol.
I used to say I live for plumbing, but now I've refined that, I love the *politics* of plumbing. It's the working together that I find fascinating; having been immersed in the lack of working together in the past, that was just preparation for the day when people would work together. (I'm still a member of the Church of Murphy.)
This has been a week of negotiation, there's measurable consensus forming inside Microsoft that it's now time for them to move on XML-RPC, to get our work in synch, and to develop a way to go forward with other parties involved, the Python, Java and Perl implementations, along with the new MSIE 5 implementation, released yesterday, and the Netscape and Microsoft/Mac browser implementations, released earlier today.
Here's a summary of how we got to where we're at right now.
In February 1998 I wrote a DaveNet piece with the germ of the idea of XML-RPC. We released a prototype that could be used for Frontier-Frontier communication. I got an email from Bob Atkinson at Microsoft, asking if we would work with them, and we said yes, and went forward.
We co-authored a spec, it was called Simple Object Access Protocol, or SOAP. We wanted an even simpler subset, that became XML-RPC, released publicly in April 1998. Our protocol was a compatible subset of SOAP, with the idea that any XML-RPC app could be compatibly upgraded to support the full SOAP spec when Microsoft was ready to release it.
In the interim, there was minor spec-drift, small differences at the XML-RPC level. Microsoft kept us in the loop, but we didn't move the public spec along with them, our plan was to wait until they were closer to deploying, and then do one rev, if possible, to get us back in synch.
Yesterday in a conference call with Microsoft people I said the biggest win was for them to support the XML-RPC spec without changes. However, I respect their opinion as much as I respect the opinion of the others who have played a role in the definition of XML-RPC, and if they have needs that we share, it would be bad practice to not support change.
An example of that process was the introduction of the <base64> tag, as proposed by Fredrik Lundh, who has been instrumental in the development and deployment of non-Frontier implementations of XML-RPC. He's an important and respected person in this process. Fredrik posted a message to our discussion group saying that they had added a value type, <base64>, to the Python implementation. My leadership challenged, here's the process I went thru.
Does Lundh have the right to add a new value type to the spec? I side-stepped the question, and instead asked myself if the idea was good. After a little thought I realized that it solved a problem we had encountered, it made text-or-binary representation of information an issue that could be handled at the plumbing level, something we had not been able to achieve in any other way. The idea is great! So I quickly updated the XML-RPC spec to include the new <base64> type.
Should we view Microsoft in the same way? Yes, absolutely. First, the history is important here. There was a time, not long ago, when we were doing daily back-and-forths with the Microsoft people. The process worked, it yielded a spec that many are saying is elegant and simple and useful. Every bit of praise that XML-RPC has gotten equally belongs to Microsoft. Now we have to go more slowly and carefully because there are compatible cross-platform implementations.
Reason #1. Microsoft is a collection of developers, many of whom do fine work. Their vision is compatible with ours. By choosing to work with Microsoft we empower the people within Microsoft who want their company to embrace change. We were able to easily get into agreement with them in the past, so I'm willing to continue investing in that premise.
Reason #2. Microsoft has hundreds of products and hundreds of millions of users. Compatibility with their users is a huge carrot.
Reason #3. Microsoft, like it or not, is a leader. The spec they implement will be the spec that dozens if not hundreds of other developers will implement. Having them publicly support a spec that we co-designed will surely bring us prestige and attention, and probably get the involvement of a few of their competitors, who so far have either ignored XML-RPC or signalled that they plan to implement their own format.
Reason #4: I've been briefed on the changes they want. They are reasonable, pass the good-idea test I used in evaluating Lundh's idea, they do not invalidate the current spec, so won't add FUD to the mix. I'm very sensitive to that. We have forward motion, and will protect that motion with all my power.
PS: The Church of Murphy is something that I invented. Its single premise is the programmer's mantra, Murphy's Law. Anything that can go wrong will go wrong. Hmmm. Amen!