<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>Advogato blog for mbrubeck</title>
    <link>http://www.advogato.org/person/mbrubeck/</link>
    <description>Advogato blog for mbrubeck</description>
    <language>en-us</language>
    <generator>mod_virgule</generator>
    <pubDate>Sun, 26 May 2013 03:15:50 GMT</pubDate>
    <item>
      <pubDate>Fri, 26 Oct 2012 22:09:44 GMT</pubDate>
      <title>Congratulating the IE10 team</title>
      <link>http://www.advogato.org/person/mbrubeck/diary.html?start=128</link>
      <guid>http://limpet.net/mbrubeck/2012/10/26/mozilla-ie10-cake.html</guid>
      <description>&lt;p&gt;Back when Firefox 2 was released (six years ago this week!), the Internet
Explorer team started a friendly tradition of &lt;a href="http://fredericiana.com/2006/10/24/from-redmond-with-love/" &gt;sending Mozilla a cake&lt;/a&gt; as
congratulations.  This continued for &lt;a href="http://www.openbuddha.com/2008/06/17/ie-sends-mozilla-a-new-cake-for-firefox-3/" &gt;Firefox 3&lt;/a&gt; and &lt;a href="http://www.openbuddha.com/2011/03/22/another-version-of-firefox-another-cake/" &gt;Firefox 4&lt;/a&gt;.
After Firefox switched from major releases once or twice a year to incremental
updates every six weeks, they sent us &lt;a href="http://techattitude.com/news-and-events/microsoft-says-no-cupcakes-for-firefox-8/" &gt;cupcakes&lt;/a&gt; for the next few updates
instead.  &lt;tt&gt;:)&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;Since IE10 for Windows 8 is shipping today, I thought it would be fun to
revive the tradition by delivering a cake to congratulate the IE team.  Here&#x2019;s
the cake right after I picked it up from &lt;a href="http://www.custombakedcakes.com/" &gt;Baked Custom Cakes&lt;/a&gt;, with the
Firefox logo in painted fondant:&lt;/p&gt;

&lt;p&gt;
  &lt;a href="http://www.flickr.com/photos/mbrubeck/8125978974/in/photostream" &gt;
    &lt;img src="http://farm9.staticflickr.com/8183/8125978974_11c00ceb8c_z.jpg" alt=""/&gt;&lt;/a&gt;
&lt;/p&gt;


&lt;p&gt;Fellow Mozilla developer &lt;a href="http://blog.monotonous.org/" &gt;Eitan Isaacson&lt;/a&gt; drove with my wife Sarah and me
to Microsoft Building 50 in Redmond, where program manager Jacob Rossi
helped us deliver the cake to a group of IE team members:&lt;/p&gt;

&lt;p&gt;
  &lt;a href="http://www.flickr.com/photos/mostlypictures/8125824299/in/set-72157631859662686/" &gt;
    &lt;img src="http://farm9.staticflickr.com/8196/8125824299_8cd3b13184_z.jpg" alt=""/&gt;&lt;/a&gt;
&lt;/p&gt;


&lt;p&gt;The IE team posted their &lt;a href="https://twitter.com/IE/status/261920937123917826" &gt;thanks&lt;/a&gt; through their official Twitter account.
(As you can see from their picture, the bottom border of the cake got sligthly
&lt;a href="https://twitter.com/carlesgp/status/261928471398346752" &gt;restyled&lt;/a&gt; in transit, but it still looks quite edible.)  Less than 30
minutes later, Microsoftie Michael Bolan tweeted that cake was already
&lt;a href="https://twitter.com/therpham/status/261921654148591616" &gt;gone&lt;/a&gt;.  (I hear that the sugary Firefox logo was also eaten shortly
afterward.)&lt;/p&gt;

&lt;p&gt;So congratulations to the Internet Explorer team on your latest release, and
we hope you enjoyed the cake!&lt;/p&gt;</description>
    </item>
    <item>
      <pubDate>Thu, 20 Sep 2012 01:08:32 GMT</pubDate>
      <title>Metro Firefox without Windows 8</title>
      <link>http://www.advogato.org/person/mbrubeck/diary.html?start=127</link>
      <guid>http://limpet.net/mbrubeck/2012/09/19/metro-firefox-without-windows.html</guid>
      <description>&lt;p&gt;
  &lt;img src="http://limpet.net/mbrubeck//mbrubeck/images/2012/metrodesktop.png" alt=""/&gt;&lt;/p&gt;


&lt;p&gt;A few weeks ago I started working on the &lt;a href="http://www.brianbondy.com/blog/id/151/" &gt;Firefox &#x201C;Metro UI&#x201D;&lt;/a&gt; project, for
Windows&#xA0;8&#x2019;s Metro (or &lt;a href="http://www.theverge.com/2012/8/10/3232921/microsoft-modern-ui-style-metro-style-replacement" &gt;Modern&lt;/a&gt;) touch-screen environment.  While we&#x2019;re
still working on getting our first preview builds ready for Windows 8 users to
try out, you can already check out the current source code from the &lt;a href="http://hg.mozilla.org/projects/elm/" &gt;elm&lt;/a&gt;
branch and build it yourself if you want to get involved and help us fix some
&lt;a href="https://wiki.mozilla.org/Firefox/Windows_8_Integration" &gt;bugs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;What you might not know is that you can run &#x201C;Metro&#x201D; Firefox even if you don&#x2019;t
have Windows 8.  It&#x2019;s been possible for a while to build and run on older
versions of Windows using the &lt;a href="https://wiki.mozilla.org/Firefox/Windows_8_Integration#Desktop_Launch" &gt;-metrodesktop&lt;/a&gt; flag. Today I landed a
&lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=792509" &gt;patch&lt;/a&gt; to make this work on other platforms too.  To build the latest elm
source code on Linux or Mac OS X, follow these instructions:&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;&lt;p&gt;Clone the elm repo:
&lt;code&gt;hg clone http://hg.mozilla.org/projects/elm/&lt;/code&gt;
&lt;br/&gt;(If you have already cloned mozilla-central or some other repo that
shares with it, there&#x2019;s a &lt;a href="http://jlebar.com/2011/5/20/Faster_and_smaller_clones_of_branches.html" &gt;faster way&lt;/a&gt; to do this.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a &lt;a href="https://developer.mozilla.org/en/Configuring_Build_Options" &gt;.mozconfig&lt;/a&gt; file with &lt;code&gt;ac_add_options --enable-metro&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Simple_Firefox_build" &gt;Build Firefox&lt;/a&gt; as you normally would.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From your &lt;a href="https://developer.mozilla.org/en-US/docs/Configuring_Build_Options#Building_with_an_Objdir" &gt;objdir&lt;/a&gt;, run &lt;code&gt;dist/bin/firefox -metrodesktop&lt;/code&gt; (Linux)
&lt;br/&gt;or &lt;code&gt;dist/Nightly.app/Contents/MacOS/firefox -metrodesktop&lt;/code&gt; (Mac)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can visit &lt;code&gt;about:config&lt;/code&gt; and enable &lt;code&gt;metro.debug.treatmouseastouch&lt;/code&gt;
(then restart the browser) to simulate touch interaction with the mouse.
Right-click to simulate the Windows 8 edge-swipe gesture, which displays
the toolbars.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;This is still experimental and mostly untested.  Elm might accidentally break
on non-Windows platforms from time to time (because of course we are doing all
our main development and testing on Windows).  While it&#x2019;s not a perfect
replacement for running in the real Windows 8 environment, I hope this is a
useful option for adventurous Firefox contributors who want to experiment with
the Metro code but don&#x2019;t have convenient access to Windows 8.&lt;/p&gt;</description>
    </item>
    <item>
      <pubDate>Tue, 11 Oct 2011 17:10:17 GMT</pubDate>
      <title>Android app permissions and Firefox Beta</title>
      <link>http://www.advogato.org/person/mbrubeck/diary.html?start=126</link>
      <guid>http://limpet.net/mbrubeck/2011/10/11/firefox-android-permissions.html</guid>
    </item>
    <item>
      <pubDate>Fri, 19 Nov 2010 15:19:55 GMT</pubDate>
      <title>Mobile web developers: Your users hate it when you do this</title>
      <link>http://www.advogato.org/person/mbrubeck/diary.html?start=125</link>
      <guid>http://limpet.net/mbrubeck/2010/11/19/mobile-browser-detection.html</guid>
      <description>&lt;p&gt;&lt;a href="http://www.mozilla.com/mobile/" &gt;Mobile Firefox&lt;/a&gt; beta releases include a &amp;ldquo;Feedback&amp;rdquo; add-on (like the one in
Firefox 4 beta for desktop), which lets users tell us what they think about
the new browser.  Based on a sample of &lt;a href="http://input.mozilla.com/en-US/search/?product=mobile" &gt;feedback&lt;/a&gt; from mobile beta
testers, the most common complaints are about:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Speed&lt;/li&gt;
&lt;li&gt;Fitting text to the screen when zoomed in&lt;/li&gt;
&lt;li&gt;Mobile vs. desktop versions of web sites&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;The first two are straightforward, though not necessarily easy.  We&amp;rsquo;re always
working on performance, and we have experimental text reflow code (currently
available in the &lt;a href="https://addons.mozilla.org/en-US/mobile/addon/157099/" &gt;Easy Reading add-on&lt;/a&gt;).  But the last item is more
complicated&amp;hellip;&lt;/p&gt;

&lt;h2&gt;Browser detection pitfalls&lt;/h2&gt;

&lt;p&gt;Web sites can read the User-Agent header sent by your browser to see what
browser and OS you are using.  Some sites use that information to decide
whether to send a &amp;ldquo;full&amp;rdquo; version of a web page, or a version formatted for
mobile devices.&lt;/p&gt;

&lt;p&gt;This can go wrong in several ways.  If your browser or device is new, or
wasn&amp;rsquo;t tested when a site was developed, that site has no way of knowing
whether it is &amp;ldquo;mobile.&amp;rdquo;  Users may also change their User-Agent to &lt;a href="http://www.mobilecrunch.com/2010/05/24/how-to-watch-hulu-on-android-2-2/" &gt;work
around content restrictions&lt;/a&gt; or &lt;a href="http://daringfireball.net/2010/11/masquerading_as_mobile_safari" &gt;access different media formats&lt;/a&gt;.  And
some sites make incorrect assumptions, like that all browsers with &amp;ldquo;Android&amp;rdquo;
in their User-Agent string are based on WebKit.&lt;/p&gt;

&lt;p&gt;Even when the browser is known, readers and publishers might not
agree about whether the mobile or desktop version is better.  Based on our
feedback, some users want to switch from full sites to mobile sites while
others want just the opposite.  And some devices, like large touch-screen
tablets, combine aspects of handheld and desktop computers.&lt;/p&gt;

&lt;h2&gt;Solutions&lt;/h2&gt;

&lt;p&gt;Looking through these &lt;a href="http://input.mozilla.com/en-US/search/?product=mobile&amp;amp;sentiment=sad&amp;amp;q=mobile+view" &gt;complaints&lt;/a&gt;, many people are under the mistaken
impression that the browser, rather than the web site, decides whether to
display mobile-formatted pages. Even the New York Times' David Pogue gets this
wrong in his &lt;a href="http://www.nytimes.com/2010/11/11/technology/personaltech/11pogue.html" &gt;Galaxy Tab review&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;When you visit sites like nytimes.com, CNBC.com and Amazon.com, the Galaxy&#x2019;s
browser shows the stripped-down, mobile versions of those sites. According
to Samsung, there&#x2019;s no way to turn that feature off and no way to visit the
full-size sites. You can delete the little &#x201C;m.&#x201D; in the Web address until
you&#x2019;re blue in the browser, but the Galaxy always puts it right back.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Web developers: your readers are &lt;em&gt;begging&lt;/em&gt; us to display your content in their
preferred format.  We want to help them, but we can&amp;rsquo;t do it alone.&lt;/p&gt;

&lt;p&gt;(I wrote an add-on called &lt;a href="https://addons.mozilla.org/en-US/mobile/addon/162014/" &gt;Phony&lt;/a&gt; that lets mobile Firefox impersonate the
User-Agent strings of other browsers.  While this improves the experience on
some sites, it breaks it on others.  Masquerading as another browser can
lead sites to serve non-standard markup that do not work in Firefox.)&lt;/p&gt;

&lt;p&gt;Because browser detection is never perfect, web sites should &lt;strong&gt;let readers
choose&lt;/strong&gt; between mobile and full content.  They can try to guess the right
version by default, but please let users opt in or out.&lt;/p&gt;

&lt;h2&gt;Best practices for web developers&lt;/h2&gt;

&lt;p&gt;Here are some first steps typical mobile web sites can take to make their
readers happier:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;When possible, serve the same content to all browsers.  You can use
stylesheets and scripts to customize your layout for different display
sizes, as in this &lt;a href="http://hicksdesign.co.uk/journal/finally-a-fluid-hicksdesign" &gt;beautiful site by Jon Hicks&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;There &lt;em&gt;are&lt;/em&gt; valid reasons to use User-Agent sniffing.  But if you must use
it, test in as many browsers and devices as possible and learn the correct
way to detect various browsers.  For example, you can &lt;a href="http://hacks.mozilla.org/2010/09/final-user-agent-string-for-firefox-4/" &gt;detect Gecko-based
browsers&lt;/a&gt; by looking for &lt;code&gt;Gecko&lt;/code&gt; and &lt;code&gt;rv:&lt;/code&gt;, and you can detect mobile
Firefox by looking for &lt;code&gt;Fennec/&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If a &amp;ldquo;mobile&amp;rdquo; user requests a page that isn&amp;rsquo;t available on your mobile site,
serve the full version to them anyway, rather than redirecting them to an
unrelated mobile landing page.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Let users switch from your mobile site to your full site &lt;em&gt;and back&lt;/em&gt;.  You
may remember users' previous choices for convenience, but let them change
their minds again.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;Further reading&lt;/h2&gt;

&lt;p&gt;For much more comprehensive development advice, see &lt;a href="http://yiibu.com/" &gt;Yiibu&lt;/a&gt;&amp;rsquo;s thoughtful
and practical approach to building sites that work across many different
browsers and mobile devices.&lt;/p&gt;

&lt;p&gt;Coming from a different perspective, Andrea Trasatti (developer of the
device-detection library WURFL) talks about &lt;a href="http://yiibu.com/" &gt;problems in mobile User-Agent
strings&lt;/a&gt; and how they could be more useful for device detection.&lt;/p&gt;
</description>
    </item>
    <item>
      <pubDate>Mon, 4 Oct 2010 23:09:00 GMT</pubDate>
      <title>What's different about Firefox for Android</title>
      <link>http://www.advogato.org/person/mbrubeck/diary.html?start=124</link>
      <guid>http://limpet.net/mbrubeck/2010/10/04/why-fennec-is-different.html</guid>
      <description>&lt;p&gt;I've been working for the last six months on &lt;a href="https://wiki.mozilla.org/Mobile/Platforms/Android" &gt;Firefox for Android&lt;/a&gt; (also
known as "Fennec").  Here are some thoughts about the challenges in building a
mobile browser, and the particular choices we've made.&lt;/p&gt;

&lt;p&gt;Along the way, I'll try to answer some frequently-asked questions, like "Why
is Firefox so huge on Android?" and "Why should I care?"&lt;/p&gt;

&lt;h2&gt;Why&lt;/h2&gt;

&lt;p&gt;People often ask us why Android needs another web browser.  These are a few
things Firefox does that other Android browsers don't:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://www.mozilla.com/en-US/firefox/sync/" &gt;Syncs bookmarks, tabs, history, passwords, and form data&lt;/a&gt;
to and from your phone.  Firefox Sync and the Firefox Awesomebar help you
enter URLs and passwords with less typing, and move seamlessly between your
desktop and your mobile phone.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Allows &lt;a href="https://addons.mozilla.org/en-US/mobile/extensions/" &gt;extensions&lt;/a&gt; to customize every part of the user interface.
&lt;a href="https://addons.mozilla.org/en-US/mobile/addon/1865/" &gt;Adblock Plus&lt;/a&gt; and &lt;a href="https://addons.mozilla.org/en-US/mobile/addon/722/" &gt;NoScript&lt;/a&gt; are two mobile Firefox add-ons that take
advantage of this deep extensibility.  (Note: both are compatible with the
last stable release of Firefox for Nokia Maemo; they'll need to be updated
to support the pre-release Android versions.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Uses the Jaegermonkey JIT, which is &lt;a href="http://arewefastyet.com/" &gt;getting faster&lt;/a&gt; all the
time.  It runs JavaScript much faster than the Android 2.1 browser, and is
starting to overtake the Android 2.2 browser on the benchmarks in SunSpider
and similar suites.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Supports web technologies like SVG, ECMAScript 5, WebM, and HTTP Strict
Transport Security.  Firefox for Android currently scores 217 points plus 9
bonus points on &lt;a href="http://html5test.com/" &gt;html5test.com&lt;/a&gt;.  (Warning: Those
tests can be deceptive; use them as a starting point for comparison only.)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Another difference is that Firefox is built by Mozilla, a non-profit
organization with a &lt;a href="http://www.mozilla.org/about/mission" &gt;mission&lt;/a&gt; to promote openness, innovation, and
opportunity on the web.  We want our work on the mobile web to benefit
everyone, not just Firefox users - just as Firefox on the desktop helped
create a new era of innovation and standards for users of all web browsers.&lt;/p&gt;

&lt;h2&gt;Competition and choice&lt;/h2&gt;

&lt;p&gt;There are many other browsers for Android, but all of them use the built-in
WebKit rendering engine (except Opera Mini, which uses a proxy server for
rendering).  The same is true for Apple iOS, which is also based on WebKit
&amp;ndash; as are the latest versions of BlackBerry, Symbian, and Palm webOS.&lt;/p&gt;

&lt;p&gt;There's nothing wrong with WebKit.  It's a great project.  But a growing
number of mobile sites work &lt;em&gt;only&lt;/em&gt; on WebKit (or even just on iOS or Android).
This is dangerously similar to the web ten years ago, when Internet Explorer
had an overwhelming market share and many sites used IE-specific markup.  This
made it very hard for other browsers to compete, which killed the incentive
for the dominant browser to keep improving.&lt;/p&gt;

&lt;p&gt;Upcoming platforms like MeeGo and Windows Phone may give WebKit some real
mobile competition - but many users still won't be able to choose new browser
technology without buying new hardware (and often new service contracts).  We
think people should have a meaningful choice of browsers on their existing
phones, just like they do on their computers.&lt;/p&gt;

&lt;h2&gt;Reusing vs. extending&lt;/h2&gt;

&lt;p&gt;Part of the point of Firefox is to provide an alternative to the built-in
browser engine.  Firefox for Android is built on the same Gecko engine as
Firefox 4 for desktop.  That's how it can add new capabilities like
Sync, SVG, and ES5.&lt;/p&gt;

&lt;p&gt;Many mobile platforms do not allow browsers to include low-level components
like JIT compilers.  On platforms like BlackBerry that support only "managed"
languages like Java, this is true for technical reasons.  On others like iOS,
it is forbidden purely as a policy decision.  Fortunately there are still
platforms like Android, webOS, and Maemo that let apps bundle any libraries
they want.&lt;/p&gt;

&lt;p&gt;Although Android &lt;em&gt;allows&lt;/em&gt; us to distribute our own rendering engine and
JavaScript compiler, it really is not built with applications like Firefox in
mind.  Many Android phones were built with around 64 MB to 512 MB for apps.
Users who think nothing of a 12 MB download to install Firefox or Chrome on a
laptop will certainly think twice before installing it on one of these phones!
Fortunately storage space is much larger on most new phones, but this is still
an issue on existing hardware.&lt;/p&gt;

&lt;h2&gt;Android NDK packaging: Problems and solutions&lt;/h2&gt;

&lt;p&gt;Android's WebKit libraries are installed on the system partition, and are not
part of any app.  Firefox doesn't have that luxury; its must include the Gecko
libraries in its APK file.&lt;/p&gt;

&lt;p&gt;Due to a quirk of the Android NDK, apps' native libraries are saved in two
places - compressed inside the APK, and extracted to a folder for loading.
For apps like Firefox that are mostly native code, this more than doubles the
installation size.  Current pre-release versions of Firefox use 30 to 40 MB of
storage.  Other NDK apps like Google Earth pay the same double storage
penalty.&lt;/p&gt;

&lt;p&gt;To solve this problem, Mozilla's Michael Wu is writing a custom dynamic
linker, so Firefox can load libraries directly from the APK without
installing them to a folder.  This cuts the installed size in half, but
increases the startup time slightly.  For newer phones with 1 GB or more of
internal storage, we might choose to let Firefox take more space but start
faster.  On phones with less storage, we can use the custom linker to save
space.  We're also working on other ways to make startup faster.&lt;/p&gt;

&lt;p&gt;System components have another advantage: They can be optimized for specific
hardware.  In contrast, apps usually come in a single flavor for all devices.
Firefox for Android can use ARMv7 features like Thumb-2 and NEON to run as
fast as possible on high-end Android phones - but when it's built with these
optimizations it can't run at all on low-end hardware.  To run optimally on
all current hardware, we'd need different builds for different devices.  For
now, we are focusing on the current high-end phones, which will likely be next
year's mainstream hardware.&lt;/p&gt;

&lt;h2&gt;Try it out&lt;/h2&gt;

&lt;p&gt;To check if your phone is compatible and download a test build, see the
&lt;a href="https://wiki.mozilla.org/Mobile/Platforms/Android" &gt;Firefox for Android&lt;/a&gt; web page.  Our pre-beta nightly builds are already
much faster than the alpha release from a few weeks ago.  This is still
pre-release software, and we aren't done stabilizing and optimizing it - but
we are working hard.  Let us know what you think!&lt;/p&gt;

&lt;p&gt;If you don't want to mess with nightly builds, look for our first beta release
very soon now.  Beta 1 will include our first batch of speed and stability
improvements.  And beta 2 will include even more exciting changes like the
&lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=575403" &gt;new Android skin&lt;/a&gt;, reduced installation size, and OpenGL-accelerated
compositing.&lt;/p&gt;

&lt;p&gt;If Fennec doesn't work on your phone, you can also test it on
&lt;a href="https://wiki.mozilla.org/Mobile/Platforms" &gt;other platforms&lt;/a&gt;.  And we hope increased choice will encourage all
browsers to innovate &lt;em&gt;and&lt;/em&gt; learn from each other, so your mobile experience
will improve no matter which browser you use.&lt;/p&gt;
</description>
    </item>
    <item>
      <pubDate>Fri, 3 Sep 2010 00:11:52 GMT</pubDate>
      <title>Changes for add-ons in Fennec alpha</title>
      <link>http://www.advogato.org/person/mbrubeck/diary.html?start=123</link>
      <guid>http://limpet.net/mbrubeck/2010/09/02/fennec-alpha-addon-changes.html</guid>
      <description>&lt;p&gt;Last week we released a new alpha version of Firefox for Android and Maemo
(a.k.a. &lt;a href="https://wiki.mozilla.org/Mobile/Fennec" &gt;Fennec&lt;/a&gt;).  This release brings some major changes and new
features for add-on authors.  Our &lt;a href="https://wiki.mozilla.org/Mobile/Fennec/Extensions" &gt;Fennec add-on documentation&lt;/a&gt; now has
the details you need to start updating your Fennec add-ons or creating new
ones.&lt;/p&gt;

&lt;h2&gt;What's new for add-ons?&lt;/h2&gt;

&lt;p&gt;One very big change in this release is Electrolysis, the project to move
content and chrome into separate processes.  Any add-on code that interacts
with web content through the DOM must now be in a separate script that runs in
the content process.  For details, see the &lt;a href="https://wiki.mozilla.org/Mobile/Fennec/Extensions/Electrolysis" &gt;Electrolysis guide for add-on authors&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Fennec 2.0a1 also features new APIs for extending the context menu and
site menu.  See the &lt;a href="https://wiki.mozilla.org/Mobile/Fennec/Extensions/UserInterface" &gt;User Interface Guide&lt;/a&gt; for links to documentation and
example code.&lt;/p&gt;

&lt;p&gt;The upcoming beta releases will include even more changes.  Add-ons that use
Fennec's panning and zooming features will probably need significant changes
for the new graphics code in Fennec 2.0b1.  We will also include APIs for for
add-ons to customize &lt;a href="https://wiki.mozilla.org/Mobile/Projects/Sharing" &gt;sharing&lt;/a&gt; and &lt;a href="https://wiki.mozilla.org/Mobile/Planning/2.0" &gt;other new features&lt;/a&gt;.  If you are
working on an add-on that is affected by these changes, please &lt;a href="https://wiki.mozilla.org/Mobile#Get_Involved" &gt;let us
know&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Get started&lt;/h2&gt;

&lt;p&gt;To start updating or creating your Fennec add-on, download our
&lt;a href="http://blog.mozilla.com/blog/2010/08/27/fennec-alpha-released-for-android-and-nokia-n900/" &gt;Fennec alpha for Android and Nokia N900&lt;/a&gt; or &lt;a href="http://www.mozilla.com/en-US/mobile/platforms/" &gt;download the emulator&lt;/a&gt; for
Mac/Windows/Linux.  When you're ready, update your addons.mozilla.org listing
and set the maxVersion to 2.0a1.  Or you can start getting ready for beta by
setting your maxVersion to 2.0b1pre and keeping up-to-date with our pre-beta
&lt;a href="http://ftp.mozilla.org/pub/mozilla.org/mobile/nightly/latest-mobile-trunk/" &gt;nightly builds&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    <item>
      <pubDate>Fri, 13 Aug 2010 00:11:58 GMT</pubDate>
      <title>Fennec 2 update: The road to alpha</title>
      <link>http://www.advogato.org/person/mbrubeck/diary.html?start=122</link>
      <guid>http://limpet.net/mbrubeck/2010/08/12/fennec-2-alpha-status.html</guid>
      <description>&lt;p&gt;The &lt;a href="http://planet.firefox.com/mobile/" &gt;Mozilla Mobile team&lt;/a&gt; has been quiet lately.  We're making a lot of
under-the-hood changes for the next version of &lt;a href="https://wiki.mozilla.org/Mobile/Fennec" &gt;Fennec&lt;/a&gt; (Firefox for
mobile), and have been focused on getting basic functionality working again
after some major platform changes.&lt;/p&gt;

&lt;p&gt;Now things are starting to stabilize, and we are gearing up for the first
Fennec 2.0 alpha release in just a few weeks.  There are still noticeable bugs
in our current builds, but it is possible to use them now for testing, add-on
development, and regular web browsing (if you don't mind occasional crashes).&lt;/p&gt;

&lt;h2&gt;Under the hood&lt;/h2&gt;

&lt;p&gt;The biggest back-end change in Fennec 2 is Electrolysis (a.k.a "e10s").  By
moving content rendering and JavaScript into a separate process, e10s allows
the Fennec UI to stay responsive while pages are loading.  This required us to
rewrite large parts of the Fennec UI and platform code, a process that is
finally approaching completion.&lt;/p&gt;

&lt;p&gt;After the alpha release, the next big platform changes will be related to
&lt;a href="https://wiki.mozilla.org/Gecko:Layers" &gt;Layers&lt;/a&gt;.  Fennec currently handles panning and zooming by dividing pages
into "tiles" and rendering them on HTML canvas elements.  This works, but
it is complicated and not as fast as we'd like.  The new layers system will
let us replace Fennec's custom tile management with hardware-accelerated
rendering and compositing built into the Firefox 4.0 platform.&lt;/p&gt;

&lt;h2&gt;Features&lt;/h2&gt;

&lt;p&gt;We have a bunch of &lt;a href="https://wiki.mozilla.org/Mobile/Planning/2.0" &gt;new features&lt;/a&gt; planned for the Fennec UI.  A few of
these have already started to land, so you can try them in nightly
builds or the upcoming alpha:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://www.mozilla.com/en-US/firefox/sync/" &gt;Firefox Sync&lt;/a&gt; is now built
in &amp;ndash; sync tabs, bookmarks, and history from your computer to your
phone, no add-on required!
&lt;p style="text-align: center"&gt;&lt;img alt="" src="http://limpet.net/mbrubeck/2010/08/12/fennec-2-weave-firefox-sync.png"&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The new &lt;a href="https://wiki.mozilla.org/Mobile/Products/Find_In_Page" &gt;Find In Page&lt;/a&gt; command is available
through the site menu (or by pressing Control+F on a hardware keyboard).
&lt;p style="text-align: center"&gt;&lt;img alt="" src="http://limpet.net/mbrubeck/2010/08/12/fennec-2-find-in-page.png"&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can now &lt;a href="https://wiki.mozilla.org/Mobile/Projects/Sharing" &gt;share links&lt;/a&gt; through Twitter, Facebook, Google Reader, or
email.  (The final version of this feature will also let you send links
using native Android or Maemo apps.)&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fennec 2 can &lt;a href="https://wiki.mozilla.org/Mobile/Projects/Contacts" &gt;use your phone's address book&lt;/a&gt; to make it easy to enter
phone numbers and email adresses into web forms.  (This works on Maemo now;
support for Android will be added later.)&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We're adding &lt;a href="https://wiki.mozilla.org/Mobile/Projects/Multitouch" &gt;multi-touch gestures&lt;/a&gt;.  Pinch zoom has landed for
alpha; later releases will also include multi-touch swipe gestures
to go to the top or bottom of the current page, or navigate between pages.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;The design of these features is not yet final, so their look and feel may
change significantly before the final release.&lt;/p&gt;

&lt;h2&gt;Android&lt;/h2&gt;

&lt;p&gt;Fennec 1.0 and 1.1 were for available only for Nokia's Maemo operating system.
Fennec 2 will run on the Google Android platform, as well as Maemo and its
successor MeeGo.&lt;/p&gt;

&lt;p&gt;Fennec for Android is brand new, but it is progressing fast.  Most of the
blocking bugs for alpha 1 have been fixed in the last few days, and the
very latest nightly builds are usable for regular browsing, though still rough
in places.&lt;/p&gt;

&lt;p&gt;Some of our most visible Android bugs were related to keyboard and input
method support.  Jim Chen's &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=576065" &gt;IME rewrite&lt;/a&gt; fixed a lot of these bugs,
including a crash on startup with the popular Swype keyboard.  There are still
a few keyboard bugs left to fix before alpha 1.&lt;/p&gt;

&lt;p&gt;Other Android changes, like alert-bar notifications and a new visual
theme, will appear in our beta releases this fall.&lt;/p&gt;

&lt;h2&gt;Add-ons&lt;/h2&gt;

&lt;p&gt;For Fennec add-ons, the biggest change coming is Electrolysis.  Any add-on
code that interacts with web content through the DOM must now be in a separate
script that runs in the content process.  Mark Finkle has written a very
useful &lt;a href="https://wiki.mozilla.org/Mobile/Fennec/Extensions/Electrolysis" &gt;Electrolysis guide for add-on authors&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In Fennec 1.1 we added the &lt;a href="http://madhava.com/egotism/archive/005043.html" &gt;site menu&lt;/a&gt; and &lt;a href="http://starkravingfinkle.org/blog/2010/04/fennec-1-1-context-menus/" &gt;context menu&lt;/a&gt;.  Fennec 2
will have improved APIs for add-on authors to add new items to either of those
menus.  Documentation of the new APIs is coming soon.&lt;/p&gt;

&lt;p&gt;(Note: Add-on installation from web pages is &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=550936" &gt;broken&lt;/a&gt; in today's nightly
build.  This will be fixed before the 2.0a1 release.)&lt;/p&gt;

&lt;h2&gt;Nightly builds&lt;/h2&gt;

&lt;p&gt;Fennec 2.0 alpha 1 will go into code freeze as soon as the remaining
&lt;a href="https://bugzilla.mozilla.org/buglist.cgi?quicksearch=blocking-fennec%3A2.0a1%2B" &gt;a1 blocker bugs&lt;/a&gt; are fixed.  If you want to start testing or
developing for Fennec 2 even sooner, you can download a nightly build today.
Just remember this is still pre-alpha software, and you should expect bugs.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Maemo users can use the &lt;a href="http://starkravingfinkle.org/blog/2009/11/fennec-nightly-maemo-updates/" &gt;trunk repo&lt;/a&gt; to stay up to date with the latest
nightly build.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Android users, the &lt;a href="https://wiki.mozilla.org/Mobile/Platforms/Android" &gt;Fennec for Android wiki page&lt;/a&gt; has pointers to the
latest nightly build, plus a list of known bugs and compatible hardware.  (A
number of Android blogs have linked recently to random TryServer builds and
out-of-date blog posts.  Please go to the wiki page instead to get the
latest information.)&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you don't have a compatible Maemo or Android device, you can always
download &lt;a href="http://ftp.mozilla.org/pub/mozilla.org/mobile/nightly/latest-mobile-trunk/" &gt;nightly Fennec builds for Mac/Windows/Linux&lt;/a&gt; and try out Fennec
on your desktop or laptop.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;If you have questions, feedback, or bug reports, file them under Fennec in
Bugzilla, or come to the #mobile channel on irc.mozilla.org to chat with us!&lt;/p&gt;
</description>
    </item>
    <item>
      <pubDate>Mon, 10 May 2010 23:09:43 GMT</pubDate>
      <title>Implementing the viewport meta tag in Mozilla Fennec</title>
      <link>http://www.advogato.org/person/mbrubeck/diary.html?start=121</link>
      <guid>http://limpet.net/mbrubeck/2010/05/11/fennec-meta-viewport.html</guid>
      <description>&lt;p&gt;The upcoming release of &lt;a href="https://wiki.mozilla.org/Mobile/Fennec" &gt;Mobile Firefox (Fennec)&lt;/a&gt; 1.1 features improved
support for the &lt;code&gt;&amp;lt;meta name="viewport"&amp;gt;&lt;/code&gt; tag.  Previous version of Fennec
supported the &lt;em&gt;width&lt;/em&gt;, &lt;em&gt;height&lt;/em&gt;, and &lt;em&gt;initial-scale&lt;/em&gt; viewport properties, but
had &lt;a href="http://starkravingfinkle.org/blog/2010/01/perils-of-the-viewport-meta-tag/" &gt;problems&lt;/a&gt; with some sites designed for iPhone and Android browsers.
We now support the same properties Safari does, and we changed Fennec to render
mobile sites more consistently on screens of different sizes and resolutions.&lt;/p&gt;

&lt;p class="caption"&gt;touch.facebook.com before:&lt;/p&gt;


&lt;p class="figure"&gt;&lt;img src="/mbrubeck/images/2010/05-11-fennec-meta-viewport-2.png"&gt;&lt;/p&gt;


&lt;p class="caption"&gt;touch.facebook.com after:&lt;/p&gt;


&lt;p class="figure"&gt;&lt;img src="/mbrubeck/images/2010/05-11-fennec-meta-viewport-1.png"&gt;&lt;/p&gt;


&lt;p&gt;You can see these changes for yourself in the latest &lt;a href="http://ftp.mozilla.org/pub/mozilla.org/mobile/nightly/latest-mobile-1.9.2/" &gt;1.1&lt;/a&gt; or &lt;a href="http://ftp.mozilla.org/pub/mozilla.org/mobile/nightly/latest-mobile-trunk/" &gt;trunk&lt;/a&gt;
nightlies.&lt;/p&gt;

&lt;h2&gt;Background&lt;/h2&gt;

&lt;p&gt;Mobile browers like Fennec render pages in a virtual "window" (the viewport),
usually wider than the screen, so they don't need to mangle existing layouts
by squeezing them into a tiny window.  Users can pan and zoom to display
different areas of the viewport.&lt;/p&gt;

&lt;p&gt;Mobile Safari introduced the "viewport meta tag" to let web developers control
the viewport's size and scale.  Many other mobile browsers now support this
tag, although it is not part of any web standard.  Apple's &lt;a href="http://developer.apple.com/safari/library/documentation/AppleApplications/Reference/SafariWebContent/UsingtheViewport/UsingtheViewport.html#//apple_ref/doc/uid/TP40006509-SW29" &gt;documentation&lt;/a&gt;
does a great job explaining how it works for web developers, but it leaves out
some information that would be useful to browser vendors.  For example, it
says the content attribute is a comma-separated list, but existing browsers
and web pages use a mix of commas, semicolons, and spaces as separators.&lt;/p&gt;

&lt;h2&gt;A pixel is not a pixel&lt;/h2&gt;

&lt;p&gt;The iPhone and many popular Android phones have 3- to 4-inch screens with
320&#xD7;480 pixels (~160 dpi).  Fennec's target devices have the same physical
size but 480&#xD7;800 pixels (~240 dpi).  Because of this, the last version of
Fennec displayed many pages about one third smaller (in physical units) than
iPhone or Android.  This caused usability and readability problems on many
touch-optimized web sites.  Peter-Paul Koch wrote about this problem in
&lt;a href="http://www.quirksmode.org/blog/archives/2010/04/a_pixel_is_not.html" &gt;A pixel is not a pixel is not a pixel&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Fennec 1.1 for Maemo will use 1.5 hardware pixels for each CSS "pixel,"
following the lead of the Android browser.  This means a site with
"initial-scale=1" will render at the same physical size in Fennec for Maemo,
Mobile Safari for iPhone, and the Android Browser on both &lt;a href="http://developer.android.com/guide/practices/screens_support.html#range" &gt;HDPI and MDPI&lt;/a&gt;
phones.  It's also consistent with the &lt;a href="http://www.w3.org/TR/CSS2/syndata.html#length-units" &gt;CSS 2.1 specification&lt;/a&gt;, which says:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;If the pixel density of the output device is very different from that of a
typical computer display, the user agent should rescale pixel values. It is
recommended that the pixel unit refer to the whole number of device pixels
that best approximates the reference pixel. It is recommended that the
reference pixel be the visual angle of one pixel on a device with a pixel
density of 96dpi and a distance from the reader of an arm's length.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;This change only affects web pages that explicitly set the viewport size or
scale.  The pixel ratio is 1.5 applies only if the viewport scale is set to 1.
The size of a "pixel" on any page changes with the zoom level, and the default
zoom level for most pages in Fennec has not changed.&lt;/p&gt;

&lt;p&gt;On 240-dpi screens, pages with &lt;em&gt;initial-scale=1&lt;/em&gt; will effectively be zoomed to
150% by both Fennec and Android WebKit.  Their text will be smooth and crisp,
but their bitmap images will probably not take advantage of the full screen
resolution.  To get sharper images on these screens, mobile web developers can
create images at 150% of their final size (or 200%, to support the rumored
320-dpi iPhone) and then scale them down using HTML/CSS.&lt;/p&gt;

&lt;p&gt;WebKit on Android also supports an additional undocumented
&lt;a href="http://darkforge.blogspot.com/2010/05/customize-android-browser-scaling-with.html" &gt;target-densityDpi&lt;/a&gt; to let web developers override the CSS-to-device pixel
ratio.  Fennec doesn't support this property now, but if we see a compelling
need for it (or if it becomes part of a documented standard) then we might
implement it too.&lt;/p&gt;

&lt;p&gt;Right now Fennec uses the same default ratio of 1.5 on all devices. (This
is a hidden preference that can be changed in about:config or by an add-on.)
Later we'll need to change this &amp;ndash; as well as many other parts of
Fennec's user interface &amp;ndash; to choose the correct size automatically,
depending on the screen density.&lt;/p&gt;

&lt;h2&gt;Viewport width and screen width&lt;/h2&gt;

&lt;p&gt;Many sites set their viewport to "width=320, initial-scale=1" to fit precisely
onto the iPhone display in portrait mode.  As mentioned above, this caused
&lt;a href="http://starkravingfinkle.org/blog/2010/01/perils-of-the-viewport-meta-tag/" &gt;problems&lt;/a&gt; when Fennec 1.0 rendered these sites, especially in landscape
mode.  To fix this, Fennec 1.1 will expand the viewport width if necessary to
fill the screen at the requested scale.  This matches the behavior of Android
and Mobile Safari, and is especially useful on large-screen devices like the
iPad.  (Allen Pike's &lt;a href="http://www.antipode.ca/2010/choosing-a-viewport-for-ipad-sites/" &gt;Choosing a viewport for iPad sites&lt;/a&gt; has a good
explanation for web developers.)&lt;/p&gt;

&lt;p&gt;We also added support for &lt;em&gt;minimum-scale&lt;/em&gt;, &lt;em&gt;maximum-scale&lt;/em&gt;, and
&lt;em&gt;user-scalable&lt;/em&gt;, with defaults and limits similar to &lt;a href="http://developer.apple.com/safari/library/documentation/AppleApplications/Reference/SafariHTMLRef/Articles/MetaTags.html" &gt;Safari's&lt;/a&gt;.  These
properties affect the initial scale and width as well as limiting zooming
after the page is loaded.&lt;/p&gt;

&lt;h2&gt;Standards&lt;/h2&gt;

&lt;p&gt;Viewport metadata has proved to be a useful extension to HTML, and I think it
is worth standardizing.  According to the HTML5 spec, new names for the meta
element should first be registered on the &lt;a href="http://wiki.whatwg.org/wiki/MetaExtensions" &gt;WHATWG wiki&lt;/a&gt; and then be
ratified through the W3C standards process.  If anyone at Mozilla or elsewhere
is working on a standard specification for viewport metadata, please let me
know.&lt;/p&gt;
</description>
    </item>
    <item>
      <pubDate>Fri, 30 Apr 2010 10:26:30 GMT</pubDate>
      <title>Fennec on Android: user feedback and next steps</title>
      <link>http://www.advogato.org/person/mbrubeck/diary.html?start=120</link>
      <guid>http://limpet.net/mbrubeck/2010/04/30/fennec-android.html</guid>
      <description>&lt;p&gt;Last month I joined Mozilla as a UI engineer on the &lt;a href="http://www.mozilla.com/mobile/" &gt;Fennec&lt;/a&gt; (Mobile
Firefox) project.  Firefox is already available for Nokia's Maemo platform, and
now a group of Mozilla programmers are porting it to Google's Android OS.
This Tuesday they made an early &lt;a href="http://blog.vlad1.com/2010/04/27/fennec-on-android-ground-zero/" &gt;preview build&lt;/a&gt; available for public feedback.&lt;/p&gt;

&lt;p&gt;Until now, the only people working on Firefox for Android were platform
developers getting the back-end code to build and run.  This week was the
first time most other people  &amp;ndash; including me &amp;ndash; got to try it
out.  We front-end developers and designers are now &lt;em&gt;starting&lt;/em&gt; to adapt the
user interface to Android.  (The preview build used the look and feel of
Firefox for Maemo, designed for rather different hardware and software.)&lt;/p&gt;

&lt;p&gt;Because we are an open source project, we like to share our work and hear your
feedback even at this early stage of development.  While I wasn't directly
involved in the Android development effort, I spent some of my spare time this
week talking to users via Twitter and our &lt;a href="http://groups.google.com/group/fennec-android-pre-alpha" &gt;Android feedback group&lt;/a&gt;.  Here's
what I heard, in rough order of importance to users, plus some information on
our future plans.&lt;sup id="fennec-android-fnr1"&gt;&lt;a
href="#fennec-android-fn1"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Zoom and multi-touch&lt;/strong&gt;: Pinch zoom gestures are coming! We are reviewing a
patch for &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=437957" &gt;animated multi-touch (pinch) zooming on Qt-based devices&lt;/a&gt;, and
testing similar code on Android.  (Current Maemo devices have no
multi-touch, so we use the volume buttons to zoom.  That code hasn't been
ported to Android, so only double-tap zoom was working in the preview
build.)
&lt;p&gt;
We also had some requests to fit text to the screen when zoomed in, like the
Android browser.  Today Brad Lassey and Ben Stover released the &lt;a href="https://addons.mozilla.org/en-US/mobile/addon/157099" &gt;Easy
Reading&lt;/a&gt; add-on that does exactly that.  We might make this a built-in
option in Fennec once it is fast and reliable enough.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Menu and Back buttons:&lt;/strong&gt; The preview build did not handle Android's standard
hardware buttons, but code is now checked in to support the &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=559453" &gt;back button&lt;/a&gt;
and the &lt;a href="http://hg.mozilla.org/users/vladimir_mozilla.com/mozilla-droid/rev/1af28380fc88" &gt;menu and search buttons&lt;/a&gt;.  We still need to do some UI work to
make good use of these.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Size:&lt;/strong&gt; I didn't anticipate this problem, but in retrospect it should not
have been a surprise. A ten megabyte download (over 30 MB installed) is not
huge for a desktop browser, but it's hefty for a mobile app &amp;ndash;
especially on Android, where apps are saved to limited onboard memory.  Even
worse, users reported that our Fennec build did not work with the feature in
some custom Android ROMs to move apps to the SD card.
&lt;p&gt;
Shrinking Fennec is possible, but not trivial. Some of the library and
toolkit code in our build is probably unused and could be removed.  And we
could try minifying our Java&amp;shy;Script source, like many websites do.
&lt;p&gt;
Mozilla's Android developers also hope to fix the problem with SD
installation.  It will be nice someday when app storage on Android is as
plentiful as it is on other mobile platforms.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hardware compatibility:&lt;/strong&gt; There are a lot of different Android phones out
there.  Some of them won't run Fennec because they still have Android 1.5 or
1.6.  We hope this will be fixed by the hardware vendors soon, since we
currently rely on some Android 2.0 APIs.  Other devices failed for different
reasons, possibly related to insufficient RAM or incom&amp;shy;patible OpenGL APIs.
We will need to optimize Firefox's memory footprint on Android, and test on
a wider selection of devices, perhaps with help from Firefox users.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Keyboard problems&lt;/strong&gt;: There were many problems with the software keyboard
working intermittently or not at all, especially in landscape orienta&amp;shy;tion.
There were also prob&amp;shy;lems with Shift and Alt keys on some hardware
keyboards.  I haven't heard any news about of these bugs, but we know we
need to fix them quickly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Speed&lt;/strong&gt;: Strangely, we had some users calling Fennec &lt;a href="http://twitter.com/gwalter/statuses/13033288945" &gt;slooooooow&lt;/a&gt; and
others calling it &lt;a href="http://twitter.com/TonyWainwrightV/statuses/13033251510" &gt;fast as hell&lt;/a&gt; (and those tweets were sent just one
minute apart)!
&lt;p&gt;
Once a page is loaded, Fennec is pretty speedy.  It's faster than the
Android browser in some areas, and slower in others.  But it's definitely
choppy while a page is still loading or complex scripts are running.  To fix
this, our next major release of Fennec will include &lt;a href="https://wiki.mozilla.org/Electrolysis" &gt;Elec&amp;shy;trolysis&lt;/a&gt;.  This
gives Firefox a multi-process architecture much like Google Chrome, and
ensures that the browser always stays responsive.
&lt;p&gt;
Electrolysis requires many changes to our code, so it may be a couple of months
before it appears in usable Fennec builds.  In the mean&amp;shy;time, Mozilla is
working on many other performance improvements.  This work will also speed
up Firefox for desktop computers &amp;ndash; I've been using the FF4 nightly
builds, and they are already much snappier than the Firefox 3.5 I was using
before.
&lt;p&gt;
We've also checked in some simple changes to improve perceived speed,
like &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=537717" &gt;better feedback when pages start loading&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Crashing bugs:&lt;/strong&gt; Users were generally forgiving of crashes and other
obvious bugs, to be expected at this stage of development.  We will of
course fix any such bugs as fast as possible.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Add-ons:&lt;/strong&gt; We're just starting &lt;a href="http://starkravingfinkle.org/blog/2010/04/firefox-1-1-beta-1-for-maemo/" &gt;Fennec 1.1 beta testing&lt;/a&gt;, and most
of our add-ons are not yet updated for version 1.1.  Unfortunately, the
timing means that many add-ons were not available to our first Android
previewers.  This should be fixed over the next few weeks.
&lt;p&gt;
I believe add-ons are the biggest advantage Firefox has over other mobile
browsers.  For the first time on a mobile phone I can easily customize the
browser to scratch my own itch.  (See my first Fennec add-ons, &lt;a href="https://addons.mozilla.org/en-US/mobile/addon/144983/" &gt;Read
Later&lt;/a&gt; and &lt;a href="https://addons.mozilla.org/en-US/mobile/addon/157424/" &gt;Show Image Title&lt;/a&gt;.)  And there are many &lt;a href="https://addons.mozilla.org/mobile" &gt;great
add-ons&lt;/a&gt; from other devel&amp;shy;opers to choose from.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;User interface:&lt;/strong&gt; Most of the feedback on our UI was positive.
Users told us that panning to reveal the toolbars felt natural and easy.  I
think &lt;a href="http://madhava.com/egotism/" &gt;Madhava&lt;/a&gt; and &lt;a href="http://blog.seanmartell.com/" &gt;Sean&lt;/a&gt;
have done a great job with the design.  This will get even better as we take
advantage of Android features like the hardware buttons, integration with
other activities, voice input, and the notification bar.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Flash&lt;/strong&gt;: Firefox for Maemo supports plugins like Flash, although enabling
Flash does cause performance problems on some sites.  (We are working on
fixing that with major changes to our graphics code.)  Flash is not yet
included in our Android builds, but it will be supported eventually.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Web site compatibility:&lt;/strong&gt; Fennec renders almost all pages the same as
desktop Firefox.  Users did report problems entering data on some pages, and
found that most sites do not have mobile versions targeted at Firefox.  One
of my personal goals is to make Firefox compatible with more mobile sites,
and to give web developers the tools and information they need to make their
sites work great in mobile Firefox.  I'll write much more about this in
future articles.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;We don't have a regular schedule yet for releasing new builds on Android.
Once we get the code merged and automated build servers configured, we'll
publish nightly builds of Firefox for Android alongside our &lt;a href="http://ftp.mozilla.org/pub/mozilla.org/mobile/nightly/latest-mobile-trunk/" &gt;Maemo and desktop
nightlies&lt;/a&gt;.  Later this year we will have alpha and beta versions, and
hopefully a stable release.  Until then, you can follow
&lt;a href="http://twitter.com/MozMobile" &gt;@MozMobile&lt;/a&gt; or &lt;a href="http://blog.vlad1.com/" &gt;Vlad&lt;/a&gt;
(&lt;a href="http://twitter.com/vvuk" &gt;@vvuk&lt;/a&gt;) to hear about any new previews.&lt;/p&gt;

&lt;ol class="footnotes"&gt;
  &lt;li id="fennec-android-fn1"&gt;
    Please remember I am still new to the project, and cannot speak for the whole team.  This is a personal blog, not a Firefox roadmap!
    &lt;a href="#fennec-android-fnr1" title="Return to article." &gt;&#x21A9;&lt;/a&gt;
  &lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <pubDate>Thu, 22 Apr 2010 18:08:24 GMT</pubDate>
      <title>Headless Web Workers: Does the web need background apps?</title>
      <link>http://www.advogato.org/person/mbrubeck/diary.html?start=119</link>
      <guid>http://limpet.net/mbrubeck/2010/04/22/headless-web-workers.html</guid>
      <description>&lt;p&gt;At my last job, I created several web applications designed to replace
built-in apps on mobile phones.  While modern browsers and HTML5 made this
incredibly easy in many ways, we still ended up writing native (i.e. non-web)
code for most of our applications.  There were a few different areas where the
browser alone didn't meet our needs, but one that I found suprisingly common
was background processing.&lt;/p&gt;

&lt;p&gt;Consider the following mobile applications:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Calendar or clock with alarms.&lt;/li&gt;
&lt;li&gt;E-book reader that syncs content from a server.&lt;/li&gt;
&lt;li&gt;IM or email client that notifies the user of new messages.&lt;/li&gt;
&lt;li&gt;Shopping list that pops up whenever you are near the store.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Ideally, each of these apps will perform some actions even when the user does
not have it open.  (Background processing is not strictly necessary for the
e-reader, but it would be useful to ensure the library is up-to-date even when
opened in a place with no network connection.)&lt;/p&gt;

&lt;p&gt;You can't do this with a web app.  &lt;a href="http://www.whatwg.org/specs/web-workers/current-work/" &gt;Web Workers&lt;/a&gt; don't solve the problem,
because they run only while the web page is open.  What we need are &lt;em&gt;headless
web workers&lt;/em&gt;.&lt;sup id="web-workers-fnr1"&gt;&lt;a href="#web-workers-fn1" &gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;h2&gt;The API&lt;/h2&gt;

&lt;p&gt;Headless workers could use almost the same API as Web Workers.  Instead of
responding to messages from a web page, they would listen to events from the
host system (browser or OS).  These events might include time intervals,
power-on/resume, changes in network connection, geographic locations, or
"push" notifications from a remote server.&lt;/p&gt;

&lt;p&gt;The event-driven architecture of JavaScript in the browser allows the host
system a high level of discretion over resource consumption.  There's no
special code needed to suspend processes and later restore their state,
because JavaScript workers are naturally inactive between events.  The host
can provide limits on CPU or memory usage per event, with a separate message
to notify processes whose handlers were aborted.  And it can limit the
number of concurrent processes by choosing when to dispatch events to
listeners.  Some listeners could even be disabled completely at times (like if
the device is busy or the battery is low), and notified later of the events
they missed.&lt;/p&gt;

&lt;p&gt;This is almost a return to the old days of cooperative multitasking.  Mobile
computing is definitely driving everyone towards higher-level process control
in the OS, and different assumptions for applications.  It's not surprising
that my whole proposal resembles Android and iPhone 4.0 multitasking in
several ways, since I've been doing development on Android for the last 18
months and encountering many of the same issues.&lt;/p&gt;

&lt;h2&gt;The UI&lt;/h2&gt;

&lt;p&gt;Headless workers do need some way to interact with the user.  They could
display standard system notifications (via Growl on the Mac, libnotify on
Ubuntu, the status bar in Android, etc.) using &lt;a href="http://dev.w3.org/2006/webapi/WebNotifications/publish/" &gt;W3C Web Notifications&lt;/a&gt;,
which already have an &lt;a href="http://0xfe.blogspot.com/2010/04/desktop-notifications-with-webkit.html" &gt;experimental implementation in Chrome&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Users also needs to know which sites have background tasks installed.
Headless workers could be represented by icons in a standard location (perhaps
a toolbar in desktop browsers, or the home screen on a mobile device).  The
icons could display ambient status; clicking one would reveal a menu with
options to configure or remove it.&lt;/p&gt;

&lt;h2&gt;Questions&lt;/h2&gt;

&lt;p&gt;This proposal might be hard to standardize, especially where it's tied to
specific OS capabilities.  For now I'm just curious: would it be useful?
You can write a native app or a browser extension to solve this problem today.
But would it be worthwhile to have a standard, cross-platform way to do it?
Has anyone else run into problems that this approach could solve?&lt;/p&gt;

&lt;ol class="footnotes"&gt;
  &lt;li id="web-workers-fn1"&gt;
    Because all web standards should have names that sound like Harry Potter creatures.
    &lt;a href="#web-workers-fnr1" title="Return to article." &gt;&#x21A9;&lt;/a&gt;
  &lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
  </channel>
</rss>
