If you haven’t listened to Adam Bosworth’s Database Requirements in the Age of Scalable Services, you need to right away. The 45 minute run length seems to be limiting the amount of listenership, which is a real shame because he makes some really great points in the talk.
It’s not really about databases the way you’re thinking it is, it’s about applying the principles that make the web work to the very generic task of exposing, modifying, and querying data. Bosworth is thinking waaaay out of the box here, claiming that RSS and Atom have the potential to do for machine readable data what HTML has done for human readable content. It seems to be an elaboration and progress report on the thinking he demonstrated in his ISCOC04 Talk, which was cited heavily throughout the blogosphere.
But even if you don’t care about databases or Atom/RSS (let’s say you build loan approval or payroll processing applications) you can still get a lot from this talk by simply observing the style of thinking Adam demonstrates. This is exactly what I’m trying to encourage with Motherhood and Apple Pie and I’d like to use Adam’s talk to illustrate the different ways you can think about the web because Bosworth’s talk is a perfect example of The Right Way.
The first way of thinking about the web is to take the design you already have, in this case relational databases, and just put it on internet pipes (i.e. use web protocol as a conduit for what you’re already doing). If Bosworth would have taken this approach he would have been talking about creating an XML representation for SQL queries and tabular data, how to hack in transaction management and isolation levels, and other stuff like that.
As it were, this is not even close to what he talks about and the reason is because that style of thinking does not work.
I’m reminded of Richard Feynman’s excellent Cargo Cult Science:
In the South Seas there is a cargo cult of people. During the war they saw airplanes with lots of good materials, and they want the same thing to happen now. So they’ve arranged to make things like runways, to put fires along the sides of the runways, to make a wooden hut for a man to sit in, with two wooden pieces on his head to headphones and bars of bamboo sticking out like antennas–he’s the controller–and they wait for the airplanes to land. They’re doing everything right. The form is perfect. It looks exactly the way it looked before. But it doesn’t work. No airplanes land. So I call these things cargo cult science, because they follow all the apparent precepts and forms of scientific investigation, but they’re missing something essential, because the planes don’t land.
Business IT (as well as major media) are the South Seas islanders of the web. They see the types of things the web is capable of and they try to replicate them using their existing materials, but the planes don’t land. You can observe this happening right now in a vast number of cases including “Web” Services (WS-* specifically), statically typed languages, Active X Controls, Java Applets, XForms, and this website (look closely).
I believe the problem to be two-fold:
The great majority of experience with systems was not had with the constraints of the web in place. This makes conclusions drawn from observation of existing working systems, as well as recommendations based on them, extremely unreliable.
Very few people are aware of problem number 1 (Adam Bosworth is one them).
It’s interesting that many of the individuals I can think of that understand this situation seemed to have had to learn it the hard way (no offense meant to anyone in this list). Sam Ruby participated heavily in SOAP activity at Apache. Mark Baker’s username is always distobj (Distributed Object) because he was a big CORBA head. Tim Bray had a hand in XML Namespaces and watched, if not participated in, W3C XML Schema. Peter Yared was CTO of Sun Microsystems’ Application Server Division. I worked on XForms (among other things).
Adam Bosworth actually describes this process of being slammed in the face with the realities of the web in his talk:
In 1995 I woke up from a sort-of Microsoft induced narcoleptic coma and realized there was this thing called “The Web,” and got really excited about it.
How did the web happen? People take it for granted. You just assume that there’s always been the web. You know, in the beginning there was the web and the web was good and so on but that actually isn’t true. When Tim Berners-Lee came out with HTTP and HTML it turned out that he kind of hit a perfect storm of efficiency. He made something really simple and because it was really simple, virtually any P-programmer, by which I mean Perl, Python, and PHP, could generate web content. That was a heck of a lot easier than building on those, for example, really cool looking Mono apps that we just saw. Building a really simple form that says “here’s a list of the tasks that you have due today” was something that virtually anyone who could think could put up on the screen.
What I like to suggest to people coming from a more traditional background in IT is that there are systems that evolved under the constraints of the web and their design reflects that. Once you’ve accepted that the previous statement is factual, you are forced to draw one of two possible conclusions:
Systems that were designed through observation of the web and/or in adherence to the core principles of the web must be more suitable to the web than those that were not.
Systems that were designed through observation of the web and/or in adherence to the core principles of the web must have been designed by monkeys with little understanding of building systems in the first place.
It is these second types that bother me.
UPDATE: I forget to mention that Rams took notes on the talk.