Do you like flash? Depending on the readers, the answers may vary. Increasingly, we see flash being used almost everywhere, from ads on CNN to full blown applications you see at car dealers’ websites, where the entire sites are written in flash movie clips.
Before jumping into my conclusion, let’s first look at the history a little bit. Back in the early 90’s, when internet started to become popular, people were primarily using slow internet connections (a 14.4Kps to 28.8Kps was the standard, this translates to a maximum download speed of 1.5k/s to 3k/s). The web we knew back then were mainly for sharing text-based information, and most of the browsers supports little more then standard HTML. You probably still remember using gopher (a document sharing protocol with design goals similar to that of HTML) back then.
The Internet we knew have changed dramatically. Today, high speed internet almost becomes ubiquitous and most of the internet contents are no longer text-based. Images, movie clips, streaming audio and video are almost everywhere, you can hardly find any plain HTML pages around any longer. All these changes are the direct results of the increased bandwidth.
HTTP is elegant by its design. However, developers wanted more control at client side to amortize the delays caused by posting every request back to the web server. In the last fifteen years or so, we have seen numerous attempts to archive the responsiveness of web applications. Client side scripting (e.g. Java-script) offers one such solution. Today, the majority of websites use at least some kind of client side scripting to make the website more user friendly (web menus, etc.). Java applets is another example of bringing the desktop features to the web. And then Macromedia (now purchased by Adobe) released Flash that aimed to challenge the way webpages were traditionally designed. Microsoft‘s ActiveX also serves similar purpose… All of these technologies utilize client side processing.
Many websites have traditionally use flash mainly for advertisement, but recently more and more websites started to use it as their main user interface. On the plus side, these Flash based website give users a desktop-like experience. And Flash, like Java applets, can be run on both Windows and Unix (Linux) platforms. The downside in my opinion however is that these flash based websites violated the basic rule of the World Wide Web.
First, flash based websites usually suffers from sluggish performance. Like other client technologies, the entire object must be shipped to the client before the object can be activated. Loading a flash based webpage, even with high speed connection, can be significant slower (tens of seconds) then the load time of typical webpages (a couple of seconds). Users must wait before they can even tell what they were waiting for. This situation becomes worse for those who use slower internet connections (e.g. alp).
Second, flash based websites are not well integrated with browsers. Typically, flash based website provide their own navigations, and if you are used to the forward and backward button on your browser, you are out of luck. And the font size on these pages are fixed, if you think they are too small to read… too bad, you can’t change the font size via your browser. And the screen size of the flash object is usually fixed, what if you have a tiny monitor?
Third, do you know that all those bells and whistles you see use the processing power on the PC you use? This might not mean much to you. But if you usually have a few dozens of browser windows open at a time, you will notice that your computer slows down dramatically. It is those client side flash animations that are sucking up your processor cycles.
Last but not least, the idea of a desktop like experience on the web is cool, but in reality, if you really need such user experience, why not create a real application? While it is true that you can achieve better compatibility when delivering your application through web browsers, it is unlikely that your application can achieve the same level of performance. Also, unlike Java applets, which uses Java and the programming model is uniform for Java developers, Flash uses its own scripting languages and is harder to integrate into existing systems. To me, flash will still be here for the foreseeable future. But it is unlikely to replace the traditional webpages we know for the past fifteen years. Once a while, you might see a new website using flash as its main interface, but in the long run, it will still be limited to web ads and illustrations.