localoutline

Good morning!
  This morning at 8:30AM I'm giving the keynote for the XTech conference at the San Jose Convention Center. XTech is a conference of people who do development in XML. The San Jose Convention Center holds a lot of memories for me, as the venue of many Apple WWDCs, where believe it or not, we talked about many of the same things we're talking about in XML-land in The Year 2000.
  I'm preparing for my talk by writing an essay. This method works well for me. I organize and edit my thoughts, and arrive on stage with a cohesive story with quotable soundbites. I hate doing presentations with slides because I always get ahead of myself and forget to switch to the next slide. As an audience member I don't like slides either. I like to hear a story, hopefully an interesting one, and hear comments from people in the audience. This is a one-half hour talk.
Stranger in a Strange Land
  By way of introduction, I am a software developer and writer. I started on Unix in the mid-late 70s, went to CP/M, then the Apple II, IBM PC, Macintosh, and now I consider myself an Internet developer.
  Organizations I've worked for or founded: Rapidata, UW-Madison, Personal Software, Living Videotext, Symantec, UserLand, Wired, UserLand.
  Products I've authored: Visitext, Thinktank, Ready, MORE, Frontier, Autoweb, Clay Basket, Frontier, Manila. My next product is called Pike, it'll be out in free public beta at the end of this month, Murphy-willing.
  Editorial work includes DaveNet (this column) and "Scripting News" (my weblog).
  Even though I've been active in XML, this is the first time I've spoken at an XML conference. Thanks to Tim Bray for inviting me to talk. In May I am the chair of the WWW9 developer day track on distributed computing. So it looks like I am becoming part of this community. Hello!
RSS
  Two XML-based formats I've been involved with both happened outside of the standards bodies. The one I want to talk about today is XML-RPC, so here's a brief on what RSS is and why we're interested in it, and then I'll move on to XML-RPC.
  In December 1997 I got interested in XML, and I looked around to see what we had that could be XMLized so I could get some practical experience with XML. I run a weblog named Scripting News. I thought it would be interesting to publish a not-marked-up version of SN in XML and see what happened. Not much. But then in 1999, Netscape came up with RSS format, and we quickly adopted it, as many pubs were doing deals with Netscape for syndication based on RSS.
  We started My.UserLand, which is an aggregation engine based on RSS and our own format. We also participated in the design of RSS 0.91, which includes almost all of the features of our format. One important feature is still missing from RSS, the ability to include more than one link in a snippet. If you want to get educated on this subject, send me an email and I'll post a page with links to RSS-related stuff.
  Now on to XML-RPC.
It started for me in the mid-80s
  In the mid-80s I was a Macintosh developer, had a hit product, MORE, which was a combination outliner and presentation program. Nowadays outliners are standard in presentation tools, but then it was considered controversial to do anything in an outliner, so many people wanted us to unbundle the outliner and connect them to the presentation program thru a plug-in architecture.
  Of course in the mid-80s on the Mac there was no such architecture, so after selling the company to Symantec, I left to explore this idea. What if software were componentized so that a writing tool could connect to a database or rendering engine? What would you need?
  We got all the way to a solution, but by the time we had the idea working, the Mac was in serious decline as a developer platform, and the Internet was booming. I switched careers, became a writer, and then got interested in the Web as a writing environment, and guess what, the plug-in thing came up again!
The Web as groupware
  I wanted to understand what kind of a medium the Web is. Like many, my first guess was that people could use a productivity tool to write for the Web. I did one, called Clay Basket, in many ways like NetObjects Fusion, but predating it by about a year. It was a dead-end. It turns out the Web as a writing environment is groupware, not a productivity application. I found this out when I used Clay to manage a site with 1000 authors. Shortly after that experiment, we switched gears and started working on a group writing environment based on the standards of the Internet, HTTP and later, XML.
  It was a puzzle. We did a strong server side, built in our object database, but I kept searching for the easiest way for writers to write for the Web. One of the things I tried really worked -- writing in a web browser like Netscape or MSIE. Why is that so satisfying? There are a lot of reasons, most important is the integration of browsing with editing. When you see something that needs to be changed, you're already in the browser. So any content system that doesn't have hooks into the browser is seriously more difficult to use because you have to master two navigation systems, and that's where the complexity is in writing for the web.
  Another way of looking at it. The browser is a great editing tool because it understand HTTP at its core. It knows how to read stuff on the Web, and it can work with the local file system, but even in that mode it treats the file system as if it were an HTTP server.
  But the browser also sucks as an editor because it has a shitty text editor, which pales in comparison to the best editing tools that the PC software generation created, things like Word, WordPerfect, BBEdit, Homesite, etc. And the browser has no design tool like Dreamweaver or image editors such as PhotoShop. And it's only going to get worse because we need vector graphic design tools to do SVG, which looks like a great standard and something that's much-needed on the Web.
  In other words, if you want the best Web editing environment, you have to figure out how to connect the best writing, design and graphics tools to the content system, as if they were Web browsers. That's going to yield the best results, and is, imho how the TBL vision of the Two-Way-Web will be realized. We're on the cusp of delivering this, having already shipped the browser-based editable Web (Manila); the software we release this month will be a desktop writing tool that's integrated with the Web as intimately as the browser is.
That's our motivation
  I heard people say yesterday that they've never heard a reason why XML-RPC technology is needed, but hopefully at this point no one can say that. I believe the Two-Way-Web is the most compelling vision since the Web itself. Can you do it without some formal protocol for connecting the apps together? Not if you want users to have choice. And of course if users don't have choice then it's not the Web, because that's one of the key things about the Web (maybe the only key thing) and it's also why Amazon's patents are so insidious and unweblike, but that's another story altogether.
What works?
  I was one of four people who designed XML-RPC. The others were Don Box, Bob Atkinson and Mohsen Al-Ghosein. Don is an independent developer, like myself, and Bob and Mohsen work at a huge company in Redmond Washington. The initial spec took a day to design, and two weeks to finalize. This work was done two years ago, in March 1998.
  http://www.xmlrpc.com/
  After the initial spec, Microsoft starting tearing it apart and W3Cizing it, which seemed an endless process, because W3C kept changing its mind about how XML works. Luckily we split off from Microsoft, and published a spec for XML-RPC, and asked for support publicly from the open source community and were not disappointed. We did the first implementation in our content system, Frontier. Fredrik Lundh did the Python version, then Ken MacLeod did one for Perl, and then we got Java, PHP,Tcl, JavaScript, etc. Now we have virtually every programming environment supported, every OS that's in current wide use.
  Last summer it seemed that Microsoft was finally ready to go with SOAP, which is what their version of XML-RPC became. I felt it was very important to get a big well-known technology company publicly on board so I endorsed it. To me it makes no difference what the underlying transport is, as long as it's reasonably efficient, I'm only interested in applications. As I said earlier, to be weblike, users must have choice, and to have choice we must have a standard.
  Yesterday the W3C had a BOF meeting. They're interested in working in this area. And amazingly, Microsoft seems ready to let them take apart SOAP, which appears to me to be a formula for another two-year-wait for the two-way-web. To me there's a sense of urgency, the Web needs integrated tools as the Mac needed them in the 1980s. A long W3C process, I think, means a fractured market. I had a long talk with one of the W3C guys yesterday and here's what I suggested, but I didn't get a positive response.
W3C should adopt XML-RPC
  It's low-tech, clean, easy to understand, a four-screen spec, widely deployed, transparent, efficient, and most important, it's frozen, not subject to debate. Take it as a whole, without changes.
  This gives us something solid to recommend to our competitors and partners. The Two-Way-Web vision can be realized this year. (It will be anyway.) Macromedia, Adobe, Microsoft, Sun and IBM can issue press releases with quotes from TBL saying this is how I wanted the Web to be when I first invented it.
  In the meantime, start the process for XML-RPC 2.0, which is backward compatible with 1.0. Make it work with namespaces and schemas. Make it totally orthogonal and context-free. Make it work over any wire protocol you can think of. Provide hooks for firewall people. However, I believe the adoption rate of such a spec, once finished, will be slow. In the meantime XML-RPC can define a market, as HTTP and HTML did. In other words, adopt the old maxim, let the market decide.
It worked!
  One other thing going for XML-RPC -- it works. You can build an integrated writing and design tool with a Web content system using XML-RPC. I know because we've done it. That;'s how I'm writing this piece. Not in a web browser, but in a professional editor that's designed for writers and thinkers. Not a geeky thing in sight. A File menu a Web writer would die for. It's easy!
Dave Winer
  PS: TBL is Tim Berners-Lee, the inventor of the Web, and the director of W3C. I've never met him, but I've read his book, and think we're barking up the same tree, with different approaches. I think I'm doing it as he would have in the early 90s when he was working on HTTP and HTML. I think he got sucked into the Big Company mess. Why didn't all these companies invent the Web? Is W3C really a solution to any problem the market has?? I would like to buy him dinner sometime and talk about this stuff.
  PPS: W3C is The Worldwide Web Consortium, http://w3.org/.
  PPPS: BOF stands for Birds Of a Feather.
  PPPPS: If you want to understand how revolutionary the Two-Way-Web will be, read my piece from Davos this year, How to Make Money on the Internet. It's about a lot more than money, of course, but that's what everyone wants to know about. ;->
  Note: As of Jan 2001, there's a whole site devoted to the Two-Way-Web.