Now blogging at diego's weblog. See you over there!

web technologies: a first step towards biomimetism?


Reading Jon Udell's comments on his recent conversation with Adam Bosworth (and Jon's own musings on Alchemy and related ideas: a next-gen client that would include an XML store and the means to manipulate it) I suddenly remembered a conversation I had with Russ last weekend about the usage of tags: Flickr's, Technorati's, Del.icio.us', everyone's. And I started to think about how all of this stuff is emerging at about the same time, and not by coincidence. This is all related.

It seems that I'm pulling the connection out of thin air, but not really. Consider the infrastructure on which the most innovative apps are currently being built.

What I'm thinking is that, through web technologies (by which I mean DHTML, Javascript, scripting, XML, REST, etc), we've spent the last few years walking back from decades of "hardening" of runtime environments and development tools, and consequently of applications.

By "hardening" I mean static checking (of which Java is a good example), fairly strict runtime checking, strict parameter and I/O checking, etc. The cost of which is, of course, the need for a fairly complex environment in which to run those applications. Complex, and delicate, in a sense. Easy to "break".

Many people have been talking for a while about the need for software to become more biomimetic, at least in the sense that systems in biology appear to deal fairly well with unpredictability, failure, and interaction without strong interdependencies.

Consider: to run certain apps (say, Windows, or Java) you need certain versions of DLLs, OSes, etc. Without those, the app doesn't run at all. Java bytecode is way more portable (and portable into future platforms) than, say, an i386-optimized EXE, but it's still tied to platform and libraries. This is the equivalent of an organism dependent on a certain type of plant to survive: remove the plant and the organism dies (i.e., the app doesn't run).

But (before you call the analogy police!) look at DHTML, XML, and web technologies in general: from the start, they can run in vastly different environments. If we look again at the app as depending on and adding to the ecology of its runtime environment (instead of viewing it as a static element that just sits on it), web technologies are fairly flexible creatures: they can survive on many types of environments, both server and client. Sure, they break easily, but they can be fixed almost as easily, and, more importantly, they evolve quickly, mutating, sometimes unnoticed (Google doesn't have versions, that doesn't mean that it hasn't evolved).

So a lot of web tech is so "flimsy" (at least when looking at it through the lens of static/strict checking). But I think that's it precisely why it works. And why, where things like applets (and, yes, ActiveX controls) failed, DHTML, JavaScript, XML, and simple REST interfaces are succeeding in creating a rich ecosystem of apps that build on each other.

PS: I have to think about this a bit more, certainly to come up with a better explanation. Hopefully it makes some sense though. But is this one of those great/crazy 3 am thoughts or what? :)

Categories: soft.dev
Posted by diego on January 21 2005 at 2:50 AM

Copyright © Diego Doval 2002-2011.
Powered by
Movable Type 4.37