Interview with Mike Melanson, lead engineer on the Linux Flash Player teamDigg This!
Mike Melanson, the lead engineer on Adobe’s Flash Player team, and one of the talented people behind the Linux Flash Player agreed to do an email interview with me about Linux and Flash. You can keep up to date on development for the Linux player over on the teams blog at http://blogs.adobe.com/penguin.swf.
Can you give us a little bit of your background? How you got into Linux, how you came to be involved in the Linux Flash Player?
I got into Linux when I wanted to use a free relational database called MySQL for a web project. I eventually went to Linux full time at home. Soon after, I realized I could not play Apple QuickTime movie trailers on Linux and wondered why. I started doing some homework and began contributing to, and occasionally leading, various multimedia-related open source projects and efforts, such as xine, FFmpeg, and MPlayer.
You’ve gotten a lot of attention from the Linux community, which I think shows there is an interest in getting Flash on Linux. What do you think of the response your blog has received?
Feedback from the community has been both positive and negative. In the beginning there was a bit of misinterpretation and negative feedback about my blog and the Linux Flash Player project. But, I realize it’s inappropriate to judge the overall attention based on the reader feedback on Penguin.SWF.
I imagine (or rather hope) there is a large base of Linux users patiently following the blog, understanding that this development takes time, and that it’s fortunate that Adobe is treating Linux as a first-class operating system in supporting the Flash platform.
Sometimes it appears that allowing comments on the blog is proving counter-productive. But many people across Adobe at various levels keep up with my blog and its comments. I think it’s important for them to see all the comments in order to help evaluate how seriously the company needs to treat the Linux community on a forward-going basis. But one suggestion I would make to the community is to use the Adobe Wish Form to make specific feature requests, such as support for 64-bit and PowerPC platforms and alternate OS such as FreeBSD, so the comments are more productive.
How big is the team working on the Linux version of the Flash Player?
There is a core team working on porting and testing. There are various volunteers within the organization who have jumped into the effort out of general platform enthusiasm; and if we need any advice with particular areas, we bring in people from the rest of the Flash Player team as needed.
Of course, we’re not making cheese sandwiches here. Throwing more programmers, any programmers, at the problem will not necessarily speed the process along.
What has been the toughest part of porting Flash Player 9 to Linux?
I would say the hardest part is selecting APIs that have broad coverage across distributions. Linux is a powerful platform that values diversity and choice of programming interfaces. This can sometimes conflict with the goal of creating software that is easily portable across different OS and distributions.
Why was there no version 8 of the Flash Player for Linux?
First, as the Linux community’s agent on the inside I can tell you that I haven’t found any evidence to back the common sentiment expressed in my blog’s comments that "Adobe hates Linux." Flash Player 8.5, which was renamed Flash Player 9 before its release, was always the target for the port because the timing between the v8 and v8.5 releases was relatively close. That was planned before I started at Adobe. Personally, I blame myself for not finding out about the job sooner.
You posted a list of APIs you’re using in the Linux Player. Is this a final list? Why did you decide to go with these APIs? (Don’t feel obligated to do every one, just the biggies - GUI, Graphics, Camera Input, and Audio)?
Many people fail to recognize that engineering is about evaluating trade-offs, not finding the perfect solution. The factors that drove our API decisions included existing code in previous versions of Linux Flash Players, API penetration, API reliability, API stability, and documentation availability.
For example, let’s look at the most controversial point– the audio API. We chose ALSA because it IS the standard Linux sound architecture. Plus, there is decent documentation and programming examples available, the API is reasonably solid at this point, and all Linux kernels have supported it for many years.
To evaluate another API decision — cameras. We are sticking with the Video4Linux v1 API because the code is still there from Linux Flash Player 7 and we made it work in Player 9 with little effort. It has been threatened many times that the v1 support is being removed from the Linux kernel in favor of v2. However, most of the available camera drivers appear to support v1.
Thinking back to the responses you’ve gotten, what feature of the Flash Player do Linux users seem to want most? Video? Application development?
I think the feature most often requested is an open source Flash Player. A close runner-up for most requested feature is proper audio/video sync. And Linux users will get that this time around, thanks largely to the purging of the OSS audio API in favor of the Advanced Linux Sound Architecture (ALSA).
Is there anything that you don’t think you’ll be able to do with the Linux Flash Player that exists with the Flash Player version for Windows and Macs?
I operate from the position that Linux is as technically competent as other desktop operating systems. Thus, the Linux Flash Player should be able to do everything that the Windows and Mac versions can do. That said, there are still a few areas that are not quite solved, such as parity with the Express Install feature that could potentially make the Flash Player very easy to upgrade for the end user.
What are some of the challenges developing the player for multiple distros of Linux?
Testing and certifying base functionality for a release. Generally, when a piece of proprietary software is ported to Linux, the company only tests it and certifies that it works on a single version of a single commercial Linux distribution (often Enterprise Red Hat or SuSE). We would like the Linux Flash Player to be different; Flash Player needs to be a single binary that can reliably operate across any x86-based Linux distribution, subject to a (hopefully small) list of facilities that the host machine is expected to provide (e.g., ALSA and OpenSSL). While Adobe may only certify a select number of popular distributions as part of its release process, we would like it to "just work" for the others.
Big thanks to Mike for taking the time to answer my questions. Adobe has not announced an exact release date for the Linux Flash Player, but it is expected sometime early in 2007. You can follow the progress over at Penguin.SWF and make feature suggestions over on the Adobe Wish Form.