Fennec – M8

Fennec (Mobile Firefox) has reached milestone 8 (M8). You can install it on a Nokia N8x0 and take it for a spin. One of the big improvements during this milestone was the addition of several Mozilla QA team members. Fennec is being tested pretty hard now, and by people who love to find bugs. We are finding and fixing lots of issues now. Probably the biggest visible change in M8 is the new theme. It’s not entirely landed yet and will likely get some tweaks as we iterate on the design.

Although Fennec is still only targeted for the Nokia N8x0, that should be changing fairly soon. Work on Windows Mobile has heated up quite a bit. We should be getting some Fennec builds for WinMo soon. We have also seen Fennec showing up on other hardware too: Fennec on e-paper. Fennec on OMAP. Fennec in Ångström.

Some of the highlights in M8:

  • Initial UI support panel has landed. Tap “gear” button in the right sidebar to slide the UI panel into view. The UI panel contains separate panels for Add-on Manager, Download Manager and Preferences. The current UX design is not final. We need to integrate the new UI theme into the UI panel.
  • The sidebars (left, right and top) now slide into view as the user pans the content. The application menu button (F4) no longer forces the UI into view.
  • Support for kinetic scrolling has been enhanced and is more responsive.
  • The installer uses the Fennec icon and should prompt for the install menu location. It defaults to “Extras”.
  • A lot of work on rendering performance landed in M8. This includes front-end and back-end platform work.
  • Support for a Firefox-like security error UI and pages, instead of error alert dialogs.
  • Support for out-of-memory notifications.

Several features just missed M8 and will be landing very soon:

  • Ability to close tabs
  • Opening new browser windows as tabs (like in Firefox)
  • Initial Preferences support
  • Camera input support?

Note: M8 disables all plugins, including Flash. We found serious stability and performance issues with plugins. We intend to re-enable plugins as soon as possible.

As always, please take Fennec M8 for a spin and file some bugs.

Install instructions
M8 Readme

Extensions for Fennec

As I mentioned in the Fennec M7 release notes, the Add-ons Manager has been hooked up. Therefore, I decided to post some example add-ons for Fennec. Fennec is a XULRunner application and gives extension developers access to the same underlying XPCOM system that is used in Firefox. The process of building extensions is the same as for any other Mozilla based application.

However, there are some things a potential extension developer should know. Fennec is not Firefox. It is a completely different application. Fennec’s UI is also very different than Firefox. This means that you can’t just plop a Firefox (or Thunderbird or Songbird) extension into Fennec and expect anything to work. There are some basic things an extension developer will need to handle when making or porting extensions to Fennec:

  • Fennec uses a different application id: {a23983c0-fd0e-11dc-95ff-0800200c9a66}
  • Fennec has very different XUL UI. Many XUL elements found in Firefox do not exist in Fennec. Update your overlay XUL file accordingly.
  • Fennec uses different JavaScript objects and functions in it’s UI code. Functions and objects you have used in Firefox may not exist or may even represent different things in Fennec. For example, there is a Browser object that encapsulates some of the basic browser features, but there is a BrowerUI object that is the controller for the actual chrome. Also, there is no gBrowser object (yet) and the getBrowser() method does not return a <tabbrowser> as it does in Firefox.

The best way to figure out what’s available is to look at the source code. Also, jump on Mozilla IRC and ask questions in the #mobile channel. Ok, enough of that, let’s look at the sample extensions.

  • fennec-sample: A simple barebones add-on that shows the minimum needed to get an extension running in Fennec. Adds a button to the toolbar and displays an alert when clicked.
  • fennec-readit: A basic add-on that use flite on Maemo to turn text into speech. Toggle the text-to-speech (TTS) mode on and off using the toolbar button. When TTS is on, clicking (touching) text content will cause the text to be read aloud using flite.

Use Fennec M7 and click on the above links to install the extensions.

NOTE: In order to use fennec-readit, you must install flite first. I found a simple binary install for Maemo that seems to work OK. The binary of flite can be found in the Maemo Extras repository. After installing, you can test flite by opening a terminal and typing: flite -t "Hello World"

It might be cool to create an XPCOM version of flite (or use js-ctypes on a shared library version).