Last week I applauded the decline of Flash and other proprietary RIA (rich Internet application) platforms, particularly with HTML5 promising improved support for interactivity and multimedia. Not everyone agreed with me. And like so many tech debates, there's a flip side to the HTML coin, as I was recently reminded when I took on the job of revamping a Website for a friend's business.
My friend's original Web developer had gone missing, leaving him in a lurch. With new products due to arrive and no way for my friend to update the site, it fell to me to pick up where the last developer left off. Like so many small Websites, my friend's bore all the earmarks of having grown organically, beginning as simple "brochureware" and gaining new features over time: a contact form, photo galleries, a blog. Unfortunately, the result was a mess.
[ The Web browser is your portal to the world -- as well as the conduit that lets in many security threats. InfoWorld's expert contributors show you how to secure your Web browsers in this "Web Browser Security Deep Dive" PDF guide. ]
Nothing seemed to work as advertised. If I copied the site to a new server, it broke. If I moved it to a different directory, it broke. If I tried to tweak the primary navigation, the page layout blew up. If I disabled a JavaScript function, suddenly all the images stopped loading. Each new feature was bolted onto the last until the whole site was like a kinetic sculpture made of duct tape.
And that's just the problem. In my experience, for a large segment of the Web, this kind of morass isn't the exception; it's the norm. Web standards may offer an open alternative to platforms like Flash, but as a foundation for sane application development, they still leave much to be desired.
An embarrassment of standards
Just for starters, there is really no such thing as a Web app built with HTML -- that is, not HTML all by itself. Choose any random site and it's likely to mix HTML with CSS, JavaScript, SQL, JSON, XML, and a server-side scripting language such as PHP, often all at once. That's a lot of languages for any developer to juggle.
While each of these technologies is defined by standards, actual practice is another matter. HTML tags that behave one way on Firefox may behave differently on Safari, and CSS support varies widely between browsers (particularly where Internet Explorer is concerned). Web developers must constantly balance between supporting the largest possible audience and delivering the user experience the client wants.
One way to restore order to any Web project is to stop reinventing the wheel. Web technologies are a long way from infancy. A wide variety of frameworks and toolkits -- many of them open source -- are available to help eliminate the drudgery of Web development and ease cross-browser compatibility.
But the problem with frameworks should be familiar to any developer by now, particularly to Java developers. Remember when there were just one or two Java application frameworks on the market? Now there are dozens to choose from -- to say nothing of all the tools for other platforms, such as PHP and Rails.