An end to the Uber-Operating System
Sunday, September 12, 1999 by Dave Winer.
On Monday morning, along with Microsoft and Developmentor, we released a specification called the Simple Object Access Protocol, or SOAP. It's available on www.xmlrpc.com. The URL follows later in this piece.
SOAP, as its name implies, is an object access protocol. It is more complex than the XML-RPC specification, which is deployed on a wide variety of operating systems and scripting languages. The purpose of both specs is to enable scripted web applications to cross operating system boundaries.
I am an author of both specs, along with Don Box of Developmentor and a small group of Microsoft architects and engineers, including Gopal Kakivaya, Andrew Layman, Satish Thatte, and for the earlier spec, Bob Atkinson and Mohsen Al-Ghosein.
SOAP is a milestone in a process that started for me in the mid-80s on MS-DOS, and continued into the 90s with interapplication scripting on the Macintosh, and onto the Internet with the release of the XML-RPC specification in April 1998.
SOAP is a milestone for Microsoft because it is the opening of DCOM, the protocol for connecting applications over Windows networks.
So what does this mean if you're a web developer, web investor, a writer, or just a person who enjoys using the Internet? That's the purpose of this piece, to explain the philosophy of XML-RPC, updated, factoring in all that we now know, explaining where it can go and what it makes possible.
There's a big opportunity to connect desktop tools, text editors, spreadsheets, graphic programs, to powerful content management systems running on servers. Programs like Word, Emacs, Dreamweaver, BBEdit and PhotoShop are connected to collaborative systems such as Zope, Vignette StoryServer, Allaire's Spectra, and UserLand Frontier.
Writing and designing for the web is too hard. If we can use the know-how that already exists on the desktops we can turn the desktop into a powerful and easy-to-use web content creation workstation.
Further, there's a behind-the-scenes, mostly invisible Internet-based network that pushes information between servers. It's the "back end" of the Internet, and today it's a hodgepodge of incompatible, weakly supported and mostly isolated worlds that, even though they are quite powerful, can't work with each other.
The goal, simply put, is to create a high-level way for machines to call other machines, with the Internet as the wire that connects them. This is as far-reaching a vision as Sun's Java, but it's even bigger than Java, because it includes Java and every other programming language running on any operating system that can connect to the web and understands XML, which is to say everywhere that there's life today.
While Sun, IBM and others wanted to turn Java into the über-operating system, UserLand and Microsoft worked to flatten the differences between operating systems. The latter approach is based on an appreciation for diversity, the former, was an attempt to suck the whole world into Java.
Today's Internet is built out of Java, yes indeed, but it is also built on Python, Perl, Tcl, Basic, COM, AppleScript, Cold Fusion and PHP. And there's some C and C++ in there too.
Ironically, the only way to move forward at full speed is to slow down and support diversity, embrace it, let it be, even celebrate it. The more inclusive you can be, the more powerfully you move.
It would be a mistake to try to change all computers to a specific kind of operating system. For some users Windows is the right choice. For others it's Unix or Macintosh OS. There is no single operating system, nor is there a single programming or scripting language that suits every developer or every application.
Windows is not the only OS that matters, however I am not sure if Microsoft would agree with this statement. At some level I think they're still struggling to get everyone to be Windows developers. But part of Microsoft thinks they can compete even if people develop applications that don't run on Windows.
Give Microsoft credit for getting SOAP out the door. There was a lot of resistance. If SOAP gains traction, it allows us to build networks that connect to Windows networks without using Microsoft operating software. There's courage! Thanks to Microsoft for taking a chance and opening up.
Linux is not the one true operating system either, however I'm not sure if all Linux advocates would agree. People who use spreadsheets and word processors and web browsers and email programs choose Windows in droves, and rightly so.
Linux is still in its infancy as a desktop OS, and that's fine. It's a rich and reliable server. Linux can be even more useful more quickly if it embraces Microsoft, and extends its capabilities for Windows users who can benefit from Linux as an inexpensive and reliable server operating system. Later, when Linux can help people design and edit their web sites and do their business plans, people will remember the compatibility it had when Windows was their choice for workstations and clients.
Once again, this time with confidence, I pitch the Linux community to work with us. We've made it easy to build networks out of all flavors of systems and applications. If you adopt XML-RPC, if you take ownership of it, your networks can participate as peers and your advantages will shine in new light.
I don't think anyone, even Apple, thinks Mac OS is the one operating system for all applications. In that way Mac OS is ahead of all the others, because it must co-exist and it knows it. With the XML-RPC connection, Mac applications already connect to servers on Unix and NT, allowing designers, writers and graphic artists to contribute powerfully to net applications with maximum ease-of-use.
Therefore, the purpose of XML-RPC is to erase the lines that separate applications, to allow developers to bring the power of the Internet to the desktop and in the connections between back-end applications, no matter what operating system they run on. The more standardization there is, the more powerful the applications and the faster we can move.
More concisely, the purpose of XML-RPC is to end once and for all, the idea that there can or should be one operating system for all. No more über-operating systems, and no press releases claiming über-ness! Thank you very much.
So there are now two levels of XML-RPC. Here's a pointer to the specification for the simple protocol:
And here's a pointer to the new specification:
It's your choice. Either spec will work. We support both. Let's have fun!
My goal is to empower Frontier developers and users by giving them an easy way to connect and integrate applications running anywhere on the Internet, no matter what operating system they're running on, whether it be Windows, Mac or Unix. We're much closer to fully achieving that vision today than we've ever been before.
Finally, every big company will probably launch their own specification. Implementors should be aware of this, and should plan their software interfaces accordingly. Expect wiring-level incompatibility and you won't be surprised.
Once again XML-RPC is moving. I hope developers give it serious consideration. We want this stuff to move into all corners of the Internet as fast as possible. We're going to listen and learn, and work with everyone we can, to build out the system of interconnected cross-platform net applications.
Let's (all) have fun! (Together.)