Has Google Wave “maxed out” Web 2.0?

As any software developer will tell you, there’s a limit to the number of times you can hack on a codebase before it’s no longer sustainable. When a piece of software, protocol, or standard of some kind is conceived, it is done with assumptions in mind. These assumptions ultimately lead to limitations, and those limitations ultimately necessitate the need to come up with clever workarounds or, in the worst case scenario – hacks.
This leads me to a thought I had while trying to get the office Internet connection to work (read: configuring the network to use OpenDNS because our ISP’s DNS servers woefully unreliable) when a realization hit me. The Internet, as a whole, from the basic protocols driving the data through the tubes, all the way to the scripting languages rendering a good chunk of what you’re seeing on this page right now, is one giant, heavily error prone, endlessly band-aided hack.
Hindsight is 20/20
When the original group of folks sat down and came up with the idea of HTML and a browser, they could have never imagined something like, say, Google Wave one day running in that browser. However, here we are today, playing with a beta version which represents over two years of work by some of Google’s most brilliant engineers… and it barely works.
Yes, I did notice the clearly displayed beta tag in the corner, and I’m sure eventually Google will apply enough duct tape and chewing gum under the hood to give Google Wave the illusion of stability (Gmail and Google Maps both run great today), but the fact of the matter is that the brilliant, advanced technology powering most of the Internet’s slickest, most cutting edge applications just isn’t all that brilliant or advanced… and it’s starting to show in a big way.
The March of Progress is More of a Crawl
Web standards move at a glacial pace, but that’s only half the equation. The other half are the browsers that move even slower. The folks that govern web standards could release a radically up to date set of standards that have applications in mind, but that doesn’t mean developers would ever be able to actually use those standards as they are limited by the lowest common denominator of support in the browser market.
In a world where a decade old browser (that had poor standards compliance when it launched) still commands a considerable market share, where does that leave the future of web applications? Even if we could wipe Internet Explorer 6 off the face of the earth tomorrow, today’s most bleeding edge standards are still simply additional hacks tacked onto an already rusty frame.
Developing Google Wave’s interface as a desktop application would be a trivial task relative to the amount of effort it’s taken so far just to get Google Wave to run within bare reason in a browser window. Why?
Browsers Are Terrible Application Platforms
1 – HTML, CSS and Javascript are tools designed for displaying and manipulating flat content, not tools for building interfaces and applications.
Wikipedia is the closest realization of what the Internet and the associated standards as a whole were designed to do – deliver content in a readable format on screen.
2 – Browsers are designed as content renderers, not application platforms.
It’s the browser’s job to take that content delivered from a web server, read and understand the markup, and display that content on screen as the author intended it to look. It wasn’t meant to manage multiple document interfaces, generate non-standard UI elements (tabs, grids, taskbars, modal windows, etc), or maintain persistent, open connections to servers.
3 – Browsers are the number one attack vector for malware
…and for good reason. Being able to deliver executable code right onto a user’s machine opens near endless avenues for attack. That said, the browser locking web applications out of all system functions like local file storage also severely limit what an application can accomplish.
Gentlemen, Start your Hacking!
Which leads us full circle – what is it about Google Wave that so perfectly highlights everything wrong with today’s web applications?
In a word: Javascript.
Just about everything done in web applications is accomplished through the horrific abuse of Javascript. You may have noticed a lot of talk in the browser world about who has the “fastest Javascript engine” and this is why.
Every single element in the Google Wave interface is generated dynamically by Javascript which is read and executed – line by line – by the browser. As you might imagine, this is slow. Since Google’s applications so heavily rely on Javascript, they went as far as to release their own browser with a dramatically faster Javascript engine in order to kick off a Javascript performance war in the browser world.
Furthermore, to ring in the launch of Google Wave, Google has gone as far as to offer a “plug-in” for Internet Explorer that basically just shoves Google’s browser into the Internet Explorer interface. This is exactly how desperate Google is to force bleeding-edge standards into the wild.
The second major limitation Google Wave is trying to address is how to bring real-time communication into the browser. The way this is accomplished today is through the use of making Javascript continuously poll a server to ask if there’s anything new since the last time it asked. As you might imagine, this is also slow and error prone. Alternate techniques have been addressed to get around this limitation where a server is configured to allow an abnormally long request to linger (essentially endlessly left “loading”). This allows Javascript to ask a server if there’s anything new, and instead of a simple yes or no, it pretends it’s answering the request very, very slowly.
This is better, but still not perfect and is hard on web servers which are tailored for delivering yes or no answers to requests and quickly moving onto the next, and not practical to implement in the vast majority of server configurations.
The Solution
After a rant like that, I’m sure you’re expecting a brilliant, well thought out plan to fix all our woes. Unfortunately, I don’t have one. Today’s Internet has grown so organically and has responded in new, interesting and clever ways that it’s almost impossible to judge where it’ll turn next. Any new standards that are concocted will eventually become insufficient for the unexpected developments the Internet will churn out.
Google Wave is ahead of it’s time, but there’s nothing wrong with that. As a web developer, I’m pleased and excited to see a high-profile application like Google Wave pushing the bleeding edge of what’s possible in the browser.
Just like the original computer programmers who toiled endlessly, manually writing processor instructions and directing bytes of memory, our new generation of web developers toil with inconsistent standards, rudimentary tools and a decade old browser that won’t die.
Things will get better as long as we have companies like Google willing to invest millions into making the browser a better and more viable application platform.
Things will get better as long as we have groups of developers in open-source communities improving frameworks that make us forget we’re writing massive applications with interpretted, fragile, inline script.
Things will get better as end users demand faster, more advanced applications through their browsers.
These are exciting times. Unlike those who drafted the original HTML spec, we can imagine what tomorrow’s Internet will be like. It is this imagination that will continue to fuel innovative hacks and keep our beloved Internet hobbling along.