Wednesday, May 25, 2005

Deadwood and the Web Application Leap

I came across the following script in my travels. Thought I'd share. The note scribbled on it was:

A spaghetti western in the technology world of the town of Deadwood, Wild West, USA.

Elevator Pitch

My previous Ananse folktales seemed to go down well with a certain audience as a kind of biblical, Grimm's tales of "African magic realism" as The Guvnor put it. At the risk of carrying that Autumn of the Patriarch conceit too far, I was reminded of westerns, of the spaghetti variety, when I came across the following insightful tidbit from Rands in Repose who you can imagine as Sergio Leone surveying the state of the current technology world and deciding to go local. It's not quite the masterpiece that was The Good The Bad & The Ugly which saw a great print released last year or the earlier and crueler For A Few Dollars More, it's rather that first shot across the bow of B-movie legend, A Fistful of Dollars. So without further ado as your novice director, let me sit back in my chair.
Lights. Camera. Action.
A Fistful of Dollars

Scene I: The Web Application Leap

[Voiceover by "Rands" as a wagon pulls into town]
The size of the fervent rush towards the Ajax reminds me that folks are dying to discover the Next Big Thing. It's been awhile since we've had a Netscape-magnitude holy shit and while there are have been many false positives... has any Internet technology in the past two years seriously knocked your socks off? Well, Ajax has not knocked my socks off, but I believe it's a indication of a revolution that will involve all of us... but understanding that revolution will take one leap of faith on your part... It's illuminating that the first stumbling block folks who are playing with Ajax are finding is that damned back button. At my prior gig, we had the same problem. We gave our users a complex web application that provided all sorts of cool filtering and sorting controls.... that could be instantly totally nuked by the back button... a shift reload.... you name it... ka-blooey, your state is gone. Ajax's doesn't care about the stateless nature of a web browser. Ajax just wants to quietly update your current page... and that's the second part of the first leap:

Stop thinking of a web application as a collection of pages.

The back button is not a bug in Ajax, it's a flaw in the browser metaphor.

I hearby serve notice to the following browser controls: forward, back, home, reload, and that URL field. You need to die... unless I need you. These controls are (rightfully) designed around the idea of the web as a collection of pages, but an application is collection of objects where you, the user, are guided by a well designed interface to get your job done. We don't actually need to kill these controls because they do serve a purpose, but the web application developer should be able to choose when they're available because the developer is designing the application and they are incented to do what's right for their users.

No. The perfect web application will never be a direct replacement for your favorite native application. The medium, the technology that is the Internet, will always change the content that it delivers, but web applications are still in the dark ages. Take a leap with me and think about web applications that do not compromise in user interface, that do not settle for interaction models designed around a clumsy metaphor. All the richness of the best desktop application belongs in web applications.... all you gotta do is want it.
wagon arrives in Deadwood

Scene II: Every Man For Himself

With this increased interactivity comes a few pitfalls and lets hope people don't go overboard. For the vast majority of applications it should be a case of adding unobtrusive javascript to enhance the experience (mostly to reduce latency). Things like in-place editing without page reloads are fair enough. We should think clearly about some of the additional things that are indeed possible in the user interface. As people start experimenting with the drag and drop and the enhanced user experience that Lotus K-station and various other applications were implementing 7 years ago, lets be judicious about what makes sense.

Let's not forget the basic principles of interaction design and mundane things like bookmarking, the back button and the other familiar landmarks our users have come to expect. That's not to say that the browser is the be-and-end-all of user interface design. As we "innovate" in this Brave New World, lets think about best practices from the Old Country and codify the design patterns both in terms of the coding that we actually come up with but crucially also in terms of the user interfaces we develop.

Scene III: Deadwood

We're seeking a Beverly Hills of web applications not a Deadwood Wild West of Windows applications each with their idiosyncratic notion of how things are done.

I love cursing, outlaw justice, bodice ripping pimps, prostitutes, con men, adventurers, opportunists, charlatans and all sorts of entrepreneurial adventurers as much as the next guy. Truth be told, it has pretty much been a Wild Web for the past decade. But lets not forget the downside:

  • the grim sloppiness and greyness of it all
  • the stench of human and other waste
  • the corrosive effect of smoke
  • the pervasive mud soiling everything in sight

Let's not forget the hard and brutish lives of those indentured to 19th century brothels, the brackish drinking water, the syphillis and smallpox, the rampant infant mortality and young mothers dying while giving birth to children. And then let's not mention the life expectancy in this environment and the Chinaman's pigs eating up the detritus of dead bodies as a convenient disposal method for the canny, vicious strongman who really runs the town. The Chinese saying goes "May you live in interesting times" and indeed in these times of retrenchment of IT budgets, deficits, crusades and Global Wars on something or other, these are interesting times...

Scene IV: Frontier Justice

While I loved the Wild Wide Web, I've mostly hated the monopoly-induced stagnation of the past 5 years. It was jarring and a blow to the great momentum and innovation that had been built up in the early days of the web. Now that last comment might seem like a cheap shot but remember that in the movie, Clint Eastwood's Man with No Name is treacherously playing off rival gangs of criminals and smugglers against each other like in Yojimbo so bear with me.

In any case, as Dare Obasanjo keeps reminding everyone these days the XMLHttp voodoo that is now being exalted was developed by Microsoft. And he has the right idea, Internet Explorer 5.0 was indeed the first browser to have a reasonably complete Dynamic HTML implementation where one could treat the browser as a dynamic surface that could be manipulated programmatically. Indeed Netscape and Opera didn't have monopolies on innovation and adopted lots of the great ideas from Microsofties who sat alongside them in the same W3C and IETF mailing lists where the constitutionnal council of the web was hashed out. And yes Dare, we really need to celebrate all the marshalls who were part of Buffalo Bill's posse.

Scene V: Calamity Jane

When I was developing K-station, I might have complained about the long nights I had to spend pondering the sometimes willfully idiosyncratic syntax in MSIE, the numerous undocumented quirks, the constant battles with focus, the inexplicable modal dialogs, the buggy scripting engine (what is it about scope and JScript by the way? what was wrong with calling it JavaScript? and why did everything need a setTimeout call to work robustly in IE 5.0) and don't get me started about the quirks in the Trident engine's implementation of CSS box model which has caused much head scratching and even is the focus of countless QuirksMode sites and Usenet groups. But with pickaxes, perspiration and youthful zeal to survive, having crossed oceans to escape Potato Famines, religious persecution or plain "invitations with shackles" for those unlucky to hail from Dark Continents, those of us who arrived in Deadwood were able to make do of things as we found them and actually build useful things in browsers.

Madman that I am, I tried to wrangle that beastly rodeo horse called Netscape 4.7 and almost lost my mind. I certainly broke a few bones in the process: it was a thoroughbred that couldn't be tamed. Thus the competition wasn't pretty and was even lacking in parts although they had advantages in areas other than programmability: faster rendering, multiple platforms beyond broken windows, better standards support etc. But lets be clear, once the Netscape/Sun/Novell/IBM threat was dealt with circa 1999/2000, development of Internet Explorer was plainly mothballed. It was only once the rewrite-from-scratch coal miners in the caves of Mozilla-land struck gold that we now hear about Internet Explorer 7 and that that new features will be coming in the browser which apparently can evolve seperately from the operating system.

Since I've always wanted the code that I write to work in my browser of choice, I continued to try to make our portal framework run in Mozilla-based browsers and was a frequent visitor to the Bugzilla bar-rooms in the hope that I would see progress. The Mozilla 0.7 milestone was the point at which I could say that we had a new sheriff in town; Calamity Jane no longer had to stand alone mourning Wild Bill Hickok. Certainly it was the first release in which one could see part of the K-station portal user interface show up. At that stage there were still things like an incomplete scroll model, lack of xml serialization and easy xml loading. But that lack was understandable, as Creationist Pilgrims that had read from the gospel of the W3C, the Mozilla folks would only take features that were inscribed therein. It took some convincing for them to implement items that were useful even if not New Testament material: Apocryphal books from the Latter-Day Church of Redmond.

Once the Mozilla M8 milestone arrived, the air had cleared and the new sheriff was beginning to assert himself. I was able to unleash the Mozilla support in the portal on scared product managers everywhere. People began to take notice and a little ripple of excitement run through everyone in the bar.

Scene VI: Winner Takes All

I recall a memo from someone about getting hardcore about the web in the hazy past. Was that a flashback or repressed memory? But I haven't seen a single CSS box model issue addressed in 5 years (I hope to be proved wrong in this summer's release). I've seen security updates and of late a pop-up blocker but did an asteroid hit all the browser developers in Redmond when Y2K came about? Did Lee Van Cleef ruthlessly deal with them in his ugly but efficent way? Or was it rather that a bunch of Apaches, led by Burt Lancaster, raided The Alamo?

Now all of the above was written with tongue firmly in cheek of course. I've read the "Don't Pick Fights" injunction in IBM's blogging guidelines. More to the point, I'm sure that if Netscape/AOL, Lotus/IBM, Apple, Sun, Adobe, Novell, Oracle or any of these other players had their way in the game of high stakes poker that is the technology world, their behaviour would be similar to what we have seen and often, when they have a winning streak going, that's what we do see. There are no good guys in A Fistful of Dollars, we're all empire-building cads fiddling with loaded dice.

poker game

Coda in the Commons

Unlike many, what interests me is not who wins the game, it's rather the commons in the village.

Via Kingsley Idehen, I was recently reading Brad Cox's prescient 1990 article:

Planning the Software Industrial Revolution
The possibility of a software industrial revolution, in which programmers stop coding everything from scratch and begin assembling applications from well-stocked catalogs of reusable software components, is an enduring dream that continues to elude our grasp. Although object-oriented programming has brought the software industrial revolution a step closer, common-sense organizational principles like reusability and interchangeability are still the exception rather than the rule.

According to the historian, Thomas Kuhn, science does not progress continuously, by gradually extending an established paradigm. It proceeds as a series of revolutionary upheavals[KUHN]. The discovery of unreconcilable shortcomings in an established paradigm produces a crisis that may lead to a revolution in which the established paradigm is overthrown and replaced.

The software crisis is such a crisis, and the software industrial revolution is such a revolution. The familiar process-centric paradigm of software engineering, where progress is measured by advancement of the software development process, entered the crisis stage 23 years ago when the term, software crisis, was first coined. The paradigm that may launch the Information Age is similar to the one that launched the Manufacturing Age 200 years ago. It is a product-centric paradigm in which progress is measured by the accretion of standard, interchangeable, reusable components, and only secondarily by advancing the processes used to build them.

Whereas mature engineering domains define standard products and allow diverse processes to be used in making them, in software we do the reverse, defining standard languages and methodologies from which standard components are to magically ensue.

That's the concise articulation of what those who designed the web were thinking about. This sentiment goes under many names (loose coupling, object oriented programming, service oriented architecture amongst others) my favourite embodiment is a certain architectural style but I believe that no one has a monopoly on insight into these things and indeed the marketplace will sort these things out.

The question is how do we get from the Deadwood of 1877 through the plain industrialization of Henry Ford's assembly line and the infrastructure build-out of the past century in the West to say modern day San Francisco or to the marvelous gleaming skyscrapers of Manhattan and the state of the art in Europe and the Eastern Tigers. I am hoping we don't need to go through Great Depressions and World Wars in order to step into the metaphorical 21st century of software.

The internet of course doesn't stand still and the web development world has routed around the various tree trunks that blocked the trail: just look at the new canvases that are being drawn and the GreaseMonkeys popping up everywhere. But maybe that is being a little naive, everyone ultimately has to pay the bills. Maybe we are all inward-looking criminals and smugglers despite our protesting our good intentions and adherance to standards. Who knows?

What I'm really looking for, and I think the ultimate users, those citizens of San Miguel, are looking for, is an escape from the Wild West. We're not Searching for John Wayne or like Morgan Freeman seeking Forgiveness for our partners, we don't want to Dance with Wolves like Kevin Costner (his last decent movie, remember what followed: the execrable Waterworld and that thing called The Postman?). At the risk of sounding like an anachronistic "Why can't we all get along?" Rodney King, a character that our man Clint would surely clown with a characteristically raised eyebrow, how about this:
Let's try to build a Wonderful World-Wide Web. Lets try to build it together.

Wild Wide Web Soundtrack

Essential tunes to this movie
I used to live downtown 129th street
Convent everything's upbeat
Parties ball in the park
Nothing but girls after dark
We chill nobody gets ill
In the place we call the hill
But if you try 'em
That's when they will
Get wild but they don't fight they kill
At the...

Wild Wild West (Repeat 4x)
How ya like me now

Credits (a chat transcript)

James M. Snell Mixing metaphors can be dangerous to your health ;-)
Koranteng ;-)
K    6 million ways to die: choose one
JMS    Death by Back Button?
K    the Bad Guys Always Wear Back
JMS    how Refreshing :-)
JMS    guess we can only move forward from here
K    absolutely... the quote for which I am most famous during my time on Freelance Graphics was
"Lets not give users enough rope for them to shoot themselves in the foot"
Mixing metaphors is my kind of thing
JMS    heh. it's not the users I'm worried about. it's all the darn developers
K    yep... and it comes down to frameworks and wikis and faqs and View Source ... and ultimately to Googlejuice: when Jane Programmer does a search they had better get good results otherwise they'll be hung high by their copy-pasted stuff
JMS    indeed

See also: The Unloved HTML Button and other Folktales

File under: , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,


Michael said...

Bill Munny: Hell of a thing, killin' a man. Take away all he's got and all he's ever gonna have.

The Schofield Kid: Yeah, well, I guess he had it comin'.

Bill Munny: We all got it comin', kid.

Anonymous said...

Yeah, It is so easy to proclaim that the back and reload buttom should disappear, however if you choose to play within the browser playground, then you must play by its rules and design your application with the dreaded back button in mind. Hell, I have hit the back button several times on applications that I KNOW as a developer will not get me the results I want, yet I go ahead and do it anyway, because the concept of being able to go back is a powerful one, and I keep hoping that one glorious day, I am going to get what I expect when I hit the back button.

Anonymous said...

As far as I know it was Netscapes fault that MS had to call it JScript. I may be wrong but I thought it was when Netscape was still dominant and they somehow prevented them from using the name.

Koranteng said...

I think you're right about Netscape and the JavaScript trademark and this only serves to underlie the point that there are no good guys in Deadwood, we are all would-be monopolists.