Ubuntu Flash Experience (Intrepid Spec)

General Objectives

  • Provide the user with a seamless Flash experience; this includes ease of install as well as a pleasant Flash user-experience.
  • Support Free Flash as much as possible; the long-term goal is to ship a free Flash alternative by default.

Status Summary (Hardy)

In hardy, ubufox ships a custom Plugin Finder Wizard implementation. The core changes done to the pristine Plugin Finder Wizard shipped by Mozilla are:

  • Present multiple results (aka choices) to the user in the Plugin Finder Wizard result-window.
  • Support apt: URLs as package URLs in the plugin finder results retrieved from the website. This includes a apturl installer backend which is triggered to install apt: plugins selected by the user.
  • Present a graphical hint what installation method is used
    1. Firefox .xpi result distributed on the net (as delivered by the pfs.mozilla.org webservice).
    2. apt: urls to install packages if the user has administrator privileges

In hardy, the Ubuntu-shipped Flash products are installed in a global location. When more than one Flash alternative is available, users with admin role can select the system-wide default using the Debian/Ubuntu alternative mechanism. At the moment, alternative priorities are the same, so the outcome of what is used mostly depends on random facts (like install order, etc.)

Identified User Experience Issues

Apturl blocks UI thread

Apturl is run synchronously from within the UI thread. This means that the UI freezes while apturl prompts for user feedback, leading to a unpleasant and in some cases even confusing user experience.

Flash Detection Kit blocks Plugin Finder Service

Firefox doesn't prompt the user about installing a plugin using the Plugin Finder Service if the Flash Detection Kit is used by sites. This makes the user-experience improvements by the new Plugin Finder Service void for lots of websites, as the user will just be provided with a link to the Adobe Flash download page.

Adobe Download Page doesn't offer .debs nor apt: URLs

Adobe now offers .debs for Flash 10: http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player_10_linux.deb

Free Flash Status

Free Flash players still have a lot of missing features or excess bugs to be useful for the majority of .swf files shipped on the net. It's not clear how long it will take for free Flash to become a viable replacement for Adobe's proprietary Flash plugin when browsing the web.

However, free Flash players try to serve users by fixing most important sites; unfortunately, those sites change their .swf files in a way not aligned to the Ubuntu release cycle and the current approach of not upgrading to new upstream versions makes Flash break over time.

Plugin Finder Wizard lacks Description for displayed alternatives

Users are not aware about the differences between Flash players. The Plugin Finder Wizard doesn't provide enough context to make a qualified decision.

No user way to switch to alternative solutions

Though Ubuntu provides alternative Flash solutions, users have no GUI guidance for switching the alternative. They are not even aware that their current player might just be one out of many alternatives available when they experience a broken Flash file on the net.

Flash applets cover HTML elements

In websites with drop-down menus, flash applets will be placed on top of the menu so that they cannot be clicked on.

Proposed Solutions

Apturl blocks UI thread

Firefox 2 didn't support (Java-)scriptable threading facilities. In Firefox 3 this should be possible. Thus we should be able to move the apturl exec out of the UI thread. This requires some rewrite of the PluginFinderWizard XUL + js code as the current code is not prepared for any kind of asynchronous processes. It is open if and how we can keep ubufox compatible with Firefox 2, as plain special casing - as done in the past - is not enough.

Flash Detection Kit blocks Plugin Finder Service

We have two options to trick the Flash Detection Kit into triggering the Plugin Finder Wizard facilities shipped by Ubuntu:

  • The first option would make the Flash detection kit void by providing a fallback dummy plugin that pretends to be a full Flash implementation; instead of rendering the Flash content it would display the puzzle piece known from the nullplugin. This solution would probably require some changes to the browser/ code in order to properly detect and accumulate the not-served content-types in order to pop-up the "Install Missing Plugins ..." banner.
  • The other alternative would try a less intrusive (with regards to breaking intended web-site experience). Using a well designed patch it should be possible

    to listen on plugin probes done through JavaScript, which in turn could pop-up the "Install Missing Plugins ..." banner when a probe for a Flash player is retrieved and no plugin is available. This approach would not break the website user-experience from the website-author's perspective and is user-experience-wise the preferred solution. However, the patch to allow this behaviour would go into the low-level code of gecko and thus might be too risky to accept.

Adobe Download Page doesn't offer .deb's nor apt: URLs

This needs to be communicated to and implemented by Adobe. Offering an apturl that installs Adobe's Flash from our repositories is preferable from user experience perspective.

Free Flash Status

The lack of features in free Flash is something that can only be tackled by upstreams in the free Flash code base.

One improvement to overcome the moving target problem of .swf files is to shape the Ubuntu SRU procedures to consider regular updates to new upstream releases in stable releases. The identified requirements for this are:

  • free Flash provides a extensive test-suite that allows us to track potential regressions
  • the free Flash solution doesn't export any library to a system libdir.

Plugin Finder Wizard lacks Description for displayed alternatives

The current meta displayed in the plugin finder wizard is stored in a database regularly updated from package control file meta information. The currently used Xb-Npp-* labels are:

  • Xb-Npp-Applications: Mozilla Application GUIDs supported by the plugin package
  • Xb-Npp-Name: The name displayed in the Plugin Finder Wizard
  • Xb-Npp-MimeType: The content-types this plugin serves

To overcome the "lack of Description" problem we add a new Section Xb-Npp-Description:

  • Xb-Npp-Description: Carefully drafted description for the plugin which is supposed to support the user in making a qualified decision. This control section is a multi-line section. However, the plugin finder wizard is supposed to do the appropriate line breaks automatically. Empty lines will be interpreted as a paragraph delimiter.

No user way to switch to alternative solutions

To fix this issue, the user interface needs to provide obvious, but not annoying hints that there are alternatives available when playing Flash file.

We have multiple UI options to trigger the alternative selection:

  1. add a toolbar / statusbar item that shows up in a colored fashion when visiting a website with active Flash content (vs. greyed out or even hidden when no Flash content exists). Clicking on it should trigger the plugin finder wizard and make the user select an alternative which should then instantly be used (without requiring restart).
  2. temporarily display a tools hint (like a magifier) overlayed over Flash content that the user can click to trigger the plugin finder wizard to select an alternative.
  3. both of the above with the option to turn off the overlaying hint.

A more advanced approach would allow the user to select particular alternatives per-Flash file. However, implementing this would require substantial work on the gecko plugin code, which doesnt support multiple plugins for the same content type by design.

A third option that recently was suggested is to provide a fallback mechanism in the free Flash implementations. For this free Flash players could decide to automatically fallback to Adobe plugin (using XEmbed) if they detect that the Flash file uses an unimplemented feature; further, the free Flash players could provide UI facilities (through the right-click context menu) to explicitly blacklist/whitelist certain .swf files/sites from the free-Flash experience. Blacklisting would always trigger the Adobe fallback, while whitelisting would stop automatic fallback when missing implementation details are detected.

Implementation Details

  • ...

Outstanding Issues / TODO

  • document the details of the Flash detection kit, in particular what properties on the navigator and plugin info object are tested;
  • outline the details on how to extend the plugin finder service to display description; this is supposed to include a brief description of changes required to the plugin finder wizard UI in ubufox, as well as a brief description how to extend the plugin finder service database scheme and the tools used to populate the database.
  • draft implementation details


  • KamilPáral: ad "Flash applets cover HTML elements": That should be fixed here I think.

  • twright: for 'Adobe Download Page doesn't offer .debs nor apt: URLs' why not use a userscript to add one if adobe don't?
    • asac: we should not try to change pages

FlashExperienceIntrepid (last edited 2008-10-25 16:58:56 by asksteved-com)