Programming Web Services with XML-RPC
- 4 -
Foreword
My name is Dave Winer. I wear a lot of hats. I'm the CEO of a company, a programmer, a
columnist, a weblogger, and a developer of things that turn into standards. The last role was
the biggest surprise. I've been developing software since the late 1970s, and all the time I
wanted most to create a standard—to develop something that's so compelling and simple that
its goodness propels it to success. I'd say now, with XML-RPC becoming such a widely
adopted protocol, that it's happened. It's a strange feeling, for sure. Now, three years after the
publication of the initial spec, it's an interesting time to pause and reflect how we got here,
and then I'd like to offer some ideas for where we're going.
In 1998, my company, UserLand Software, had just finished porting Frontier from Macintosh
to Windows. Our software made extensive use of networking, so we had a problem—with two
versions of the software, how would they communicate? We could no longer use the
networking software of one platform: Apple Events on the Mac or DCOM on Windows. So we
decided to use two standards of the Internet, XML and HTTP, to form the communication
protocol for our software. By February 1998, we had a deployed protocol for Frontier-to-
Frontier communication simply called RPC, and it worked pretty well.
As I often do, I wrote a public essay about this and offered to work with others. Usually, I
make those offers and no one responds. This time, I got a call from Bob Atkinson, who I knew
from work we did with Microsoft on COM in the early 1990s, and he asked if we would like
work with them on XML-over-HTTP. I remembered that it had been a lot of fun working with
Bob in the past, so without hesitation, I said yes.
I flew up to Redmond, met with Bob, and met Mohsen Al-Ghosein (of Microsoft) and Don Box
(of Developmentor) for the first time. We sat in a conference room. I had a projected laptop. I
opened Notepad with an example call from our earlier protocol. As people expressed their
ideas, I changed the example. It was one of the most productive brainstorming sessions of my
career.
When I got back to California, we set up a web site and a private mail list and got busy writing
clients and servers. That's when betty.userland.com came into existence (it's mentioned in
the chapters of this book). Mohsen wrote JavaScript code to call my server. We talked about
it on the mail list. One day Mohsen called and described a much more powerful serialization
format. Until then, we had only been passing scalars, but with Mohsen's idea, we could move
much more complicated structures. We upgraded our implementations, and a few hours later
we were talking structs and arrays.
A few weeks into the process, I wanted to release the software to our users. It was already
much more powerful than what we were shipping. Wire protocols are a delicate area, and
serious breakage would surely happen if we waited much longer. So we forked a release,
called it XML-RPC, and continued working with Microsoft on what would become SOAP 1.1.
But that's another story and another O'Reilly book. ;->
As the book at hand, Programming Web Services with XML-RPC, explains so well, XML-RPC
is XML over HTTP, and a great way to develop Web Services. But there's actually more going
on here—there's a philosophy to XML-RPC that's different from other software projects. The
philosophy is choice, and from choice comes power, and, interestingly, a disclaimer of power.
In the past, your choice of development environment limited your power as a developer. If you
chose to do Java development, that meant, for the most part, that your code could only
communicate with other Java programs. The same was true of Microsoft and, in practical
terms, many open source scripting environments.
However, when you build applications with XML-RPC as the connecting glue, all of a sudden
you're not locked in. If you want to switch from Java to Python, for example, you can do it
gradually, one component at a time. This kind of fluidity allows developers more choices and
relieves platform developers of the responsibility of being all things to all people. By
supporting XML-RPC, the platform is offering you a way out if you don't like the way they're
going. Choice here is power for developers.