Macromedia Adobe Flash is a stupid idea that has been implemented badly. Hell, since day 0 the entire concept of browser plugins has been shaky at best. Seriously.
Plugins ∞
Now I do truly appreciate the concept of plugins for allowing multiple non-traditional objects to be on a web page. Also, there are things you just can't do with HTML/etc which require a robust programming language to accomplish.
There's the real problem. If your web content requires a robust programming language to render it, maybe you're doing something wrong. Two things to elaborate on.
The number of steps between the programmer and the user ∞
Here's how things have traditionally worked.
Software -> User
This whole plugin concept really complicates things.
One, if you're piping source code across the net, you're expecting your client to compile and execute that code. Even if the software is pre-compiled before being sent, the plugin framework is an extra layer of processing which the client is forced to go through. This guarantees a performance impact, especially when multiple different plugins or plugin versions are executed at once. Nowadays that problem is vastly compounded with multiple browser tabs on multiple sites at once, although that's more of a user issue than anything.
Browser -> Plugin -> Plugin software -> User
Client-side vs server-side processing ∞
Two, if you find yourself needing to do something so complex that you can't achieve it with server-side programming, maybe you're doing something wrong.
These days the internet is so popular. Oh hell, popular isn't even the word is it? The internet just "is". Because of that pervasive popularity, there are legitimate issues with server-side processing. Putting more of that processing client-side is a good idea since there are ample free cycles on user computers, and host computers are completely overwhelmed.
CPU cycles ∞
Now let's talk about those free cycles. I used to have some. But there is software being released in Flash. Let me clarify that. There is software being created out there -- complex software which should be extracted from the web browser and made into a separate download for a user.
This is "single tasking" software -- software which a user will have their complete attention on. Why would there be anything else presented to them if they're not interested in anything else? Why give a web page at all? Just make it a download.
This is so much the case for Flash games.
I don't mind the idea of a whole browser tab being taken up by a plugin, like PDFs. This is (theoretically) largely the same as having downloaded the document and read it in an external program. The additional overhead is for whatever it took to create the browser tab. This also assumes that the plugin is comparable to an everyday desktop application.
Programming quality vs framework quality ∞
There's the issue I'm having with Flash. Plugin software is nowhere near the quality of downloaded software. Having avoided all that nonsense like the plague, I don't know enough to really speak about the programming side of things, but it does seem to me that the actual plugin framework itself is to blame, and not the individual programmers. I say this because it seems that all Flash has the same issue. It also seems to be a common issue.
Flash has wildly fluctuating CPU usage, often spiking up to 100%. This is a serious problem.
Playing a clone of an Atari asteroids game should not require 2 GHz. Something is definitely wrong there.
I can almost deal with the plethora of bad hobby-programmers making shitty software. But I absolutely cannot deal with the host programmers making a shitty plugin, plugin-execution framework, web browser, GUI, drivers, kernel and anything in between.
Adobe Flash has been a piece of shit since day one. The pungent odour is enhanced now that there are so many "games" being created for it.
Linux "support" ∞
I can appreciate Adobe pretending like Linux matters, and creating a port to it. I really can. Mind you, i'd prefer they support an open project, so that real programmers who care about the project can do Adobe's work for them. A community project would put out a vastly superior product.
I realize that there's Gnash. But it "mostly" supports flash seven, with some eight and nine. Macromedia Flash 7 came out .. what was it, September 2003? Seriously people, would you expect me to use that? Plus, it's got the GNU brand, so it must be crap.
Monopoly ∞
There was a time when there were multiple plugins out there. But Microsoft cut a deal with Macromedia and included it with Windows 95 by default, screwing a lot of things up. Even Microsoft regrets that (see Microsoft Silverlight).
There is so much legacy crap out there that every new generation of programmers and every new version of Flash has been building on top of the graves of the old content and versions.
I wouldn't mind if the future generations of software and programmers actually improved. But I guess that's too much to hope for.
Firefox 100% CPU usage ∞
So my problem is simple. I have a self-throttling fan for my CPU. It picks up speed whenever it needs to. When I play a Flash game, it frequently goes nuts. My CPU usage is crazy because of Flash games.
I've seen all kinds of crap out there, and I've done some experimentation but have not been able to fix this. I think the problem is Adobe's programming.
My next step is to blame Firefox itself, but I really don't want to have to use some lesser browser. Maybe I will, just for some things. It would be like an application launcher to me.. only used for this purpose.
I guess I'd have to implement hosts file and/or proxied ad-blocking though. I can't stand ads.
Resources ∞
- Adobe Flash 10
-
Blog: Adobe Flash on Linux (sometimes updated!)
Others have had similar issues with Flash being closed source and still relied on to run so many games. A mailing list has been recently set up: http://groups.google.com/forum/
Update ∞
I did some additional updating to Firefox and to some Flash-related libraries, and things are a couple of percentages better. My fan doesn't go crazy so far. Maybe Firefox 3.5 will help even more. Supposedly it'll have some speed improvements. Their code has historically been such a tangled mess that it's not surprising that speed improves as they detangle things.
Yes, I know about flash and ad blocking, and I've tried tweaks to cache and even disabling Java to no avail. This is specifically a Flash issue.