воскресенье, 22 августа 2010 г.

My moaning about Flash (why I don't like Flash, but have no choice)

There were many talks about Flash lately. I think talks are coming to an end, but nothing will really change. It looks like at the end we still won’t see Flash on Apple’s devices, but Flash will not change or die.

This is sad. Why?

Here is my story, it is maybe a bit longer that it should be, but I think it will help reader to better understand my thoughts.






The story

At the beginning of my career I was desktop software developer. Web applications were not so widely spread and their interactiveness and complicity were not like in web applications today. But number of clients wanting web applications grew every day. Web apps became popular.

Most of the projects still could and should be implemented as a normal desktop application.With better UI, speed and error handling, but everyone wanted a web based application. Typical project was some in-house software used inside one company and often on one PC, but it had to run in browser.

I’ve tried to persuade clients that they don’t need web application and instead we can create a great desktop application, but clients just wanted a web app. They’ve provided no objective reasons, they just wanted it to be a web application and that’s it.

I had no choice but to start creating web applications and after desktop development I've lacked many things. This was just so different, comparing to developing some WinAPI32 or MFC application.
I’ve discovered ActiveX as a workaround for rich user interface and even done several successful projects, but then FireFox and Opera became enough popular so you couldn’t just ignore them. Of course there are many other reasons why ActiveX is really a bad idea.

Another solution was Flash. At first look it was just perfect for creating rich user interface applications. But here are my reasons I’ve hated it right from the start (please remember that I was desktop developer when I’ve started using Flash, this explains most of those first reasons).

First Reasons

1. You need to install Flash plug-in in your browser
This means that user has to download application and install it. If user can do this, why don't he just download my application and install it? It will be smaller and will run much better. In most cases it will take less time to develop such application and support.

2. You have to download significant amount of code to run your Flash application
So you still have to download binaries. Huh?
The most popular reason for choosing web application instead of desktop is that user doesn’t have to download and install anything. But in fact, at first user installs Flash (if it is available for his platform), then downloads same amount of bytes as if he downloaded desktop application. And then if the cache expires or is turned off user has to download this again and so on.

3. Creating Flash application
Even if you skip first 2 reasons, it is real pain to write Flash applications.
Actioncript. What? Why don’t you use some existing cool language?
Backwards compatibility. Who needs that?


Back to story

This is why I really hated working with flash about 7 years ago. But I was young and really believed that web sites don't have to be so complicated if you can download a special application for that.

Now I don’t think so(unless we're talking about mobile devices), but the reasons remain, maybe except #2 because today’s web applications use huge amount of JavaScript. You don’t amaze anyone with a 1Mb JavaScript file used in web application.

So I’ve decided to go with HTML, CSS and JavaScript. It was still very different from desktop development, but after some time I’ve found out that everything is not so bad.

Today my main development area is web development. I really love using cool stuff like jQuery, AJAX and discover new CSS goodies. Everything you can do with Flash you can do with HTML and JavaScript.
Except one thing, and it is multimedia. If you want audio/video player then you have to use Flash. HTML5 is not ready for production use, because of many reasons, although it looks very promising. Silverlight is installed on lesser amount of computers, so it is not a serious competitor right now, although guys from Microsoft done great amount of work.

So you simply forced to use Flash.

In my company we usually try to minimize amount of code written in Actionscript and running inside Flash container (see reason #3 to see why). If it is an audio player then all you have is 1x1 px Flash container and everything else is written in JavaScript, so Flash is only doing the part why we have to use it. It plays media.

In the end you have a web site with very rich user interface written completely in JavaScript. Everything works really fast and uses small amount of memory, but then at some point user presses "play" button and opens a part of web site with that Flash player, which does nothing except playing streaming audio file from some CDN. And you get plus 150-200 Mb of memory wasted, everything starts to work slowly, your browser stays in processes (in task manager) after closing and etc. So here is my final and main reason why I hate flash. 

4. It is slow and heavy
I don’t see reasons why it has to be, but it is very slow and very heavy. They had great amount of time to fix this, but instead they’ve just enjoyed their monopoly. This is just wrong.
So I’m eagerly awaiting when either Flash will become better, and we will forgive its past sins, either it will die and something better will take its place.

P.S.: The main purpose of this post is not to moan or tell everyone stuff they already know. The main  purpose of this post is to show that there are objective reasons why someone can dislike Flash. It is not about Apple, Ads or anything like that. It is about monopoly. It is about guys from Adobe who sit on their chairs and don't listen to developers. It is about developers who cannot chose. We choose programming languages, platforms and operating systems, we even choose coding standards and variable naming. But if we simply want to play audio file in a way so that most of the users can listen to it we have no real choice.

Комментариев нет:

Отправить комментарий