LWN.net Logo

Flash Player 9 Beta for Linux is available (ZDNet)

ZDNet covers the release of a beta version of Adobe Flash Player 9 for Linux. "To quote someone well known, 'hell froze over' and we finally released a beta of the GNU/Linux version of the Adobe Flash Player 9 (look for the "Linux version" download link). It did take more to get to this point than you might expect."
(Log in to post comments)

Hell froze over?

Posted Oct 19, 2006 16:07 UTC (Thu) by proski (subscriber, #104) [Link]

It only shows sheer brokenness of the Flash sources. Cannot they keep Linux compatibility throughout the development process? Cannot Adobe afford to run Tinderbox? If some Linux incompatibilities crept into the code, why did it take months to iron them out? Hell indeed.

Hell froze over?

Posted Oct 19, 2006 17:02 UTC (Thu) by k8to (subscriber, #15413) [Link]

I think much more telling is when the blogger took the trouble to complain about library issues slowing them down. They were linking against libfoo.so in general, instead of libfoo.so.X, which (surprise!!!) did not work.

Going to the trouble to make a special explanation of what's taking so long, only to have the reason for delay underlines your incompetence in developing for the operating system, that's some serious egg-on-face.

Hell froze over?

Posted Oct 19, 2006 17:28 UTC (Thu) by hawk (subscriber, #3195) [Link]

Yes, I saw that too... It was just awkward to read.

They seem to have made some significant improvements over the old flash plugins behaviour, though...

Hell froze over?

Posted Oct 19, 2006 17:03 UTC (Thu) by hawk (subscriber, #3195) [Link]

I think it's pretty clear that they more or less make the Linux version as an afterthought.

It does indeed seem, from the outside, like they have more or less separate source trees for the different platforms, or at least not nearly as much shared code as they could have.

Anyway, at least this flash 9 beta plugin for x86 Linux appears to be much less broken than the old version 7 plugin, so that's good.

Hell froze over?

Posted Oct 19, 2006 17:39 UTC (Thu) by elanthis (subscriber, #6227) [Link]

For one, they're completely changing all of the underlying technology used for the Linux version. It'd be like creating a Qt version of Abiword. Sure, the code is cross platform, and sure, there's already a Linux, but it would still require an absolutely massive amount of work to finish.

Second, a lot of the technology Flash wants to use simply isn't cross platform. Multimedia layers for example are almost entirely non-crossplatform right now, with just a few exceptions. (Like Real/Helix, but the who the hell wants to use that?)

The GUI toolkits on each platform are totally separate. Sure, GTK+ runs on Windows, but it still isn't quite up to par with using native Windows controls. So the GUI layer needs to be rewritten for both.

The rendering libraries are totally different. Windows has had GDI+ for years. UNIX is only now just finally getting its hands on something equivalent in the form of Cairo or Arthur. Obviously the Windows codebase, which has been around for some time, isn't using Cairo, but GDI+ doesn't exist for Linux, so that whole layer has to be rewritten.

Windows plugin systems get to use COM and ActiveX. Linux requires a whole new custom layer as there is nothing standard that replaces those technologies available yet, especially for GTK+ developers. D-BUS is not a replacement, btw; it's an IPC mechanism, but COM and ActiveX do a lot more than just IPC.

Windows has a standard HTML component. Linux has a completely different standard HTML component (several of them, none of which are actually "standard") so that needs rewriting.

Windows has standard libraries for high-level networking, like fetching files over HTTP. Linux has no standard library, and you have to be careful depending on something like libcurl because many distros just won't have it by default.

It isn't like you can just take an app like this and use a different set of compiler options and get a binary for a completely different platform. Almost every component of Flash is dependent on some third-party platform library, and those libraries are not available on all platforms.

Seriously, turn your whole (presumably anti-proprietary-software) argument around; the vast majority of Free Software apps do not run on Windows at all. Those that do either depend on craptastic emulation layers like Cygwin or just work poorly like GTK+ based apps.

Cross platform development, especially when you're talking about a GUI, is very difficult. The only two major apps that pull it off relatively well are Mozilla and OOo, and that's only because they use completely custom widget libraries which either mimic one platform and look like crap on all the others (*cough* OOo *cough*) or look like an alien on all platforms like Mozilla.

Cross platform these days isn't the same as it was in the days of UNIX, when cross platform just meant that you knew to use poll() on one system and select() on another. Now, the differences between platforms are far, far larger, and reach into components that cannot be sanely separated by a simple #ifdef or a few small wrapper functions.

Hell froze over?

Posted Oct 19, 2006 18:48 UTC (Thu) by cventers (subscriber, #31465) [Link]

I mostly agree with you, but I should point out that Adobe is a Trolltech
customer, so in so far as they need GUI elements, they should just be
using Qt.

Hell froze over?

Posted Oct 21, 2006 2:46 UTC (Sat) by smoogen (subscriber, #97) [Link]

Wouldnt there be a problem with using QT (GPL) and Mozilla licensed code? Also doesn't the widget set they use need to be the same that Mozilla code uses?

Hell froze over?

Posted Oct 21, 2006 2:54 UTC (Sat) by cventers (subscriber, #31465) [Link]

Adobe has a commercial Qt license. Granted - I haven't read the terms of
that commercial license, but I would assume it is not viral to other
modules used in the same project.

As for the widget set, doesn't Mozilla render its own crap anyway?

Hell froze over?

Posted Oct 20, 2006 0:14 UTC (Fri) by tialaramex (subscriber, #21167) [Link]

There's a lot of confusion here, for example you'd be wrong to imagine that Adobe need to invent a plugin system, the Netscape plugin API, which is pretty similar on all its platforms hasn't changed much for years. They can spend as much time as they like on COM and ActiveX but that only gets them an IE plugin, the other browsers (whether on Windows, Mac OS, or Linux) use the Netscape API or their own derivative of it. Only Internet Explorer on Windows supports ActiveX objects running in the browser, and it's cost them very dearly because, put simply, it's a security disaster. It's not that ActiveX is "more" than IPC, it's hardly any IPC at all, it's almost all in-process.

The "native Windows controls" are a joke. When you try to list applications that use them you just end up with a list of exceptions. Internet Explorer? Nope, re-implemented due to infelicities in scrolling real windows. Excel maybe? Nope. Office re-implements almost all the controls. Skype? No. Media Player? No again. Windows ships with only three trivial card games, and each of them has its own widgets and its own UI behaviour. Ah, Notepad uses a common control, it has a normal, Win32 text widget. Of course, that's the source of most of the bugs in Notepad, so maybe not a good example. Adobe don't use the regular native Windows controls, but you've never noticed because no-one else does either, the "one set of controls in Windows vs many different toolkits in Linux" is a myth.

Most of the APIs you referred to are provided for the browser plugin by its host, and I'm not at all sure I even /want/ them in the non-plugin version that is apparently mostly a debugging aid anyway, Adobe already shipped a PDF reader that tries to phone home even when you tell it not to, who needs a standalone flash player that's always going onto the Internet to download HTML pages?

A lot of development work was on stuff Free Software people had to do as well, e.g. ALSA, except that Free Software got this stuff done years ago and Adobe are like their proprietary colleagues only just catching up. And from the sounds of the blog that was linked, they're struggling to catch up to the modern world (e.g Core Audio) on OS X as well. They still have code that's not 64-bit clean, about a decade after even /Microsoft/ started warning people this would be necessary.

Hell froze over?

Posted Oct 20, 2006 5:32 UTC (Fri) by rqosa (guest, #24136) [Link]

> the other browsers (whether on Windows, Mac OS, or Linux) use the Netscape API or their own derivative of it.

Konqueror can use Netscape plugins, but it also uses KParts.

Hell froze over?

Posted Oct 20, 2006 5:58 UTC (Fri) by oak (guest, #2786) [Link]

> The rendering libraries are totally different. Windows has had GDI+
> for years. UNIX is only now just finally getting its hands on something
> equivalent in the form of Cairo or Arthur. Obviously the Windows
> codebase, which has been around for some time, isn't using Cairo, but
> GDI+ doesn't exist for Linux, so that whole layer has to be rewritten.

Which Flash versions are using/require GDI+?

What actually are the operations that GDK+ (and now Cairo) offer that
e.g. Gdk doesn't offer:
- Bezier curves & paths[1] (I don't see what's the problem in doing these
inside Flash player, I would anyway thought it to *want* to have its
own implementation of these)
- Device independence (I've never seen any need to print any of
the Flash advertisements[2], have you? ;-))
- Anything else?

[1] Gnome apps use libart for these, see:
http://developer.gnome.org/doc/books/WGA/graphics-libart....

[2] There are some quite nice flash usages like converting CAD-drawings
or maps to Flash objects which you can view & zoom with browser and
with which printing might be nice. However, I've never used those.

Hell froze over?

Posted Oct 26, 2006 4:20 UTC (Thu) by pynm0001 (guest, #18379) [Link]

> The GUI toolkits on each platform are totally separate.

Not really an issue. Flash needs approximately enough of the GUI to draw
images which it generates completely on its own and use mouse events.
The plugin doesn't even use any common controls, it reimplements those.

> UNIX is only now just finally getting its hands on something equivalent
in the form of Cairo or Arthur.

First of all that's incorrect (Qt 3 and libart + GDK are in the same
league as GDI+), second of all as I mentioned earlier, the rendering
needs for the plugin are not really that sophisticated. You don't think
Macromedia (and now Adobe) leaves their vector algorithms to the tender
graces of the operating system's rendering layer, do you? No, it's all
done within the plugin, and then bit-blitted out to a rectangle.

Only major issue I can see is that it would be hard to accelerate video
stream decoding in a cross-platform fashion.

> Windows plugin systems get to use COM and ActiveX.

It's already been mentioned, but this has absolutely no bearing to the
discussion, since Windows Firefox's plugin doesn't use ActiveX. (BTW,
ActiveX is just another name for COM)

> Windows has a standard HTML component.

If you're really going to try and convince me that the Flash player tries
to render any kind of non-trivial HTML I'm going to start laughing so
hard. Again, this is also a problem on Windows if it's a problem on
Linux, as Firefox's HTML widget is not the Windows standard one.

> Windows has standard libraries for high-level networking, like fetching
files over HTTP.

Have you ever written networking code? I don't know what the
conventional wisdom is about HTTP but it's really quite a simple
protocol, one that I'm sure the pros at Adobe would have no trouble with.

> Cross platform development, especially when you're talking about a GUI,
is very difficult.

*cough Qt cough*

Seriously though, although I'm not sure how useful Qt would be for a
cross-platform plugin for Flash since it provides no audio or video
interface to speak of, it's not as hard to write cross platform code as
you make it sound.

And instead of using wrapper functions to hack in cross-platform code, we
tend to use some form of wrapper classes instead, in conjunction with a
sane design. I hear the Java guys call them interfaces. ;)

This isn't to take away from the work the Adobe guys are doing. It's not
easy becoming familiar enough with the GNU/Linux toolchain to be able to
quickly turn Flash into something which takes advantage of all that Linux
can do and still do so in a way that works in both Firefox and Konqueror.

AMD64

Posted Oct 20, 2006 19:50 UTC (Fri) by mrshiny (subscriber, #4266) [Link]

Still no word about a 64-bit linux version though... :(

AMD64

Posted Oct 20, 2006 20:52 UTC (Fri) by tetromino (subscriber, #33846) [Link]

Quoth http://www.kaourantin.net/2006/10/flash-player-9-for-linux-beta-1.html

What about 64bit? There is no Windows 64bit or OS X 64bit version either right now. As I said before it is not a question of 'recompiling' the source code, there is lots of generic non platform specific work which needs to be finished first. We will ship a 64bit version for Windows, OS X Leopard and GNU/Linux. It will happen. When? ... When it is ready.

So, that means not any time soon... From the flash devs' blogs, I get the impression that substantial parts of flash seem to be written in assembly, so I can understand why porting to 64bit would be non-trivial.

AMD64

Posted Oct 22, 2006 19:07 UTC (Sun) by salimma (subscriber, #34460) [Link]

They're not alone. Real is also having the same problem in making their code 64-bit-clean.

Copyright © 2006, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds