It might come as a bit of news to the majority of the current young programming crowd, but the traditional (web one-o, so to speak) web applications have not been considered “legacy” just a short while ago.
If one was to trace back the evolution of the GUI development, one needs to start with VB. As soon as first true mass-produced OS (Windows) started its march across the world’s desktops, it became evident that slapping together GUIs using convenient visual builder tools has become a popular thing. Visual Basic has not pioneered visual GUI builders and code-attached-to-buttons paradigms, but it was the first environment to bring this kind of programming to the mainstream.
Very soon people realized that there is more to GUI building than a GUI builder.This kind of programming requires a special kind of professional, one who can carefully design the screens and control the overall user experience. In addition, any sofisticated “screen” starts living on its own, starts revealing the personality of its creator and of the application beneath. In order to take full advantage of all the wizbang features we programmers put in those user screens, our poor users have to learn each screen’s quirks and tips, understand ways in and out of special, application-specific situations. Back in the client-server times, it was fully understood that before your shipping clerks, your telemarketers or weapon operators can use your brand-spanking-new UI they will have to be trained.
Tools and skillsets matured and complex, user-intensive applications had been built. But then the web came and changed everything.
On one hand, the interface features delivered through the basic HTML were just primitive subsets of the “rich” GUI tools already available to the programmers of the late 80s and early 90s. And the hassle one had to go through to process and validate user input via CGI semantics made building GUIs rediculuosly expensive from time-and-labor point of view.
But on the other hand, the whole simpleness and ugliness of web GUIs made them more accessible and appealing to the general computer-using crowd. Guess what, you don’t need to teach your grandma how to use amazon.com’s “screens”. It is order of magnitude easier to get your new book from Amazon than cancel appointment in Outlook or navigate any other “rich” client.
The roaring 90s were fueled by dotcom dollars and suddenly validated the idea that it is ok to have a poor GUI toolset and spend days developing every simple screen. As always, mediocracy ruled.
There have been attempts to add “richness” to the standard HTML “experience”. Macromedia Flash brings us all the way up to the level VB programmers enjoyed in 1992. And if someday Sun people pull their collective head out of their collective asses and deliver simple to install and thus usable Java on the desktop, it will rule the world. Meanwhile the current meme is the AJAX – the attempt to raise Javascript silliness to the level of application frameworks.
I first used “AJAX” (without even knowing it!) back in 1999 when I delivered an app where user page did not refresh and instead was using a hidden frame to send and receive pieces of comma-separated “XML” to and from the server. It was the solution that particular app called for and just like everything else, I considered “asynchronous Javascript” to be just a tool on my toolbelt. I never thought that this simple concept can be elevated and generalized as it is today.
Today, AJAX can be found in two major flavors. First, there are “experience enhancement” scripts: pages fading away, buttons changing colors and captions, etc. Second, there are the true UI toolkits: smart form fields, typeahead text boxes, self-adjusting dropdowns. The first kind is often annoying and even can scare an unsuspected user when a static page comes alive.
The second kind – AJAX as a king of smart, “rich” UIs, is the trend in question. Amazingly enough, it brings the developer costs even higher. Not only UI remains largely in hand-coded HTML, now there is a giant sub-presentation layer where XML fragments need to be carefully manipulated by Javascript. Despite using glorifyed associative arrays in a way which is not entirely unlike object-oriented programming, Javascript remains a language severally challenged when it comes to developing large, complex code base.
Most importantly, the complex AJAX UIs bring the curse of UI designers back to the web. Just like it was necessary for the users to be trained to use a complex client-server screen of yore, AJAX screens are often too “brainy” for a casual user and as such not suitable for a larger web.
AJAX development is facing this dilemma: AJAX is perfectly fine for developing those million-dollar phone books on a corporate intranet. But so are (and were)VB, Powerbuilder, Oracle Forms, Java(applets and Web Start), etc. But corporate world and its cash-starving internal departments are far less willing to tolerate hand-polishing screen crafting typical for AJAX.
And while there are plenty of money available for “customer-facing” apps hosted by old entrenched dotcoms and flashy newcomers, wide-scale usage of AJAX and ensuing comlexity of the UI will scare away the very customers those apps are facing.
So my predictions are that AJAX will not get traction necessary to change things in the truly disruptive way. And as far as the whole Web 2.0 thing goes, I always believed that the only real, internal purpose of the IntraWeb prolifiration of the 90s and 00s was to get an IP address in every home and on every phone so new, truly interactive and distributed applications may flourish. IPTV, podcasting, Bit Torrent, social networks, etc. are what define Web 2.0 for me and not AJAX.