Wednesday, March 05, 2008

Is It The Beginning Of The End Of The Web As We Know It?

A few weeks ago, I "completed" the creation of a small web site for my wife's photography business. (The word "completed" is in quotes because, like most web sites, it'll continue to grow and evolve as time passes.) I wrote the HTML, CSS, and JavaScript by hand. (I was warned about the terrible code generated by WYSIWYG web tools.)

The experience was terrible.

Admittedly, I had written some HTML, CSS, and JavaScript code before, so the technologies weren't completely new to me. And I've been doing professional software development for almost 20 years, using technologies like C, C++, and Java.

Still, the experience was terrible.

Getting the HTML and CSS to render correctly in IE6, IE7, and Firefox was annoying, to say the least. Fortunately, my friend Rick was nice enough to briefly test drive the site in Safari and Opera. (Thanks, Rick!) Sadly, some browsers will probably remain untested forever (such as Konquerer).

It all seems to render and work correctly -- for now -- but even minor changes would require another round of tests in a bunch of web browsers. And soon, it may require testing in yet another web browser: IE8.

It shouldn't be this hard. To be blunt, the state of the web -- from a developer perspective -- is that it's completely broken. Yes, you can do things -- amazing things -- but the effort required is far and above what it should be.

It's my opinion that HTML and CSS are just plain bad technologies. They grew far beyond their original design goals and inevitably had to be hacked to do more complex and interesting things. JavaScript isn't too bad, but since there's no easy way to thoroughly test it without actually sitting there and testing every possible code path, the possibility of run-time failures are always looming. (OK, there are tools to mitigate this risk, but they're complex to setup and use themselves. A workable solution for a big corporation, but not so ideal for smaller operations.)

HTML 5 will only muddy the waters further. Sure, it'll have cool new features, but as a result, it'll make HTML even more complex, and then web developers need to start deciding how and when it's safe to use those features. Wait until IE version N supports it? Wait until IE version N supports it and has > 50% market share? Tell your users they must use a particular browser? Do some browser capability sniffing, and have a < HTML 5 path and a >= HTML 5 path?

Bah!

I'm starting to wonder if this is the beginning of the end of the web as we know it. Technologies like Flash, which (theoretically) work the same on every browser, are appealing more and more, because your code is much more likely to work the same, whether it's Flash-on-IE6, Flash-on-IE7, Flash-on-Firefox, etc. (Right about now you're probably thinking about how much you hate Flash ads. Yes, they're horrible and obnoxious, but that doesn't change the fact that Flash is a great technology for creating a rich, interactive web site.)

Sure, some people (a surprisingly small percentage, actually) don't have Flash installed, but losing those few users might just be worth the substantial time saved in development. Besides the easier development and portability angle, you also get better performance (have you seen how slow some of those "rich widgets" JavaScript libraries run, even on blazing fast, modern PCs?), a compiler (which will catch many bugs at compile-time instead of waiting for your users to discover them at run-time), and a huge standard library which include things like rich widgets, persistent socket connections, animation, etc.

Perhaps best of all, Flash is well supported by the Free Software community as well. You can download and use free Flash IDEs and compilers, or you can use Adobe's excellent commercial tools.

Google is trying to sidestep the issue using Google Web Toolkit. GWT is a neat technology that "compiles" Java code to HTML, CSS, and JavaScript for you, helping you avoid all sorts of trouble. A lot of Google's nice web products are written using GWT. (One of the big caveats here is that you really need Java on the server-side too, in order to make GWT shine, but you can do some impressive client-side only things as well. Still, it ends up being a big problem for the many web sites that use commercial shared hosting.)

Even Microsoft seems to be smelling the stink of death on pure HTML, CSS, and JavaScript. They recently released a Flash competitor, Silverlight, which will apparently be bundled into IE8 (if you can't beat 'em fair and square, just bundle it!). The Open Source community has responded with Moonlight, which aims to be a Silverlight clone that'll run on free operating systems such as Linux.

Flash. Google Web Toolkit. Silverlight. Moonlight.

The existence of these products by large, prominent companies should tell us something: They're aware of the weaknesses and limitations of traditional web technologies, and are starting to push alternative technologies with success. Developers win, users win, and the evolution of the web takes a nice leap forward.

Are we looking at the beginning of the end of the web as we know it? If so, I couldn't be happier about it.

3 comments:

Unknown said...

Your reason for not using WYSIWYG tools seems to be poor... who cares how gross the code it generates is? Perhaps I am misunderstanding you there. Additionally, I am not sure why you bothered with anything but IE (latest) and FF (latest) and why "close enough" wasn't close enough. Did you test Netscape too? Make sure it didn't crash Windows 3.1? You can work forever on taking care of customers you will never have but it hardly seems worth it. Can you track the users that hit your site for what browser they are using? I bet none use anything but IE and FF (except Rick).

I am a bit confused as to what you think you will be able to do on this new fancy web in that you can't do now. The only thing I can see changing any time soon is that "low cost" web sites will become fancier. Is that enough? Is that anything at all?

So, here is a follow-up question for you. Will Silverlight kill Flash? Maybe it will because it seems to support more languages but maybe not because Flash has lots of traction... then again, evil empire, hard to bet against them long term. Opinions?

no demand article

Ed Jensen said...

@Adam:

Re: WYSIWYG tools, I actually did use NVU for a while; however, I found that the preview pane in NVU didn't necessarily match how IE6 rendered, which I considered a big problem. Plus, NVU never quite did everything I needed it to do anyway, thus I found myself dropping down into the HTML code anyway, on a pretty frequent basis.

Also, it was difficult to keep the common parts of multiple web pages in sync. I found myself having to open each of a dozen pages one by one, making an identical change (and hoping I didn't make a mistake), save them, test them, etc. I had the same problem when I had the site hosted on Google Pages.

As it turned out, doing it by hand was a little easier, since I could change one page and copy & paste the results over to the other pages. Less chance for error.

Really, though, this just underscores yet another weakness in HTML in general: It really should have some kind of include mechanism, as in:

<include src="header.html">
<include src="sidebar.html">
<!-- Content here -->
<include src="footer.html">

The fact that HTML has been missing such a basic feature from the beginning really makes me doubt the skill of the people working on the HTML standard. It's almost as if they never design web sites in real life, and only design things from a theoretical perspective.

Apache supports something called Service Side Includes (SSI) which does it. Perhaps I should look into it, since both my test web server and production web server are Apache.

Also, supporting IE7 (latest) and not IE6 would be foolish, in my opinion. Last I checked, IE6 still had a larger market share than IE7. Certainly supporting the world's most popular browser is highest priority. While I consider Opera testing a bit pointless, Mac and Safari are enjoying a kind of renaissance and I think it's important to test on that browser, too. Comparing Safari to Windows 3.1 is kind of silly.

I bought cheap web hosting and I'm not sure if I get site stats as a result; I'll have to check. The numbers for OS and browser could be interesting.

What you can do with technologies like Flash and Silverlight are far beyond what you can do with traditional web technologies. OK, maybe I wouldn't be using those fancy features, but at least being able to discard worries about browser compatibility would be a big win.

I'm really not sure about Flash vs. Silverlight for the future. That's a good question and raises a valid concern: What happens if you choose the technology that ends up losing market share?

Since Microsoft can and does leverage their monopolies to their advantage on a regular basis, it's hard to argue that Silverlight won't enjoy at least some success, since it'll be shipped with IE8. And open source is already chasing Silverlight with their Moonlight product.

Flash dominates massively now, but it'll become increasing hard for Flash to compete with Silverlight since Silverlight won't require a separate download and install, and an open and free alternative (Moonlight) will be available for those people that don't use Windows.

Anonymous said...

"...who cares how gross the code it generates is?"

Try supporting that crapy code over the years to come. Try doing something beyond what the code generator offer because you need something the code generator doesn't offer. Then with that custom code in place, try using that code generation tool. You can't. WYSIWYG tools are for non-programmers wanting to join the mix with the simplest of applications. Real programmers should know better than to use a WYSIWYG tool. A seasoned programmer avoids them like the plague.