<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss1full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.limi.net/~d/styles/itemcontent.css"?><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns="http://purl.org/rss/1.0/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">




    



<channel rdf:about="http://limi.net/frontpage/RSS">
  <title>Alex Limi</title>
  <link>http://limi.net</link>

  <description>
    
      …on Firefox, interaction design, content management &amp; Plone.
    
  </description>

  

  
            <syn:updatePeriod>daily</syn:updatePeriod>
            <syn:updateFrequency>1</syn:updateFrequency>
            <syn:updateBase>2006-10-22T14:28:24Z</syn:updateBase>
        

  <items>
    <rdf:Seq>
      
        <rdf:li rdf:resource="http://limi.net/checkboxes-that-kill" />
      
      
        <rdf:li rdf:resource="http://limi.net/articles/safari-downloads" />
      
      
        <rdf:li rdf:resource="http://limi.net/articles/firefox-4" />
      
      
        <rdf:li rdf:resource="http://limi.net/articles/firefox-acid3" />
      
      
        <rdf:li rdf:resource="http://limi.net/articles/papercuts" />
      
      
        <rdf:li rdf:resource="http://limi.net/articles/improving-download-behaviors-web-browsers" />
      
      
        <rdf:li rdf:resource="http://limi.net/articles/resource-packages" />
      
      
        <rdf:li rdf:resource="http://limi.net/articles/tab-matching-in-the-location-bar" />
      
      
        <rdf:li rdf:resource="http://limi.net/articles/firefox-mac-installation-experience-revisited" />
      
      
        <rdf:li rdf:resource="http://limi.net/articles/improving-the-mac-installer-for-firefox" />
      
      
        <rdf:li rdf:resource="http://limi.net/articles/hello-mozilla" />
      
    </rdf:Seq>
  </items>

<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rdf+xml" href="http://feeds.limi.net/limi" /><feedburner:info uri="limi" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>37.758434</geo:lat><geo:long>-122.435126</geo:long><feedburner:emailServiceId>limi</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname></channel>


  <item rdf:about="http://limi.net/checkboxes-that-kill">
    <title>Checkboxes that kill your product</title>
    <link>http://feeds.limi.net/~r/limi/~3/s7q6Uye96UM/checkboxes-that-kill</link>
    <description>A little historical baggage can be a dangerous thing when multiplied by a few hundred million individuals</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><small>(<a href=http://limi.net/checkboxes-that-kill>To read this article with its formatting and typography intact, click here</a>)</small></p><p>
If I told you that a company is shipping a product to hundreds of millions of users right now, and included in the product are several prominent buttons that will break the product completely if you click them, and possibly lock you out from the Internet&#8202;&mdash;&#8202;can you guess which product it is?
</p>

<p>
Sounds like that’s the kind of product that only a large enterprise software company like Oracle or <abbr title="International Business Machines">IBM</abbr> would ship, right? Maybe some of the antivirus extortionware software for Windows? Maybe <abbr title="Virtual Private Network">VPN</abbr> software?
</p>

<p>
    Well, we have met the enemy, and he is us.<a title="Quote from Pogo, the comic strip" href="http://en.wikipedia.org/wiki/Pogo_%28comic_strip%29#.22We_have_met_the_enemy_and_he_is_us..22">*</a>
    In the currently shipping version, Firefox ships with many options that will render the browser unusable to most people, right in the main settings <abbr title="User Interface">UI</abbr>.
</p>

<hr />

<p>
    How did we get to this point with Firefox? Most of these options exist for historical reasons&#8202;&mdash;&#8202;whenever there’s a new feature, it often gets a checkbox to turn it off. The other common case is when a feature isn’t obviously useful to everyone, and it’s hard to make an obvious choice about whether to have it enabled by default or not&#8202;&mdash;&#8202;so we build in a switch. Or sometimes the person implementing it thinks it should have a switch, and nobody stops to ask if it’s a good idea.
</p>

<p>
    I’m not going to retread discussions about this, there are many versions of that article across the web&#8202;&mdash;&#8202;the main point is that it is usually a failure of design, and a failure to agree on sensible default behaviors. Options are “the cheap way out,” and they usually speak to an inability to agree on what to do in a given situation.</p>

<p><b>Design by committee often looks like a row of checkboxes.</b></p>

<p>
    What I <i>do</i> want to put the focus on, however, is that you <i>have</i> to perform an audit of your product every so often and see how the people using your product have changed, and what kind of functionality that made sense at the time may not make much sense anymore.
</p>


<p>
    Of course, we should start in our own backyard, so here are some obvious examples from Firefox. These are things we need to fix:
</p>


<h2>Load images automatically</h2>

<p>From the Content panel in our settings, try unchecking the box:</p>    
<img class="image-center" src="http://i.imgur.com/Xxo6hmw.png" />

<p>Here’s how Google’s front page looks like if you uncheck that box:</p>

<img class="image-center" src="http://i.imgur.com/3aLJmS2.png" />

<p>
    That’s right, you can’t even see the text box you’re supposed to type your search into. Congratulations, we just broke the Internet.
</p>

<p>Of course, there are legitimate uses for this, from low-bandwidth situations to web development testing, but that’s where our <a href="https://addons.mozilla.org">excellent add-ons ecosystem</a> comes to the rescue. Are more than 2% of our users likely to use this setting on a regular basis? Probably not.</p>

<h2>Enable JavaScript</h2>

<p>More fun from our Content panel, you can turn off JavaScript with a simple click:</p>    
<img class="image-center" src="http://i.imgur.com/Xxo6hmw.png" />
<p>
    Try booking a travel on Hipmunk without JavaScript:
</p>

<img class="image-center" src="http://i.imgur.com/c6OOjp7.png" />

<p>Most sites these days that aren’t just displaying content will fail in interesting <abbr title="and">&amp;</abbr> mysterious ways if you don’t have JavaScript enabled. For the general population, Firefox will appear broken.</p>

<p class="sidenote">Fun historical fact: If you disabled JavaScript in Netscape 4, <abbr title="Cascading Style Sheets">CSS</abbr> would also stop working&#8202;&mdash;&#8202;because <abbr title="Cascading Style Sheets">CSS</abbr> was applied to the page using… JavaScript.</p>

<p>And yes, I know that some people have reasons (privacy, web development) to turn off JavaScript. There are many add-ons that can help with this&#8202;&mdash;&#8202;but it’s not something that we should ship to hundreds of millions of users.</p>


<h2 style="clear:both">Turning off navigation</h2>

<p>
    Firefox is very customizable! In fact, it’s so customizable that we allow you to make the browser unusable with a single click. Try turning off the Navigation Toolbar, for instance:
</p>

<img class="image-center" src="http://i.imgur.com/W2QOeWQ.png" />

<p>Good luck trying to find a web site that can help you fix this problem when your son was clicking around the menus in Firefox yesterday, and today your browser has no buttons:
</p>

<img class="image-center" src="http://i.imgur.com/0JmJ60q.png" />
    
<h2>Turning off <abbr title="Secure Sockets Layer">SSL</abbr> <abbr title="and">&amp;</abbr> <abbr title="Transport Layer Security">TLS</abbr></h2>
    
<p>
    Now we’re getting to the “shooting fish in a barrel” category&#8202;&mdash;&#8202;there are many fun options in this preference panel:
</p>

<img class="image-center" src="http://i.imgur.com/Q1SRzmH.png" />

<p>
    If you turn off <abbr title="Secure Sockets Layer">SSL</abbr> or <abbr title="Transport Layer Security">TLS</abbr>, Gmail, Google Reader, and other Google services will look like this:
</p>

<img class="image-center" src="http://i.imgur.com/FjDK3dn.png" />

<p>
    Note that we don’t even tell you that you can turn it back on in the settings. We just tell you that it has been disabled, and that you should “contact the website owners to inform them of this problem.”
</p>

<p>Good luck trying to do that when you can’t even see the web site or load your email.</p>

<h2>The entire certificate manager</h2>

<p>
    Oh boy, where do we start?
</p>

<img class="image-center" src="http://i.imgur.com/YxVQID7.png" />
<p>Personally, I feel pretty confident that the number of people that know how any of this works can be narrowed down to the people that work in these companies in the list. At least not too far off.</p>

<p>
    This entire thing&#8202;&mdash;&#8202;possibly with the exception of the personal certificate list&#8202;&mdash;&#8202;needs to be moved out into an add-on for people with interest in managing their own certificates. It’s our job as a browser to keep you safe, we shouldn’t outsource this to individuals.
</p>

<p>You probably don’t want your bank to look like this because two days ago, you read an article on the Internet&#8202;&mdash;&#8202;authored by who-knows&#8202;&mdash;&#8202;telling you to remove an entry in your certificates “for added safety”:</p>

<img class="image-center" src="http://i.imgur.com/Zn3auty.png" />

<p>Also, is that an <abbr title="Who knows?">NSS</abbr> Internal <abbr title="Really?">PKCS</abbr> #11 module in your pocket, or are you just happy to see me? Do I need to enable my <abbr title="Possibly.">FIPS</abbr>?</p>

<img class="image-center" src="http://i.imgur.com/eLDED0a.png" />    

<p>
    As Privacy Engineer Monica Chew at Mozilla asks, “<a href="http://monica-at-mozilla.blogspot.com/2013/02/writing-for-98.html">Is it really worth having a preference panel that benefits fewer than 2% of users overall?</a>”&#8202;&mdash;&#8202;obvious spoiler alert: The answer is no.
</p>

<p>On the flipside, from that same article: how many users have we broken the web for when 1.6% of them may have TLS support turned off, and possibly not be aware of it? Even 1% of a few hundred million isn’t a trivial number of people.</p>

<p>The people that need to do these things should use add-ons, or at the very least an <code>about:config</code> tweak.</p>


<h2>Override automatic cache management</h2>

<p>Another way to slow down the browser and make Firefox look bad is to give it no disk space to use for caching:</p>

<img class="image-center" src="http://i.imgur.com/91N6zzP.png" />


<p>What about computers with very little disk space? Shouldn’t you be able to restrict how much disk space is being used? It turns out, we know that you are low on disk space, and will reduce our usage accordingly. It’s pretty likely that Firefox keeps better track of this than humans do. So let’s make computers do what they’re good at: keeping track of numbers.</p>

<hr />

<p>So what have we learned? There are a lot of options in our products that are used by very few people, and some of them can have <i>disastrous</i> effects. We’re trying to design software that can be used by everyone&#8202;&mdash;&#8202;that also means we have to keep them safe and not make it so easy to break a product they rely on every day. None of these are put there with malicious intent&#8202;&mdash;&#8202;some of them  even made sense at the time&#8202;&mdash;&#8202;but it’s time for us to do some scrubbing and cleaning of the Firefox settings.</p>

<p>What about the product that <i>you</i> are building? Is it time to take a fresh look at what kind of options you include?</p>


<p><small>Thanks to Frank Yan, Blake Winton, Tony Santos, Monica Chew, Sid Stamm <abbr title="and">&amp;</abbr> Madhava Enros for reading drafts of this.</small></p>
<img src="http://feeds.feedburner.com/~r/limi/~4/s7q6Uye96UM" height="1" width="1"/>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Alexander Limi</dc:creator>
    <dc:rights />
    
      <dc:subject>Mozilla</dc:subject>
    
    
      <dc:subject>Firefox</dc:subject>
    
    <dc:date>2013-03-18T14:00:00Z</dc:date>
  <feedburner:origLink>http://limi.net/checkboxes-that-kill</feedburner:origLink></item>


  <item rdf:about="http://limi.net/articles/safari-downloads">
    <title>Safari adopts proposed Firefox download manager design</title>
    <link>http://feeds.limi.net/~r/limi/~3/I2ZI2nVhe8U/safari-downloads</link>
    <description>Why we design in the open</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><small>(<a href=http://limi.net/articles/safari-downloads>To read this article with its formatting and typography intact, click here</a>)</small></p><p>Working for Mozilla on designing the next versions of Firefox, one of the great benefits is that we get to do our designs in the open, and improve <em>all</em> web browsers, not just our own product.<sup>1</sup> <span class="sidenote"><sup>1</sup> People are often surprised when we tell them that we’re not trying to “win the marketshare game,” but instead make sure that there is a thriving, diverse ecosystem on the web, with no single dominant player — which at this point, Mozilla has succeeded spectacularly at compared to a few years ago, when the browser market was stagnant, and one browser dominated the web.</span>
</p>

<p>
That’s why it’s so exciting to see our designs being adopted by other browser makers. A while back, I wrote a <a href="http://limi.net/articles/improving-download-behaviors-web-browsers">comprehensive overview on download managers</a> in the major web browsers, and made some recommendations on how to fix them. I also encouraged other browsers to implement this approach.
</p>

<p>
You can read <a href="http://limi.net/articles/improving-download-behaviors-web-browsers">the entire article</a>, but it’s probably a bit too in-depth for you right now, so I’ll give the short version. Here’s the proposed design that was posted in that article:
</p>

<img class="image-center" src="http://limi.net/media/sketchdownloadsround.png" />

<p class="discreet">Sketch by <a href="http://blog.stephenhorlander.com/">Stephen Horlander</a>.</p>

<p>
Today, I was very happy to see that Safari has implemented our design in their upcoming release, as evidenced by <a href="http://blog.dustincurtis.com/new-safari-downloads-ui-in-lion">screenshots posted at Dustin Curtis’ site</a>, here’s the image he posted:
</p>


<img class="image-center" src="http://limi.net/media/safari-download-manager-screenshot" />


<p>There’s of course a lot more detail to this than just a couple of screenshots — covered in <a href="http://limi.net/articles/improving-download-behaviors-web-browsers">the in-depth article</a> — but they seem to follow the overall design path we described there.</p>

<p>
So what’s the status of this work in Firefox? You can follow along over at the <a href="https://wiki.mozilla.org/Firefox/Features/Panel_based_download_window">Download Manager feature page</a>, but the short story is that it’s currently being updated to the new panel <abbr title="User Interface">UI</abbr> that was introduced in Firefox 4, and is currently undergoing review. The aim is to land this as soon as possible, which with our new, <a href="https://wiki.mozilla.org/RapidRelease">accelerated release cycle</a> shouldn’t be far away at all.
</p>

<p>
Also of note, implementing this for Firefox is being worked on by a volunteer to the project, <a href="http://www.amadzone.org/">Paolo Amadini</a>, and he’s doing a great job.
</p>
<p>
The best part? Mozilla is hiring <abbr title="User Experience">UX</abbr> designers, so if you’re a great designer that would like to work on a product that reaches 400 million users — and have the freedom to design in the open <abbr title="and">&amp;</abbr> improve every web browser out there — <a href="http://hire.jobvite.com/CompanyJobs/Careers.aspx?nl=1&k=JobListing&j=oHMEVfwM&s=Limi">apply to join the Firefox <abbr title="User Experience">UX</abbr> team today</a>! <span class="endMarker"></span>
</p><img src="http://feeds.feedburner.com/~r/limi/~4/I2ZI2nVhe8U" height="1" width="1"/>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Alexander Limi</dc:creator>
    <dc:rights />
    
      <dc:subject>User Interfaces</dc:subject>
    
    
      <dc:subject>Mozilla</dc:subject>
    
    
      <dc:subject>Firefox</dc:subject>
    
    <dc:date>2011-05-03T22:25:00Z</dc:date>
  <feedburner:origLink>http://limi.net/articles/safari-downloads</feedburner:origLink></item>


  <item rdf:about="http://limi.net/articles/firefox-4">
    <title>UX improvements in Firefox 4</title>
    <link>http://feeds.limi.net/~r/limi/~3/fa7LW_FCouY/firefox-4</link>
    <description>We’re in the final stages of preparing Firefox 4 for release, here are some of the things the UX team has been working on in this version that are worth checking out</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><small>(<a href=http://limi.net/articles/firefox-4>To read this article with its formatting and typography intact, click here</a>)</small></p><p>With Firefox 4 right around the corner — we might have the final release as early as next week — it’s a good time to take a quick look at some of the user interface and user experience improvements in the release. There’s a million (only slightly less, really) improvements in Firefox 4, and other blogs and our own fantastic engagement team will tell you about the other great improvements — but I thought I’d publish this quick “changes we think you should take a look at” post for those of you who can’t wait.</p>

<h2>New look</h2>

<p>As you probably know, we have an entirely new look across all our platforms — Windows, Mac OS X <abbr title="and">&amp;</abbr> Linux/<abbr title="Berkeley Software Distribution">BSD</abbr>. Among the improvements:

<ul>
<li>Tabs are now on top — and they move into the space in the titlebar when running in maximized mode on Windows,</li>
<li>Full Windows 7 <abbr title="and">&amp;</abbr> Vista integration with <a href="http://en.wikipedia.org/wiki/Windows_Aero">Aero Glass</a>,</li>
<li>Less busy layout, improved icons and glyphs,</li>
<li>More space for your web pages,</li>
<li>Whole-window <a href="http://www.getpersonas.com">Personas</a>,</li>
<li>…<abbr title="and">&amp;</abbr> you can even choose to not have a dedicated search box for an even cleaner look, since you can enter searches directly in the location bar now, and always get a predictable search result.</li>
</ul>

<p style="text-align: center; clear: both" class="discreet">Firefox 3.6 vs Firefox 4 on Windows 7:</p>

<img src="http://limi.net/media/firefox-3.6-windows/image_preview" alt="" class="image-center" />
<img src="http://limi.net/media/firefox-4-windows/image_preview" alt="" class="image-center" />

<p style="text-align: center; clear: both" class="discreet">Firefox 3.6 vs Firefox 4 on Mac OS X:</p>

<img src="http://limi.net/media/firefox-3.6-mac/image_preview" alt="" class="image-center" />
<img src="http://limi.net/media/firefox-4-mac/image_preview" alt="" class="image-center" />


<p style="clear: both">…and since I don’t have a Linux setup available for screenshots right now, you’ll have to trust <abbr title="GNU Network Object Model Environment">GNOME</abbr> and Linux hacker Jeff Waugh on this one:</p>

<img src="http://limi.net/media/jdub-on-firefox-4" alt="" class="image-center" />

<h2>More efficient menu</h2>

<p>New single-access menu for Windows 7, Vista <abbr title="and">&amp;</abbr> Linux, which was adopted by Opera (and in a similar vein, Chrome unified their two menus into one, too) soon after we put our original designs online<sup>1</sup> — they managed to ship before we did, which is fair game — and a side effect of doing designs in the open!<span class="sidenote"><sup>1</sup> And for the record, we think this is great — everyone wins, and we get a better <abbr title="User Interface">UI</abbr> in all browsers when this happens!</span></p>

<img class="image-center" style="border: none" src="http://limi.net/media/firefox-menu" alt="" />


<h2>Faster, faster, faster</h2>
<p>In addition to the impressive speed from our new JavaScript and <abbr title="HyperText Markup Language 5">HTML5</abbr> engines and making use of hardware acceleration, there are a lot of improvements in Firefox 4 that make the user experience much faster, especially when it comes to starting your browser:</p>
<ul><li><b>Startup:</b> Firefox 4 starts up in a fraction of the time that Firefox 3 did, and we’ve put a lot of effort into making every part of the Firefox experience just a little bit faster and more efficient.</li><li><b>New home page:</b> The home page is no longer loaded over the network, which means you never have to wait for it to load. Our goal was to get you to your web pages as fast as possible.</li><li><b>Faster restore of a previous browsing session:</b> When restoring a previous session, we load less pages in parallel, which makes everything more responsive and faster. If you switch to a different tab while these are being loaded, that page will get priority.</li><li><b>Updating add-ons:</b> If you use one of the many amazing Firefox add-ons, you are probably tired of waiting for them to upgrade when you start Firefox. This now happens in the background, and gets out of your way.
</li></ul>

<h2>New functionality</h2>

<p>There’s a lot of new functionality in Firefox 4 too, here are some of our favorites:</p>

<ul><li><b>Sync:</b> Getting the same experience across all your computers <abbr title="and">&amp;</abbr> devices is increasingly important. It’s pretty common to have desktop computers, laptops and mobile phones, and you want them all to have access to your open tabs, history, passwords and bookmarks. Unlike other services, we encrypt <b>all your data</b>, <i>before</i> sending it over the network, making Firefox Sync the most secure option if you want to keep your devices in sync. Adding new devices is also incredibly simple. Remember, Firefox 4 is <a href="https://market.android.com/details?id=org.mozilla.firefox">available in the Android Market</a> for your phone, and if you’re on the iPhone, you can use the <a href="http://www.mozilla.com/mobile/home/">Firefox Home</a> companion app.</li><li><img src="http://limi.net/media/app-tabs-firefox-4" alt="" class="image-right" /><b>App tabs:</b> If you use web apps like Pandora, Gmail, Twitter, Facebook or any other site that you keep open all day, you’ll love our new app tabs. With a simple right click on any tab, you can pin it to the left side of tabs, which makes it always available, and takes up less space. It will also notify you with a discreet light bulb when there’s new content in the app tab.</li><li><b>Tab Groups:</b> If you’re one of those people that have a lot of tabs open, you are probably working on several projects at the same time. A new feature in Firefox 4 called Tab Groups — also known as “Panorama” — lets you group these tabs into projects, and get the projects that you’re not working on right now out of your way. This makes it easier to focus on what you want to do next.</li>
<li><img src="http://limi.net/media/restartless-install" alt="" class="image-right" /><b>Install add-ons without restarting:</b> Tired of having to restart when you install a new add-on? Firefox 4 adds the capability for add-ons to avoid this restart, and as they are updated to make use of this, you shouldn’t have to restart your browser much anymore.
</li>
<li><b>Add-ons manager:</b> There’s an entirely new add-ons manager in Firefox 4, which gives more space to managing your add-ons, and makes it easier to find and install new ones.</li>
</ul>

<h2>Streamlined</h2>

<p>Some of my personal favorite improvements in Firefox 4 are a collection of small tweaks and improvements — there are many, many — and they add up to a significant amount of saved time and reduced friction while using the browser:</p>

<ul>
<li>Fewer dialogs, fewer questions — our goal was to balance the questions we ask you, so we don’t interrupt you unnecessarily — while still keeping you in control.</li>
<li>It’s easier to dismiss notifications — those things that tell you about geolocation, password saving, <abbr title="and">&amp;</abbr>c. — you can click anywhere outside the notification to close it, and you can get it back if you closed it accidentally.</li>
<li>If there is an open tab with the same name as a page you’re looking for, you can switch to it directly from the location bar results. (<abbr title="Also Known As">aka</abbr>. “Switch to tab”)</li>
<li>Modal dialogs can no longer block other tabs:<img src="http://limi.net/media/inline-js-dialog" alt="" class="image-center" /></li>

<li>Bookmarks bar and add-ons bar are only shown if you are actually using them, and easy to turn on and off.
</li>
<li>Firefox will no longer automatically put you into offline mode unless you ask for it.</li>
</ul>

<p>…<abbr title="and">&amp;</abbr> lots more. But I promised this overview would be quick, so I’ll end it here. There’s lots of goodness you should explore by downloading and testing it on your&nbsp;own!</p>

<p>We’ve already started on Firefox 5, 6 <abbr title="and">&amp;</abbr> 7 designs under our new accelerated release schedule, and can’t wait to show you what’s next for Firefox.</p>

<p>Now, go <a href="http://firefox.com/RC">download Firefox 4<sup><abbr title="Release Candidate">RC</abbr></sup></a> already! <span class="endMarker"></span></p>

<p class="discreet">Comments? <a href="http://twitter.com/limi">Find me on Twitter</a>. Looking forward to hear what you think about Firefox 4!</p>
<img src="http://feeds.feedburner.com/~r/limi/~4/fa7LW_FCouY" height="1" width="1"/>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Alexander Limi</dc:creator>
    <dc:rights />
    
      <dc:subject>Mozilla</dc:subject>
    
    
      <dc:subject>Firefox</dc:subject>
    
    <dc:date>2011-03-15T18:55:00Z</dc:date>
  <feedburner:origLink>http://limi.net/articles/firefox-4</feedburner:origLink></item>


  <item rdf:about="http://limi.net/articles/firefox-acid3">
    <title>Mythbusting: Why Firefox 4 won’t score 100 on Acid3</title>
    <link>http://feeds.limi.net/~r/limi/~3/Y8p7vVNQ9Gs/firefox-acid3</link>
    <description>…and why that’s a good thing</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><small>(<a href=http://limi.net/articles/firefox-acid3>To read this article with its formatting and typography intact, click here</a>)</small></p><p>Update, September 16, 2011: The Acid3 test has been updated to drop the tests that weren't relevant to modern browsers and standards, so any version of Firefox going back to — and including — Firefox 4 will show as scoring 100. Thanks to <a href="https://plus.google.com/107429617152575897589/posts/JdHnqpuUER4">the authors</a> for updating the test. Original article follows.</p>
<hr />
<p><a href="http://en.wikipedia.org/wiki/Acid3" title="Acid3 - Wikipedia, the free encyclopedia">Acid3</a> was a test written by Ian Hickson in 2008 that tests a limited selection of web browser features, and assigns a score from 0 to 100, depending on which features are supported.</p>
<p>Every once in a while — especially around the time of an upcoming new release — people argue that Firefox isn’t standards compliant, since it doesn’t score 100 on this test, but has been scoring 97 for quite a while, and will probably never implement what’s required to reach a score of 100.</p>
<p>Here’s why, explained by Mozilla engineer Boris Zbarsky, from a <a href="http://developers.slashdot.org/comments.pl?sid=1713004&cid=32847010">comment on Slashdot</a>, and reposted with permission — emphasis added by me:</p>
<blockquote>
<p>Those remaining 3 points are <abbr title="Scalable Vector Graphics">SVG</abbr> Fonts.</p>
<p>Opera and Webkit implemented (very brokenly, in at least Opera’s case) a small subset of <abbr title="Scalable Vector Graphics">SVG</abbr> 1.1 Fonts; basically just enough to pass Acid3.</p>
<p>We don’t particularly want to do that small subset in Gecko, since it gives no benefits to authors or users over the existing downloadable font support (beyond the brownie points on Acid3).</p>
<p>On the other hand, support for the full specification in a <abbr title="User Agent">UA</abbr> that also supports <abbr title="Hypertext Markup Language">HTML</abbr> is… very difficult. <abbr title="Scalable Vector Graphics">SVG</abbr> fonts are just not designed with integration with <abbr title="Hypertext Markup Language">HTML</abbr> in mind. Once you put an <code>&lt;iframe&gt;</code> in a glyph, all sorts of issues arise — both in terms of the spec being under-defined and in terms of the behavior being very difficult to implement, no matter what the spec said.</p>
<p><i>At this point, the <abbr title="Scalable Vector Graphics">SVG</abbr> working group has decided that <abbr title="Scalable Vector Graphics">SVG</abbr> Fonts will no longer be a core part of <abbr title="Scalable Vector Graphics">SVG</abbr> but will be a separate specification, and that it might need some serious work if anyone is ever to implement it in full.</i></p>
</blockquote>
<p><span class="sidenote"> Related, Robert O’Callahan has a post on why <a href="http://weblogs.mozillazine.org/roc/archives/2010/06/not_implementin.html">not implementing features is hard</a>, and why it’s sometimes even important. </span> In other words, the <abbr title="Web Open Font Format">WOFF</abbr> font standard is more appropriate, works in more browsers, and is a better way to handle custom font support in browsers. Implementing just enough of the standard to pass a test is disingenuous, and has nothing to do with standards compliance. Acid3 was useful at the time to give the general public a way to see where some of the browsers were falling down expressed as a simple numerical rating — but nearly three years later, with all the major browsers supporting these features, it’s not really relevant anymore.</p>
<hr />
<p>The next time someone posts a comment about how Firefox <i>still</i> doesn’t score 100 on Acid3, please link them to this article. I wrote this post since there isn’t a highly ranked piece on this if you search for “Firefox Acid3,” and there should be. Hopefully my site’s search engine ranking can be useful for something. <span class="endMarker"></span></p><img src="http://feeds.feedburner.com/~r/limi/~4/Y8p7vVNQ9Gs" height="1" width="1"/>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Alexander Limi</dc:creator>
    <dc:rights />
    
      <dc:subject>Firefox</dc:subject>
    
    
      <dc:subject>Mythbusting</dc:subject>
    
    <dc:date>2011-01-25T00:00:00Z</dc:date>
  <feedburner:origLink>http://limi.net/articles/firefox-acid3</feedburner:origLink></item>


  <item rdf:about="http://limi.net/articles/papercuts">
    <title>Paper Cuts &amp; Firefox 4</title>
    <link>http://feeds.limi.net/~r/limi/~3/W0J-b3U_w4Q/papercuts</link>
    <description>Update on activity in Paper Cut bugs for Firefox 4</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><small>(<a href=http://limi.net/articles/papercuts>To read this article with its formatting and typography intact, click here</a>)</small></p><p>A while back, I gave a presentation here at Mozilla based on feedback from a question thread posted to the Reddit web site: “<a href="http://www.reddit.com/r/AskReddit/comments/boipt/i_work_on_the_firefox_user_experience_team_and/">I work on the Firefox User Experience team, and this is your chance to tell me about your pet peeves</a>.”</p>

<p>We got over 2 000 — yeah, that’s <em>two thousand</em> — replies, and spent some time analyzing and grouping the feedback into actionable bug reports and general focus areas, which was then presented to the Mozilla team and worldwide community in a talk here in Mountain View <abbr title="and">&amp;</abbr> broadcast on <a href="http://air.mozilla.com/">Air Mozilla</a>.</p>

<p>Unfortunately, the video recording was broken that day, but you can <a href="http://www.scribd.com/doc/31643187">view the presentation slides in <abbr title="Hypertext Markup Language 5">HTML5</abbr> format here</a>. Copious amounts of presenter notes were added after the presentation was given, so you should be able to follow it even if you can’t see the recording.</p>

<p>The result of this presentation was that a number of bugs were filed under a “Paper Cuts” umbrella — in other words, the small, annoying issues that you encounter every day in any software — and an effort was started as part of the Firefox 4 effort to eliminate as many of these as we can during the beta period. They are similar in nature to what was called “polish” bugs in the Firefox 3 release cycle, but intentionally narrowly scoped, and managed aggressively to ensure that we have a smaller list that can be worked on.
</p>

<h2>What’s so special about Paper Cut bugs?</h2>

<p>I’m glad you asked! The paper cut bugs are issues that are of particular importance to the User Experience team, and as such, we will give priority to help you fix these bugs. It means that we’ll go the extra mile to try and support anyone that helps us with fixing them — so please <a href="https://bugzilla.mozilla.org/showdependencytree.cgi?id=561125&maxdepth=2">have a look at the list</a> and see if there’s anything you think you’re capable of fixing, and feel free to contact me directly or post questions in the bugs themselves if you need clarifications or help.</p>

<p>Some paper cut bugs are complicated and require some re-architecting — for instance, the modal dialog issues currently being handled by Justin Dolske <abbr title="and">&amp;</abbr> others — but a lot of them are small, self-contained, and the perfect thing to work on while you’re waiting for review for other projects.</p>

<h2>Our overall priorities</h2>

<p>Of the 7 focus areas identified in the presentation, we chose to focus on two areas in particular for Firefox 4:</p>

<ul>
    <li><a href="https://bugzilla.mozilla.org/showdependencytree.cgi?id=565511&maxdepth=2">Startup experience</a></li>
    <li><a href="https://bugzilla.mozilla.org/showdependencytree.cgi?id=565510&maxdepth=2">Focus issues</a></li>
</ul>

<p>This doesn’t mean that the other bugs are any less important — but we obviously have to pick our battles to get stuff done. Don’t let this discourage you from handling bugs in the other focus areas, though!</p>

<h2>Our current Paper Cut Heroes</h2>
<p>Several of the bugs have seen significant activity over the past month, and I’ll try to call out progress and general awesomeness over the coming weeks. Currently, excellent work is being done on:</p>

<ul>
    <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=59314">Eliminate modal dialogs</a> — Justin Dolske <abbr title="and">&amp;</abbr> others have been working on moving all dialogs to be tab-specific instead of window-specific. This means that HTTP authentication dialogs and JavaScript pop-ups no longer force you to answer them before you can switch to a different tab.</li>
    <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=489138">Application updates in the background</a> — Rob Strong is currently working on a service that downloads <abbr title="and">&amp;</abbr> applies Firefox application updates transparently in the background, which means you don’t have to wait for the “Firefox is applying your updates” dialog when starting the browser anymore.</li>
    <li>Add-on updates in the background — Dave Townsend, Jennifer Boriss and the rest of the team behind the new add-ons manager have made sure that updates to add-ons are less annoying, and don’t happen on startup anymore. You can still turn on explicit notification of updates if that’s how you roll, but it’s now automatic and transparent for most people.</li>
    <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=565515">Improved tab behaviors</a> — Our intern extraordinaire Frank Yan has been submitting patches to eliminate spurious trackpad input (“fake bounce”) and several other improvements to tab handling.</li>
</ul>

<p>…and lots of other issues, more updates to come in the next few weeks.</p>

<h2>Want to help out?</h2>

<p>This week’s selection of paper cuts that we are currently looking for help in resolving:</p>

<ul>
    <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=78414">Bug #78414</a> — Application shortcut keys (keyboard commands such as f11, ctrl+t, ctrl+r) fail to operate when plug-in (flash, acrobat, quicktime) has focus. This is mostly working on <abbr title="Operating System Ten">OS X</abbr>, but Windows still has this problem. In general, any qualified keyboard shortcut shouldn’t be sent to the plugin, but go to the browser.</li>
    <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=566489">Bug #566489</a> — Enable inline autocomplete again for <abbr title="Uniform Resource Locator">URL</abbr>s, but make it smarter. With the introduction of the Awesome Bar, we stopped “Speaking <abbr title="Uniform Resource Locator">URL</abbr>,” which affects our perceived performance, since it takes longer to enter a <abbr title="Uniform Resource Locator">URL</abbr> than it did before.</li>
    <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=492544">Bug #492544</a> — Add “Paste <abbr title="and">&amp;</abbr> Go” + “Paste <abbr title="and">&amp;</abbr> Search” to context menu on location field + search field, respectively.</li>
    <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=565104">Bug #565104</a> — Stop sites from opening popup or popunder windows, even in response to clicks. There’s a new type of “pop-under” that seems to be done by triggering a window open and then quickly focusing back on the current window. There’s no conceivable use for this in a web page/app, so this order of events should be detected, and disallowed.</li>
    <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=565760">Bug #565760</a> — “Forget this password/login” on right click. It should be possible to remove a saved password from a form that is currently storing it.</li>
</ul>

<p>If none of these issues tickled your fancy, take a look at the <a href="https://bugzilla.mozilla.org/showdependencytree.cgi?id=561125&maxdepth=2">full list of paper cut bugs</a> (tree view) — and pick something to fix!
</p>

<hr />

<h2>Overview of paper cuts</h2>

<p>Here’s a quick overview of the focus areas we are trying to fix, along with links to the bugs that collect these in focus areas:</p>

<h3>Focus issues</h3>
<p><a href="https://bugzilla.mozilla.org/showdependencytree.cgi?id=565510&maxdepth=2">Tracked in bug 565510</a>, contains items such as:</p>
<ul>
<li>Web sites should not be able to steal focus when in chrome</li>
<li>Flash, <abbr title="Portable Document Format">PDF</abbr> and other plugins steal focus shortcuts, can’t open new tab using keyboard when inside a YouTube video or a <abbr title="Portable Document Format">PDF</abbr>, back button stops working</li>
<li>Avoid app-modal dialogs, make them tab-modal</li>
</ul>

<h3>Startup Experience*</h3>
<span class="sidenote">*Not what you think, focus on perceived performance instead of milliseconds for startup time.</span>
<p><a href="https://bugzilla.mozilla.org/showdependencytree.cgi?id=565511&maxdepth=2">Tracked in bug 565511</a>, contains items such as:</p>
<ul>
<li>Rebuild profile on upgrade/reinstall</li>
<li>“Firefox is open but not responding” alert</li>
<li>Don’t ask about updates all the time</li>
<li>Ideally: upgrade in the background — if not, upgrade at shutdown, not startup!</li>
<li>Shutdown takes a long time for some users (30-40 seconds)</li>
<li>Include BarTab-like behavior by default</li>
<li>Put “Restart” and “Restart <abbr title="and">&amp;</abbr> Save Session” in “Exit” combomenu in the new design?</li>
</ul>

<h3>Being in Control</h3>
<p><a href="https://bugzilla.mozilla.org/showdependencytree.cgi?id=565512&maxdepth=2">Tracked in bug 565512</a>, contains items such as:</p>
<ul>
<li>Control over audio in tabs! </li>
<li>Web sites shouldn’t be allowed to resize windows they didn’t create (i.e. main window)</li>
<li>Pop-under ads are back, worse than ever</li>
<li>Put the user in control of generated windows</li>
<li>Opening new windows should be user-controllable</li>
<li>SSL: Add an “I know what I’m doing” option to self-signed certs</li>
<li>Include option to delete Flash cookies</li>
<li>Fix Master Password</li>
<li>Don’t let a web app be able to lock up a tab</li>
<li>Browse-by-name is inconsistent and confusing</li>
<li>Make a hotkey to list shortcuts + show them in the right-click menus</li>
<li>Enable autocomplete again, but make it smarter</li>
<li>Better preview, especially for PDF <abbr title="and">&amp;</abbr> types we already have viewers for</li>
</ul>

<h3>Add-ons <abbr title="and">&amp;</abbr> Plug-ins</h3>
<p><a href="https://bugzilla.mozilla.org/showdependencytree.cgi?id=565513&maxdepth=2">Tracked in bug 565513</a>, contains items such as:</p>
<ul>
<li>Don’t wait 3 seconds when installing add-ons from <abbr>AMO</abbr> or the inline add-ons browser</li>
<li>When an add-on is outdated / no longer maintained or working, suggest alternatives</li>
<li>Click-to-activate for plugins — default for rare-but-perf-killing things like Java</li>
<li>Don’t let add-ons open new pages</li>
<li>Don’t let apps install add-ons without consent</li>
<li>Fix the crufty status bar, extensions add clutter</li>
</ul>

<h3>Tab Behaviors</h3>
<p><a href="https://bugzilla.mozilla.org/showdependencytree.cgi?id=565515&maxdepth=2">Tracked in bug 565515</a>, contains items such as:</p>
<ul>
<li>Opening tabs at the end when new <abbr title="and">&amp;</abbr> next to when context-triggered is confusing </li>
<li>New tabs should keep history from the tab that spawned them</li>
<li>Tab behavior is very personal, expose more prefs here</li>
<li>Make it easy to close lots of tabs</li>
<li>Fix tab stack ordering</li>
<li>Fix Ctrl-tab to use stacks, so it can be used to compare between 2-3 tabs</li>
<li>Tab reloads when it is detached; this is annoying and unexpected/dangerous</li>
<li>Don’t separate windows and tabs in the undo stack</li>
<li>Let me fit more tabs in the bar, make it easier to find the ones I can’t see</li>
<li>Blank tabs when clicking should never appear</li>
<li>Can we fix the "Cmd-click window void"?</li>
<li>Let me have Private and normal windows at the same time</li>
<li>Ask when hitting ⌘Q</li>
<li>Better load indicators — separate activity from progress</li>
<li>Detect whether your webmail client is already open, don’t open new window</li>
<li>Eliminate fake “bounce” when scrolling tab bar, you can’t see when you’re at the end</li>
</ul>

<h3><abbr title="User Interface">UI</abbr> Cruft <abbr title="and">&amp;</abbr> Consistency</h3>
<p><a href="https://bugzilla.mozilla.org/showdependencytree.cgi?id=565517&maxdepth=2">Tracked in bug 565517</a>, contains items such as:</p>
<ul>
<li>Make search field tab-specific <abbr title="and">&amp;</abbr> clear when navigating away from results page</li>
<li>Find in page should to be page-specific, and close when you click outside it, move to top</li>
<li>Change “Save” to “Download”</li>
<li>Work offline must die</li>
<li>Fix downloads! </li>
<li>Fix mess + ordering in contextual menus; common options first</li>
<li>“Search Google for…” context menu entry should be in textareas <abbr title="and">&amp;</abbr> inputs too</li>
<li>Fix selection behaviors</li>
<li>“Paste <abbr title="and">&amp;</abbr> Go”; “Paste <abbr title="and">&amp;</abbr> Search”</li>
<li>A useful full-screen browsing experience</li>
<li>Make Personas work better with the default theme, make them easy to remove</li>
<li>Favicons on <abbr title="Operating System Ten">OS X</abbr> bookmarks toolbar + multiple rows supported</li>
</ul>

<h3><abbr title="Operating System">OS</abbr> Integration</h3> 
<p><a href="https://bugzilla.mozilla.org/showdependencytree.cgi?id=565518&maxdepth=2">Tracked in bug 565518</a>, contains items such as:</p>
<ul>
<li>Multiple screens behavior on Windows is wonky, can we fix?</li>
<li>Additional Win7 features: Jump lists, windows in Aero Peek, download progress</li>
<li>Enable <abbr title="NT LAN Manager">NTLM</abbr> authentication for intranets</li>
<li><abbr title="Microsoft Installer">MSI</abbr> installer with group policies</li>
<li>Hard to assign default apps on Linux</li>
<li>Use of Keychain on <abbr title="Operating System Ten">OS X</abbr></li>
</ul>
<img src="http://feeds.feedburner.com/~r/limi/~4/W0J-b3U_w4Q" height="1" width="1"/>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Alexander Limi</dc:creator>
    <dc:rights />
    
      <dc:subject>Mozilla</dc:subject>
    
    
      <dc:subject>Firefox</dc:subject>
    
    <dc:date>2010-06-20T23:00:00Z</dc:date>
  <feedburner:origLink>http://limi.net/articles/papercuts</feedburner:origLink></item>


  <item rdf:about="http://limi.net/articles/improving-download-behaviors-web-browsers">
    <title>Improving download behaviors in web browsers</title>
    <link>http://feeds.limi.net/~r/limi/~3/yJfD1QXuCP0/improving-download-behaviors-web-browsers</link>
    <description>Saving the world, one file at a time</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><small>(<a href=http://limi.net/articles/improving-download-behaviors-web-browsers>To read this article with its formatting and typography intact, click here</a>)</small></p><p>The confusing and inconsistent state of downloading files using a web browser has long been a pet peeve of mine. The current situation is pretty much a mess in every web browser. Issues with file systems in general notwithstanding, even doing simple downloads to a centrally defined folder can be confusing, even frustrating.</p>
<img alt="" title="Sketch by Stephen Horlander" class="image-right" src="http://limi.net/media/sketchdownloadswide.png" />
<p>The aim of this article is to give an introduction to how the most common browsers behave when it comes to downloading files, what opportunities exist, and close with a set of recommendations for how to fix this in Firefox and other browsers. It is my hope that putting these ideas out there will spur some innovation in this area both in Firefox and competing browsers.</p>
<p>We’ll try to cover the most obvious issues in the most common browsers, so we can all get better at this. This article will cover:</p>
<ul>
<li>Firefox 3.6,</li>
<li>Internet Explorer 8, </li>
<li>Chrome 5 beta, </li>
<li><abbr title="and">&amp;</abbr> Opera 10.50 beta.</li>
</ul>
<h2>Beverage warning</h2>
<p>Every once in a while, I publish articles that may require some time commitment, because I think the subject matter warrants an in-depth treatment, and because that’s how I roll. As per <a class="external-link" href="http://en.wikiquote.org/wiki/Blaise_Pascal">Blaise Pascal</a>, <q>Je n’ai fait celle-ci plus longue que parce que je n’ai pas eu le  loisir de la faire plus courte</q> — <q>I would have written a shorter letter, but I did not have the  time.</q></p>
<p>So find a beverage of a suitable size and persuasion — this stuff can certainly drive <abbr title="User Interface">UI</abbr> designers to go for the hard liquor — and let’s look at the current landscape for browser download handling, and how it can be improved.</p>
<ul>
</ul>
<h2>Existing approaches</h2>
<p>It’s useful to have a basic understanding of how downloads are handled in the various browsers:</p>
<h3>Firefox</h3>
<p>Let’s start with Firefox:</p>
<p><img alt="" title="Firefox Download Manager" class="image-center" src="http://limi.net/media/copy_of_Downloadspopulated.png" /></p>
<p>In addition to the download window itself, there’s also a download  progress indicator in the status bar, that — when clicked —  will bring up the download manager window: <img alt="" title="Download indicator" src="http://limi.net/media/Downloadindicator.png" /></p>
<p>There’s a lot to like about the current download manager in Firefox:</p>
<ul>
<li>It tells you the size of the file, the domain you got it from, and <i>when</i> you downloaded it.</li>
<li>It has a built-in filter labeled “Search…” — which is slightly misleading — but it works well for locating files that you have already downloaded.</li>
<li>The status bar download indicator tells you how much time is left, and provides an easy (although not necessarily very discoverable) way to bring up the download manager window.</li>
</ul>
<p>…but there are also elements that are problematic:</p>
<ul>
<li>It’s a dedicated window, which easily gets lost if you’re not careful — it will be hidden under the browser window or other windows you activate. This is especially noticable in <abbr title="Operating System">OS</abbr>es that are more app-centric than window-centric — prominent examples are Mac <abbr title="Operating System">OS</abbr> <abbr title="Ten">X</abbr>, and now Windows Vista/7.</li>
<li>It has a lot of “administrative debris” — my pet peeves are:</li>
<ul>
<li>The window doesn’t automatically resize to fit the downloads shown,</li>
<li>Certain personality types (present party included) will obsessively click the “Clear List” button to clean up the list once they are done. Of course, this doesn’t actually remove the history entries of these sites, but more about that later.</li>
</ul>
<ul>
<li>There are still some valid cases here, some people never clear  their downloads, and use the search filter to find files they downloaded  a long time ago, for instance. This is a use case we should still support.</li>
</ul>
<li>When the downloads are done, <i>the download indicator in the status bar disappears</i>. Yes, read that again. It disappears. This is crazy. Just when you need it to activate the downloads window — gone.</li>
</ul>
<h3>Internet Explorer</h3>
<p>Moving on to everyone’s favorite browser, the approach is pretty simple, no dedicated download manager, everything is handled by dialog windows:</p>
<p><img alt="" class="image-center" title="Internet Explorer’s download dialog" src="http://limi.net/media/iesecuritywarningbefore.png" /></p>
<h4>The good:</h4>
<ul>
<li>There’s a you-can’t-miss-it dialog when saving, it shows you a dialog box every time you do a download. This is crude, but effective — it works well, especially with novice users.</li>
<li>Asking where to put the file every time minimizes confusion about where it went<i> to some extent</i> — of course, after a while, this turns into a classic “Whatever” dialog, and the users lose track of it anyway.</li>
<li>The progress bar shown in the application icon while a download is in progress is nifty: <img alt="" title="Internet Explorer download progress indicator" src="http://limi.net/media/ieprogressindicator.png" /> — this shows that the download is 50% complete. I believe we are in the process of landing something similar on Windows Vista/7 in the nightly Windows builds of Firefox too.</li>
</ul>
<h4>The bad:</h4>
<ul>
<li>Every download opens a separate window, which becomes unmaintainable when you do a lot of downloads, and also leads to a lot of stray windows unless you manually clean them up.</li>
<li>There’s no way to search in downloads.</li>
<li>Seeing a dialog box for every single download gets annoying after a while.</li>
<li>The download window can still get lost, this is magnified with the Vista/7 approach where the windows live inside the icon of the application. Especially frustrating: it will throw up a dialog box that you may miss if you click somewhere else at that exact moment, which results in the download never starting if it was an exe, since it blocks the download until the question has been answered.</li>
<li>It also seems to ask multiple times whether you really want to download/run the file (once when initiating download, once when running it? There’s some slightly inconsistent behavior here that we haven’t quite been able to figure out the logic behind)</li>
</ul>
<h3>Safari</h3>
<p>Nothing revolutionary, overwhelmingly similar to the Firefox approach, with a few improvements and a few missing features. It has the same dedicated “download manager” window approach:</p>
<p><img alt="" title="Safari downloads" class="image-center" src="http://limi.net/media/safaridownloads.png" /></p>
<h4>The good:</h4>
<ul>
<li>Minimalist presentation.</li>
<li>Easy way to reveal the location on the file system where the file ended up, and it also selects the file for you.</li>
<li>The same upsides as the Firefox download manager.</li>
</ul>
<h4>The bad:</h4>
<ul>
<li>The clear button introduces administrative debris (similar to the problem with Firefox).</li>
<li>No way to search in downloads.</li>
<li>Doesn’t indicate where the file came from or when you downloaded it.</li>
<li>Separate window that will disappear behind the main browser window if you use it while waiting for the download — and we have seen people waiting for the download to complete before continuing browsing because they “don’t know how to find the file again” once the window disappears. </li>
<li>The overhead that comes with it being a separate window (scrolling, minimize/maximize, no auto-resize, etc), also shared with Firefox.</li>
<li>No indicator of download progress if you can’t see the download window</li>
</ul>
<h3>Chrome</h3>
<p>Chrome has actually done a fair amount of work on attempting to improve download handling, and is — in my opinion — one of the better experiences out there right now when it comes to handling files with a web browser. Of course, it has its share of problems too. The fundamental difference is that it puts downloads in a bar along the bottom of the browser window:</p>
<p><img alt="" title="Chrome’s massive arrow" class="image-center" src="http://limi.net/media/chromemassivearrow.png" /></p>
<p>To make sure you don’t miss where the download goes, Chrome seems to follow the age-old philosopy of “if you want people to not miss it, make it big and red.” When you initiate a new download, it displays a falling arrow for approximately a second, to bring your attention to the download bar at the bottom. This does give the impression of “usability testing gone horribly wrong”, where — no matter what the <abbr title="User Interface">UI</abbr> designer does — he can’t get people to notice where the downloaded file went, since there’s no dialog box to obstruct the view and call attention to itself. Hence, the only solution is to add an arrow that is so big that you can’t possibly miss it.</p>
<p>To Chrome’s credit, they have iterated quickly on the download <abbr title="User Interface">UI</abbr> over the past few versions. Earlier versions had the download bar pinned to the tab it was initiated from — which is pretty much exactly the <i>opposite</i> of what you want, since you’re likely to browse other sites until the download is done. Thankfully, this is now fixed, and the download bar is now global.</p>
<p>A curious side effect of the global download bar <abbr title="User Interface">UI</abbr> is that it goes contrary to Chrome’s philosophy of taking up as little space for the browser <abbr title="User Interface">UI</abbr> as possible. The download bar steals the equivalent of two status bars of pixels in every tab you’re using unless you dismiss it by closing it:</p>
<p><img alt="" title="Chrome’s multifile and overflow" class="image-center" src="http://limi.net/media/chromemultifileoverflow.png" /></p>
<p>Another problem, illustrated above, is that it doesn’t really have a solution for overflow. Similar to how Chrome doesn’t yet have a strategy to deal with the case when you have too many tabs (they just get smaller and smaller until they are unusable), the screenshot above actually contains <i>three</i> downloads — the only problem is that download #3 is (presumably) wrapped to an invisible line below the two visible downloads.</p>
<p>Clicking “Show all downloads…” will bring up a download tab, where you can see all the downloads you have made:</p>
<p><img alt="" title="Chrome’s download window" class="image-center" src="http://limi.net/media/chromedownloads.png" /></p>
<p>This was an approach originally introduced by Opera, which we’ll talk about next:</p>
<h3>Opera</h3>
<p>Does quite a few things right (as usual), but have some weird defaults that mar the overall experience. The idea of downloads-window-as-a-tab was first done in Opera, but can still be improved.</p>
<p><img alt="" title="Opera Downloads window" class="image-center" src="http://limi.net/media/operadownloadwindow.png" /></p>
<p>Opera shares most of the same issues as most of the other browsers (asks every time it downloads, opening with non-sensical applications like DiskImageMounter, etc), but overall it is standard fare. One thing to note is the amount of Power User functionality included in the main <abbr title="User Interface">UI</abbr>, with things like the “Quick Download” field that will download whatever <abbr title="Uniform Resource Locator">URL</abbr>  you paste into it directly, its support for downloading all the resources linked from a page, etc. The quick download field is also curiously positioned in exactly the same location as you would expect to find a search/filter bar, and people do try to use it as such — with predictably bad results.</p>
<h2>Suggested improvements to the download handling in Firefox</h2>
<p>Informed by what other browsers do for downloads, it’s clear that  Firefox already does a good job in comparison — but it can also  be made a lot better without an ovwerwhelming amount of work. The infrastructure is  solid, we have the necessary functionality for most of this already —  but the user experience of how it all fits together can be significantly improved.</p>
<p>From the Firefox point of view, we have a list of things we can do to  make the user experience of downloading more streamlined and easier on  the users. This advice pretty much applies uniformly across all  browsers, and as usual — feel free to steal any of these ideas for other  browsers. It’s how we make web browsers better.</p>
<h3>Replacing the download manager window</h3>
<p>The current download manager tries to do a lot in too small a space, so we propose to split the downloads into the following two components:</p>
<img alt="" title="Sketch by Stephen Horlander" class="image-right" src="http://limi.net/media/sketchdownloadsround.png" />
<ol>
<li><i>An easily accessible panel</i> that shows you current state of downloads, your recent downloads, and gives you a good indicator of how far along your download is. Its goal is to surface status, <i>not</i> to perform download management outside of the basics of showing progress <abbr title="and">&amp;</abbr> number of files, as well as operations to stop <abbr title="and">&amp;</abbr> resume the download. A sketch of our current thinking is shown to the right; it will also light up when starting a download, and possibly add some subtle glow effects to indicate that downloads are in progress, and a more significant event once a download completes.</li>
<li><i>A more powerful full-window <abbr title="User Interface">UI</abbr> </i>for advanced operations like searching, clearing entries, sorting, and everything else related to Download <i>History</i>. This is also where operations like <i>rename</i> or <i>delete</i> are present. This window should ideally be shown as a tab, and since we have tear-off tabs, you can keep the old-style dedicated download window too, if you prefer that.</li>
</ol>
<p>You probably caught on to this idea already, but the main point of #2 is that <i>there is no need for a dedicated download manager</i>. The download manager is a listing of history, and should simply be a filter inside the history window that says “show me only files”. Download history is intimately tied to browsing history, and sometimes the additional context is useful when looking for a download you did as part of a browsing task. Being able to show history, and then narrow down to only show files is a natural way of approaching download history.</p>
<p>Other things that would improve the experience:</p>
<ul>
<li>At the end of the download progress bar, a “what happens next?” indicator could be shown — ie. “is saved in the download folder,” “is opened with iTunes,” etc.</li>
</ul>
<ul>
<li>The download history should support simple file system operations   (copy/move works, rename), and show where the file is located.</li>
<li>If a file is deleted, ghost it in the download log to indicate that the file has gone missing, and make it possible to  re-download. </li>
</ul>
<ul>
<li>Keep track of the new location if file is moved.</li>
</ul>
<ul>
<li>Warn when a download is in progress and you attempt to quit the browser.</li>
<li>Drag and drop should work from all representations (download panel <abbr title="and">&amp;</abbr> download history).</li>
</ul>
<h3>File <abbr title="and">&amp;</abbr> application handling</h3>
<p>On the infrastructure side, there are a lot of smaller problems that conspire to give the user a less-than-pleasant experience with regards to how files are handled.</p>
<p>Some of the issues that should be fixed:</p>
<ul>
<li><b>Replace “Save” with “Download” in the menus?</b> People do get confused by the difference between Save and Download. Right now, you “Save” a page in Google Docs when you edit, but you can also “Save” the page itself to disk on your computer. How are you supposed to know which one does what? Additionally, the word “download” has entered the mainstream vocabulary; for better or for worse. In the Firefox menu, we currently have a “Save As,” but no “Download” — should we stop using the word “Save” in our <abbr title="User Interface">UI</abbr> to make it more consistent? It makes sense, but probably requires some testing to find out whether people are comfortable with it. <a class="external-link" href="http://mozillalabs.com/testpilot/2010/03/17/popular-menu-buttons/">According to the Test Pilot studies</a>, people use this menu entry quite a bit.</li>
<li><b>Don’t ask every time, just do the default action for the common file   types.</b> If you ask questions all the time, people stop paying attention. This is the classic <abbr title="User Interface">UI</abbr> problem that Windows traditionally had when compared to Mac <abbr title="Operating System">OS</abbr> <abbr title="Ten">X</abbr>. If there’s a very logical, straightforward outcome of an action — don’t get in the way of the user. At Mozilla, we jokingly call the “OK” button the “Whatever” button, and there’s even <a class="external-link" href="http://blog.mozilla.com/dolske/2007/10/21/whatever/">an extension</a> that replaces all “OK/Agree/Yes” buttons with “Whatever” buttons to drive the point home.</li>
<li><b>Make the default action simple, make the advanced action powerful.</b> “Open With” (Save As?) should be how you get to adjust location/options. When you choose to special-case  something (ie.  explicitly choose to download using the right-click  menu), we should  give you all of the"explicit" options — you might want  to rename the  file and choose a location when you save it. If you just click the file, we give you the file, no questions asked.</li>
<li><b>The browser should be better at remembering locations.</b> It should remember  where on the file system you got the last file you uploaded to the  current site from, and the other way around — if you ask to download a  file from a site, and you’ve done it before, we should remember which  folder you saved it to. This has partially landed in the Firefox nightly builds, and when I go  back to using a version of Firefox (or other browsers), it makes me a very sad panda when it’s missing. Essential.</li>
<li><b>Support Content-<abbr title="Message-Digest algorithm 5">MD5</abbr> for downloads.</b> File corruption when downloading is becoming increasingly common, and is something we should protect you against. If the server supports it, we should verify the checksum of the file once it has been downloaded, and warn you if the file doesn’t seem like it was transfered intact. There’s already <a class="external-link" href="https://bugzilla.mozilla.org/show_bug.cgi?id=232030">a somewhat related bug for this</a> — but hopefully this can be unblocked by only applying it to downloaded files. We also probably need a new header these   days for arbitrary hashes that are not <abbr title="Message-Digest algorithm 5">MD5</abbr>, e.g. Content-Hash: sha256/jh42k5jgh345kj234</li>
<li><b>Detect duplicates.</b> We should tell you that you already have a file if we know that you do — and <abbr title="Message-Digest algorithm 5">MD5</abbr>/<abbr title="Secure Hash Algorithm">SHA</abbr>-1 can really  supercharge this. Wouldn’t it be cool if Firefox said “You already downloaded this file, it’s over here, do you really want us to download it again?”</li>
<li><b>Improve the Applications preference panel.</b> Firefox already gives you more control than any other browser here, but we should do a better job at pulling the most common applications to the top of the list. Things like how you handle email, web feeds and where you save your downloaded files should be at the top of the list. We should also indicate which entries you have changed, so these are at the top of the list too — and leave the default settings in a state where it’s obvious that you haven’t changed them.</li>
<img alt="" title="Not Firefox’ proudest moment." class="image-center" src="http://limi.net/media/Openwithnullscreenshot.png" />
<li><b>Clean up file type mappings.</b> We should let the <abbr title="Operating System">OS</abbr> handle the <abbr title="Multipurpose Internet Mail Extensions">MIME</abbr> types, or clone what it currently does    (while blacklisting certain things like <abbr totle="Executable">EXE</abbr>s). Some examples where this is currently wrong on my <abbr title="Operating System">OS</abbr> <abbr title="Ten">X</abbr> setup:</li>
<ul>
<li>Zip files show as “Stuffit Expander,” even though my system has  never had (and never will have!) Stuffit Expander installed</li>
<li>MP3 files say they are going to open with “QuickTime Player,” but  actually end up in iTunes instead</li>
<li>There’s a general mismatch where we seem to assume that if a file is of the “QuickTime Player” type (doh), it will open in that application.</li>
<li>See also screenshot above. How this is even possible is beyond me. But it should be fixed.</li>
</ul>
</ul>
<h3>In-content display of content we know how to handle</h3>
<ul>
</ul>
<p>Firefox has always been about giving control to the user, which is why a dialog like this seems a little out of place:</p>
<p><img alt="" title="Never force downloads" class="image-center" src="http://limi.net/media/Neverforcedownloads.png" /></p>
<p>Why can’t I open this file in the browser? Firefox knows how to render a <abbr title="Portable Network Graphics">PNG</abbr> file, why should I have to open the Preview application (oh, and <abbr title="What the Frak">WTF</abbr> is a “Preview Document”) just to look at the file?</p>
<p>In this case, the web site author or server software set the <code>content-disposition: attachment</code> header, which means that they insist on the image being downloaded. We should of course recognize and respect this, but we can do better, and present a <abbr title="User Interface">UI</abbr> that gives you an idea of what you’re about to download, so you can make that decision yourself, and not have it made for you:</p>
<p><img alt="" title="Inline content" class="image-center" src="http://limi.net/media/Inlinecontent.png" /></p>
<p> </p>
<p>The concept is to reframe the download <abbr title="User Interface">UI</abbr> to be a bit more like a  print preview — you see the content, and get a bar on top with options, a  “download preview,” if you will. Here is how it could work:</p>
<ul>
<li>If the browser was instructed to pop up a download dialog box, a bar  is displayed at the top of the page with commands to save the file, or  to send the file to an external application. This also solves the current issue where download dialogs are modal, and will steal focus if you’re in a different tab.</li>
<li>Similar to the download dialog box, users have the option of setting  the default behavior (preview, download, send to external app), but we  default to preview.</li>
<li>We try to increase the set of files that we can preview in the  browser to common types like <abbr title="Portable Document Format">PDF</abbr>, and perhaps even other document types — this might have security implications, so needs to be done with care.</li>
</ul>
<ul>
<li>Open doc/<abbr title="Portable Document Format">PDF</abbr> inline, but give the option to save it to disk — people    generally just want to read stuff, not put junk in their download folder.</li>
</ul>
<p>Additionally, when a plugin is being used to render content in the  content area — and the browser did not instruct Firefox to download the  file — we should probably display the same bar with command to download  or open in an external application. In a lot of cases the user might  be viewing a QuickTime movie or listening to an <abbr title="MPEG-1 Audio Layer 3">MP3</abbr> and they think “how  can I download this?”  The actual answer is to go to File → Save As,  but because that is so rarely done, people usually do not successfully  come to that conclusion.</p>
<h3>Avoiding the “minefields of the web”</h3>
<p>In the event that a download can’t be previewed (the user can’t   “stay on the Web”), or the user asked Firefox to remember another   behavior for the type of content, like automatic download or   automatically sending to another app, we should change the cursor icon   to indicate the action when they hover on the link, so that they always   know what is going to happen ahead of time.</p>
<p><img alt="" title="Cursor indicating file type" class="image-right" src="http://limi.net/media/cursorindicators.png" />We’d like to introduce indicators in the cursor/pointer  to give you a bit of warning before you click things that aren’t  actually web pages. Showing a small envelope icon for <code>mailto:</code>, a small document  icon for <abbr title="Portable Document Format">PDF</abbr>s (on hover) could be a simple way to indicating that clicking the link will have a somewhat unexpected result. </p>
<ul>
<li>Cursor should show the file type — or protocol in the case of <code>mailto:</code> —    to counter “the land mines of the internet.” The most common are <abbr title="Portable Document Format">PDF</abbr> files, <code>mailto:</code> links, iTunes store links.</li>
</ul>
<ul>
<li>Tag cursor icon with file type icon if link is a binary file.</li>
</ul>
<p>Starting an application like a <abbr title="Portable Document Format">PDF</abbr> reader or an email client — or just downloading any file — can take a lot of time, and is often an unexpected effect of clicking a link on a page. We should able to give people a better expectation of what will happen before they do this.</p>
<h3>Unifying security questions</h3>
<p>On modern versions of Windows and Mac <abbr title="Operating System">OS</abbr> <abbr title="Ten">X</abbr>, the “this is a dangerous file from the internet” dialog has been handed off to the <abbr title="Operating System">OS</abbr> itself:</p>
<p><img alt="" title="Windows Explorer warning for executable" class="image-center" src="http://limi.net/media/ieexplorersecuritywarning.png" /></p>
<p><img alt="" title="Mac Finder warning for executables" class="image-center" src="http://limi.net/media/safarifilewarning.png" /></p>
<p>This means that when downloading anything using Firefox, you’ll get <i>two</i> questions about whether you want to open the file on these operating systems. This is unnecessary, and we should avoid asking on the platforms that already have this enabled. It’s not a real security measure in any case — and we should definitely still ask for so-called “drive-by downloads.”</p>
<h3>Drive-by downloads</h3>
<p>In general, we want to do the right thing when you download files — but there are cases where we should <i>always</i> show the download dialog, the cases known as “drive-by downloads.” In short, these downloads are triggered by events that were not caused by you clicking a link. A common variant is the page that redirects to a downloadable file, so you didn’t actually click the link to get the file.</p>
<p>There are likely to be edge cases that we don’t know about, but we should be able to find a compromise between usability and security — and err on the side of security when it isn’t possible to detect what the obvious thing to do is.</p>
<ul>
</ul>
<h2>Next steps <abbr title="and">&amp;</abbr> feedback</h2>
<p>Of course, we want to hear your ideas. Any obvious things that could be improved, any interesting approaches in other browsers or applications? The preferred approach is to put something on your blog (as long as you mention my name on the blog and link to this post, I’ll discover it), or you can give feedback in <a class="external-link" href="http://groups.google.com/group/mozilla.dev.usability/">Mozilla’s dev.usability forum</a>. If you want to email me directly, you can do that too: <a class="mail-link" href="mailto:limi@mozilla.com?subject=Improving downloads">limi@mozilla.com</a>.</p>
<p>Looking forward to hear your thoughts on this, and we hope this document can help make downloading in <i>all</i> web browsers better.</p>
<p><abbr title="Post Scriptum">PS:</abbr> I will update this post with links to bug numbers in the Bugzilla issue  tracker once we have decided how the individual issues should be filed, and with a  meta-bug that you can subscribe to if you’re interested in them all. I will post a short notice on this site when it’s ready. <span class="endMarker"></span></p><img src="http://feeds.feedburner.com/~r/limi/~4/yJfD1QXuCP0" height="1" width="1"/>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Alexander Limi</dc:creator>
    <dc:rights />
    
      <dc:subject>User Interfaces</dc:subject>
    
    
      <dc:subject>Mozilla</dc:subject>
    
    
      <dc:subject>Firefox</dc:subject>
    
    <dc:date>2010-03-25T11:40:00Z</dc:date>
  <feedburner:origLink>http://limi.net/articles/improving-download-behaviors-web-browsers</feedburner:origLink></item>


  <item rdf:about="http://limi.net/articles/resource-packages">
    <title>Making browsers faster: Resource Packages</title>
    <link>http://feeds.limi.net/~r/limi/~3/F9Fm_FrvohQ/resource-packages</link>
    <description>A proposal to make downloading web page resources faster in all browsers</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><small>(<a href=http://limi.net/articles/resource-packages>To read this article with its formatting and typography intact, click here</a>)</small></p><p>Update, summer 2011: The Firefox team has decided to pursue these types of improvements via <abbr title="Abbreviation doesn't actually mean anything :P">SPDY</abbr> and <abbr title="Hypertext Transfer Protocol">HTTP</abbr> Pipelining instead, but I will keep this original article about Resource Packages online.</p>

<hr />

<p>What if there was a backwards compatible way to transfer all of the resources that are used on every single page in your site — <abbr title="Cascading Style Sheets">CSS</abbr>, <abbr title="JavaScript">JS</abbr>, images, anything else — in a single <abbr title="Hypertext Transfer Protocol">HTTP</abbr> request at the start of the first visit to the page? This is what Resource Package support in browsers will let you do.</p>

<hr />

<p>Update: There's now a proper <a href="http://people.mozilla.com/~jlebar/respkg/">Resource Package specification</a>, and any details there override whatever is written here. This article is a bit more conversational, and is useful to understand what we’re trying to do. If you’re looking for specifics — like what formats we support and how we parse — please refer to the formal specification instead of this article.
</p> 

<hr />

<p>
When it comes to browser performance, it’s widely known that a lot of the time is spent waiting for <abbr title="Hypertext Transfer Protocol">HTTP</abbr> requests. You are probably familiar with the issue; a well-known optimization technique is to reduce the number of <abbr title="Hypertext Transfer Protocol">HTTP</abbr> requests that are done for a given web site, since browsers only do 2&ndash;6 requests in parallel. This is why techniques like <a href="http://www.alistapart.com/articles/sprites">image spriting</a> exist.
</p>
<p>
There are problems with image spriting, though. In addition to <a href="http://blog.vlad1.com/2009/06/22/to-sprite-or-not-to-sprite/">potentially severe memory penalties</a>, they obfuscate the code — “What is this icon at 704px, exactly?” — and every time you add a new icon, you have to update the sprite file, which adds to the maintenance burden.
</p>

<p>
	Some images can’t be sprited (think about YouTube, which easily serves up 40 <abbr title="Joint Photographic Experts Group">JPEG</abbr> thumbnails on a given page), and there’s also other resources like JavaScript <abbr title="and">&amp;</abbr> <abbr title="Cascading Style Sheets">CSS</abbr>, which — while possible to combine — at the very least need one file each. You can see how this quickly saturates the available parallel <abbr title="Hypertext Transfer Protocol">HTTP</abbr> pipelines.
</p>


<p>
	Even if bandwidth is getting better, and the internet is getting faster, latency are actually getting worse in a lot of cases. With mobile internet browsing, and to some extent <abbr title="United States">US</abbr> domestic cable internet and <abbr title="Digital Subscriber Line">DSL</abbr>, the round-trip time for a single request can be slow, even if it downloads relatively fast once the transfer starts.
</p>

<p>
	While there are lots of workarounds to solve this class of problems, we suggest a standard approach that all browsers makers can easily implement, and that is <em>backwards compatible</em> with browsers that do not support it. We also want a solution that works for all types of resources, not only image bitmaps, and one that doesn’t require any new tools, file types or protocols.
</p>



<h2><a id="goals">Goals</a></h2>

<p>This proposal has the following goals:</p>

<ul>
	<li>Make it possible to serve all the resources (images, stylesheets, javascript) required by a page in a single <abbr title="Hypertext Transfer Protocol">HTTP</abbr> request, freeing up the other parallel requests to fetch resources that are page-specific.</li>
	<li>Be as simple to implement as possible, so anyone with a passing familiarity with <abbr title="Hypertext Markup Language">HTML</abbr> should be able to perform the optimization.</li>
	<li>Be entirely transparent to browsers that do not support it.</li>
	<li>Avoid retransmission of existing resources.</li>
	<li>Use existing tools that are widely used on all platforms.</li>
	<li>Support the “80% use case” over adding a lot of complexity to the spec.</li>
</ul>

<h2><a id="non-goals">Non-goals</a></h2>
<p>Some explicit non-goals of this proposal:</p>
<ul>
	<li>Invent new file formats</li>
	<li>Invent new compression formats</li>
</ul>

<h2><a id="implementation">Implementation</a></h2>

<p>Our goal is to be compression-format independent, but the obvious candidates for support are:</p>

<ul>
    <li><code>tar.gz</code>, <abbr title="Also known as">aka.</abbr> <code>.tgz</code> files — <abbr title="Multipurpose Internet Mail Extensions">MIME</abbr> type: <code>application/x-tar-gz</code></li>
    <li><code>zip</code> files — <abbr title="Multipurpose Internet Mail Extensions">MIME</abbr> type: <code>application/zip</code></li>
</ul>

<p>While both <code>zip</code> and <code>tar.gz</code> files do not have not the most elegant or efficient packing format out there, they have the following very desirable traits:
</p>

<ul>
<li>Easily available reference implementations.</li>
<li>Can be unpacked even in partial state — which means that we can stream the file, and put <abbr title="Cascading Style Sheets">CSS</abbr> and JavaScript first in the archive, and they will unpacked and made available before the entire file has been downloaded.</li>
<li>Excellent toolchain support, available on all major platforms, so it’s easy for web developers to use.</li>
</ul>

<p>Other formats, like <code>bzip</code> may be more efficient in terms of file size, but they aren’t streamable and can’t be unpacked as partial files — so they are considered unfit for this particular purpose.</p>

<p>We propose this markup to signal a zipped resource package:
</p>
<pre>
&lt;link rel="resource-package" 
      type="application/zip" 
      href="site-resources.zip" /&gt;
</pre>

<p>The default <abbr title="Multipurpose Internet Mail Extensions">MIME</abbr> type for a resource package will be <code>application/x-tar-gz</code>, and you can omit it in documents where it is valid, like in <abbr title="Hypertext Markup Language 5">HTML5</abbr>, where an equivalent would be:</p>

<pre>
&lt;link rel="resource-package" 
      href="site-resources.tar.gz" /&gt;
</pre>

<p>This will tell the browser to download this file first, and use the resources contained in the file instead of the referenced images, style sheets and javascript files — or for that matter, any other file. Browsers should prefer the files in the resource package, and do individual requests for images that are not contained in the package.</p>

<p>A given browser will probably block downloading any resources until the lists of files that are available in resource packages have been accounted for — or there may be a way to do opportunistic requests or similar, we leave this up to the browser vendor unless there’s a compelling reason to specify how this should work.</p>

<p>Older browsers that do not support resource packages will simply ignore this tag, and fetch the files normally, with one <abbr title="Hypertext Transfer Protocol">HTTP</abbr> request for each.</p>

<h2><a id="path-handling">Path handling</a></h2>

<p>Paths will be rendered relative to where the resource package is located, so you can supply additional directories inside the resource package to mimic existing site structure.

<p>The resource package is referenced as follows in a page somewhere on the site <code>www.example.com</code>:</p>

<pre>
&lt;link rel="resource-package" 
      type="application/zip" 
      href="/static/site-resources.zip" /&gt;
</pre>

<p>The Zip file has this internal structure:</p>

<pre>
javascript/jquery.js
css/reset.css
css/grid.css
css/main.css
images/save.png
images/info.png
</pre>

<p>In this example, the resolved path to the <code>main.css</code> file would be <code>http://www.example.com/static/css/main.css</code>. Notice how the path inside the resource package is added to the path where the actual file is located.</p>

<h2><a id="inline-html">File listing using inline HTML</a></h2>

<p>The most efficient way to declare what’s in the resource package without blocking to wait for the first part of it to load, is to do it inline in the resource package <code>&lt;link&gt;</code> tag itself:</p>

<pre>
&lt;link rel="resource-package" 
      type="application/zip" 
      href="/static/site-resources.zip"
      content="javascript/jquery.js;
               css/reset.css;
               css/grid.css;
               css/main.css;
               images/save.png;
               images/info.png" /&gt;
</pre>

<p>The only problem with the above is that it will break validation for existing specifications like <abbr title="Hypertext Markup Language 4">HTML 4</abbr> and <abbr title="Extensible Hypertext Markup Language">XHTML</abbr> 1.x, so we also support an alternate syntax, (ab)using the <code>title</code> attribute to get the same result:</p>

<pre>
&lt;link rel="resource-package" 
      type="application/zip" 
      href="/static/site-resources.zip"
      title="javascript/jquery.js;
             css/reset.css;
             css/grid.css;
             css/main.css;
             images/save.png;
             images/info.png" /&gt;
</pre>

<p>This makes the file work with the existing validators and older standards.</p>

<h2><a id="fallback">Fallback</a></h2>
<p>There should be no compatibility issues with old browsers, as they will just load the individual files instead of the resource package.
</p>

<p>Browsers that don’t implement this will seem slow in comparison to other browsers. Luckily, it should be a simple addition to any of the modern browsers.
</p>



<h2><a id="manifest">File listing using a manifest file</a></h2>
<p>You can also give the browser the ability to know what files are in the resource package file without reading the entire file first, by adding a <em>manifest</em> file that can contain this information. This file can be supplied as a separate file (useful if combining with Offline Resources), or as the first file in the file itself. Of course, this will be slower to get than defining the contents inline in the <abbr title="Hypertext Markup Language">HTML</abbr>, but can be easier and cleaner to implement, especially if you're using offline resource support already.</p>

<p>Example <code>manifest.txt</code> file:</p>

<pre>
javascript/jquery.js
styles/reset.css
styles/grid.css
styles/main.css
images/save.png
images/info.png
</pre>

<ul>
<li>This file <em>must</em> be the first file in the archive.</li>
<li>This file <em>must</em> be named <code>manifest.txt</code> when supplied as part of the archive.</li>
</ul>

<p>
	If this simple format looks familiar, that’s not a coincidence. Initially, we were looking at using either an <abbr title="Extensible Markup Language">XML</abbr> or <abbr title="JavaScript Object Notation">JSON</abbr> format to specify this, but we believe it’s easier to add a couple of new abilities to the offline resource specification instead. When using resource packages with <a href="https://developer.mozilla.org/En/Offline_resources_in_Firefox">Offline Resources</a> (which are also <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/offline.html">part of the <abbr title="Hypertext Markup Language 5">HTML5</abbr> spec</a>), we’d like it to be easy to extend the rules, so the offline manifest with resource package support could look like this:
</p>

<pre>
CACHE: resources=/static/siteresources.zip
javascript/jquery.js
styles/reset.css
styles/grid.css
styles/main.css
images/save.png
images/info.png

# The above section lists the files in siteresources.zip.
# To start a new section, do:
CACHE:
images/outside-package.png
</pre>

<p>The only thing we’d need to add to the <abbr title="Hypertext Markup Language 5">HTML5</abbr> offline spec is that it should ignore anything on the same line after <code>CACHE:</code> if it doesn’t know how to handle it. This means that you could potentially put the resource package definitions in your Offline Resources manifest — we would also support doing it the other way around, and put the Offline Resources manifest inside the resource package.
</p>

<p>This isn’t a requirement for implementing the initial version of resource packages, however — but could be an easy way to add support for it to the offline resource specification. If there’s a better way to do it, let me know.</p>

<h2><a id="duplicates">Duplicate files and override behavior</a></h2>

<p>If a resource is defined twice on the same path — e.g. using multiple resource-packages — the file defined last takes priority. This enables an application with offline mode to synchronize changes without downloading the entire resource package again.</p>

<p>For example, on the first sync, the browser sees a resource package like this: 
</p>
<pre>&lt;link rel="resource-package" href="/documents/offline-0.zip" /&gt;</pre>

<p><code>offline-0.zip</code> contains:</p>

<pre>manifest.txt 
doc1.html 
doc2.html 
</pre>

<p>Offline the application would be able to access documents at
<code>/documents/doc1.html</code> and <code>/documents/doc2.html</code>.
</p>

<p>The user then performs another sync and the browser now sees: </p>
<pre>&lt;link rel="resource-package" href="/documents/offline-0.zip" /&gt;
&lt;link rel="resource-package" href="/documents/offline-1.zip" /&gt;</pre>

<p><code>offline-1.zip</code> contains:</p>

<pre>manifest.txt 
doc1.html 
doc3.html</pre>


<p><code>doc1.html</code> and <code>doc3.html</code> would now be read from the <code>offline-1.zip</code>, <code>doc2.html</code>
would continue to be read from <code>offline-0.zip</code>.
</p>

<p>Even for use outside of the offline applications space, it allows pages to easily override the site look and feel with section-specific images and styling. A page could serve up:
</p>

<pre>&lt;link rel="resource-package" href="/static/main-theme.zip" /&gt;
&lt;link rel="resource-package" href="/static/section-theme.zip" /&gt;</pre>

<p>Resources in <code>section-theme.zip</code> would take precedence over the content in <code>main-theme.zip</code> — making it easy to do overrides without replacing the entire resource package.</p>


<h2><a id="examples">Two simple examples</a></h2>
<p>It’s not hard to see where Resource Packages could be useful in existing sites, two obvious categories would be:</p>

<dl>
	<dt>Supply the core layout &amp; functionality of a site</dt>
	<dd>Typically, you would ship over all the <abbr title="Cascading Style Sheets">CSS</abbr>, <abbr title="JavaScript">JS</abbr> and images that are used on every page in the site. These could be cached quite aggressively, and even use <a href="http://en.wikipedia.org/wiki/HTTP_ETag">ETags</a> to invalidate the resource package when needed.</dd>
	<dt>The thumbnail search result case</dt>
	<dd>Consider a <a href="http://www.youtube.com/results?search_query=ninja+cat">typical YouTube search results</a> page. It contains 20-40 thumbnails of videos, and there’s no easy way to add all these images into an image sprite, since the long tail of search results would vary a lot. Resource Packages would let you build a zip of search result thumbnails on the fly, and ship them all over in one <abbr title="Hypertext Transfer Protocol">HTTP</abbr> request. It would require some <abbr title="Central Processing Unit">CPU</abbr> power, but would be much faster for the end-user. This wouldn’t have to be cached, or could be cached on a per-search basis.</dd>
</dl>


<h2><a id="other-approaches">Other approaches</a></h2>
<p>There are several other approaches that could solve parts of this problem, but they all have issues with current browsers and graceful degradation and/or are trying to solve a slightly different problem:</p>
<dl>
	<dt><abbr title="Hypertext Transfer Protocol">HTTP</abbr> pipelining</dt>
	<dd>This is a more aggressive way of utilizing the <abbr title="Hypertext Transfer Protocol">HTTP</abbr> keep-alive mode, but is not implemented correctly by all web servers. Proxies have a hard time with it, some browsers also do, so it’s not really working unless you want to be aggressive and/or whitelist/blacklist certain servers. </dd>
	<dd> It also causes a “head-of-line blocking” issue, where if you request X and Y
on the same connection and X is slow, then Y is slowed too.</dd>
	<dt>Multipart <abbr title="Multipurpose Internet Mail Extensions">MIME</abbr></dt>
	<dd>Hard for integrators, requires special packing that isn’t trivial to do, and has poor browser support.</dd>
	<dt><abbr title="Java Archive">JAR</abbr> files or anything using data: <abbr title="Uniform Resource Locator">URL</abbr>s</dt>
	<dd>No reasonable fallback mode, as the file name is embedded in the href/src link, and browsers that doesn’t support it just won’t render it.</dd>
	<dt><abbr title="Speedy">SPDY</abbr></dt>
	<dd>While this effort from Google aims to make everything faster, it is largely orthogonal to what we’re trying to do with Resource Packages. It also requires you to retrofit both web browsers <em>and</em> web servers to make it work, which means it will take quite a while before this will be in common use. Resource Packages work without any changes to the web server software, and will work as soon as any browser supports it — with no adverse effects to the browsers that don’t.</dd>
</dl>

<h2><a id="notes">Additional notes</a></h2>
<ul>
	<li>The <acronym title="Compressed File">Zip</acronym> format doesn’t have <abbr title="Multipurpose Internet Mail Extensions">MIME</abbr> type support, so this will have to be solved by the browser based on filename extensions or other heuristics. We don’t believe this to be a problem, since browsers already have to do this.</li>
	<li>All the resources in the package will have the same headers (expiry, <a href="http://en.wikipedia.org/wiki/HTTP_ETag">ETags</a>, etc.) as the resource package itself. If you need different expiry dates or other caching settings, you should specify multiple resource files with different cache headers.</li>
	<li>You can specify a charset in the resource package definition. If unspecified, it is assumed that any non-binary files inside are <abbr title="Unicode Transformation Format (8-bit)">UTF-8</abbr>.</li>
</ul>

<h2><a id="next-steps">Next steps</a></h2>

<p>
	We have sent this out to the major browser vendors for feedback, and we will be implementing this in the next upcoming release of Firefox — which tentatively has the version number 3.7, but this may change.
</p>

<h2><a id="faq"><abbr title="Frequently Asked Questions">FAQ</abbr></a></h2>

<dl>
<dt>Does zipping up multiple optimized <abbr title="Portable Network Graphics">PNG</abbr>s or other files work with zip? Can it potentially increase file size or lead to a high unpacking <abbr title="Central Processing Unit">CPU</abbr> overhead?
</dt>
<dd>Zip automatically chooses the best of deflation or no compression. Images will usually not be compressed, since they already are, text files like <abbr title="Cascading Style Sheets">CSS</abbr>/<abbr title="JavaScript">JS</abbr> will be. In general, <abbr title="Central Processing Unit">CPU</abbr> impact from unzipping is negligible, even on slow devices.</dd>
<dt>How does this affect mobile devices, which have limited <abbr title="Central Processing Unit">CPU</abbr>s?</dt>
<dd>More realistic concerns are cache ability and bandwidth — as well as the latency on mobile networks — and memory. A lot of mobile browsers only keeps things in the browser cache at all if the individual file is something like 20<abbr title="kilobytes">kB</abbr> or less. For returning visitors, you suddenly need to download one large file again, instead of having multiple small files locally.</dd>
<dd>In general, mobile browsers clear their caches quite aggressively — although with the resource package spec, one would hope that they would implement more optimal handling and prioritize caching these, since they more likely to be valuable for browsing performance than another random image/<abbr title="Cascading Style Sheets">CSS</abbr>/<abbr title="JavaScript">JS</abbr> file in a site. </dd>
<dt>How would Resource Packages work with <abbr title="Content Delivery Networks">CDN</abbr>s?</dt>
<dd>There would be no special handling, these mirrors would just carry the resource package file like any other file they are supplying.</dd>
<dt>How would you manage priority in the resource package? It would be useful to decide which files get downloaded first.</dt>
<dd>The priority is managed by the order they are added to the resource package. If you want a specific order, it’s trivial to specify this on the command line, so we aren’t adding any special syntax for this. Also, we have to do it this way to take advantages of the ability to unpack and display resources while the file is still downloading.</dd>
<dt>I worry about reduced parallelism. Lots of sites make
heavy use of resource sharding across many hostnames to take advantage
of multiple connections. Won’t this be a problem?</dt>
<dd>Sites usually use multiple hostnames to get around per-host connection limits, which are almost entirely a latency issue — not a bandwidth issue. Resource packages make multiple hostnames unnecessary, because it solves the latency issue a different way.
</dd>
</dl>

<h2><a id="acknowledgments">Acknowledgments</a></h2>

<ul>
<li><a href="http://www.culater.net/">Mike Solomon</a> from YouTube for encouraging me to propose a solution to this issue.</li>
<li><a href="http://dbaron.org/">David Baron</a> <abbr title="and">&amp;</abbr> <a href="http://fantasai.inkedblade.net">Elika Etemad</a> from Mozilla for comments on the implementation feasibility, and for helping identify prior art.</li>
<li><a href="http://blog.vlad1.com">Vladimir Vukićević</a> <abbr title="and">&amp;</abbr> <a href="http://sicking.cc/">Jonas Sicking</a> from Mozilla for help with adapting the Offline Resources standard to handle Resource Packages.</li>
<li><a href="http://almaer.com">Dion Almaer</a> <abbr title="and">&amp;</abbr> <a href="http://benzilla.galbraiths.org/">Ben Galbraith</a> from Palm, <a href="http://stevesouders.com">Steve Souders</a>, <a href="http://greggman.com/">Gregg Tavares</a> <abbr title="and">&amp;</abbr> <a href="http://alex.dojotoolkit.org/">Alex Russell</a> from Google <abbr title="and">&amp;</abbr> the Chrome team for feedback on the proposal from an implementer’s perspective.</li>
<li><a href="http://www.benmathews.net/">Ben Mathews</a> from Facebook for feedback on compression formats.</li>
<li><a href="http://objectvibe.net/blog">Laurence Rowe</a> from <a href="http://www.jarn.com/">Jarn</a> for suggestions on how to handle duplicates/overrides.</li>
</ul>

<h2><a id="feedback">Improvements &amp; feedback</a></h2>

<p>If you have any suggestions on how to improve this proposal, send me an email at <a href="mailto:&#x6C;&#x69;&#x6D;&#x69;&#x40;&#x6D;&#x6F;&#x7A;&#x69;&#x6C;&#x6C;&#x61;&#x2E;&#x63;&#x6F;&#x6D;">limi&#x40;&#x6D;&#x6F;&#x7A;&#x69;&#x6C;&#x6C;&#x61;&#x2E;&#x63;&#x6F;&#x6D;</a> or even better, comment in the open thread over at <a href="http://groups.google.com/group/mozilla.dev.platform/browse_thread/thread/31779262c6b05205">Mozilla’s dev.platform forum</a>. It has been filed as <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=529208">bug #529208</a> in Bugzilla for those of you that want to monitor its progress. <span class="endMarker"></span></p>

<hr />
<p class="name" style="text-align: center">Proposal State: Ready for prototype implementation</p>
<p style="text-align: center">Revision 7: Feb 22<sup>nd</sup>, 2010 — Added new information on compression formats, both <code>zip</code> and <code>tar.gz</code> files are now part of the spec.</p>
<p style="text-align: center">Revision 6: Feb 12<sup>th</sup>, 2010 — Added a defined behavior for what happens when resources are defined twice.</p>
<p style="text-align: center">Revision 5: January 10<sup>th</sup>, 2010 — added inline definition of resource package content in a manner that is compatible with <abbr title="Hypertext Markup Language 4">HTML4</abbr>/<abbr title="Extensible Hypertext Markup Language">XHTML</abbr> validators.</p>
<p style="text-align: center">Revision 4: Nov 16<sup>th</sup>, 2009 — first published <abbr title="and">&amp;</abbr> widely circulated version, added Offline Resources support</p>
<p style="text-align: center">Revision 3: Nov 10<sup>th</sup>, 2009</p>
<p style="text-align: center">Revision 2: Sep 1<sup>st</sup>, 2009</p>
<p style="text-align: center">Revision 1: Jun 15<sup>th</sup>, 2009</p>
<img src="http://feeds.feedburner.com/~r/limi/~4/F9Fm_FrvohQ" height="1" width="1"/>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Alexander Limi</dc:creator>
    <dc:rights />
    
      <dc:subject>Mozilla</dc:subject>
    
    
      <dc:subject>Firefox</dc:subject>
    
    
      <dc:subject>Plone</dc:subject>
    
    <dc:date>2009-11-17T03:05:00Z</dc:date>
  <feedburner:origLink>http://limi.net/articles/resource-packages</feedburner:origLink></item>


  <item rdf:about="http://limi.net/articles/tab-matching-in-the-location-bar">
    <title>Tab matching in the Location Bar</title>
    <link>http://feeds.limi.net/~r/limi/~3/1ICZZKqYbBs/tab-matching-in-the-location-bar</link>
    <description>In Firefox 3.7, we want to bring tab matching to the location bar.</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><small>(<a href=http://limi.net/articles/tab-matching-in-the-location-bar>To read this article with its formatting and typography intact, click here</a>)</small></p><p>
One of the minor tweaks that we want in Firefox is the ability to switch tabs using the location bar. Yours truly has signed up to help shepherd this into the 3.7 release on the <abbr title="User Interface">UI</abbr> side.
</p>

<p>
This proposal is based on existing <a href="http://people.mozilla.com/~faaborg/files/shiretoko/awesomeBari2.png"> work from Alex Faaborg</a> and <a href="http://www.azarask.in/blog/post/tabs-in-the-awesome-bar/">thoughts from Madhava and Aza Raskin</a> around putting tabs in the location bar, and doesn’t stray very far from their proposals, so read those first. 
</p>
<p>
There are some smaller changes we want to try, as they simplify the interface:
</p>

<img class="image-center" src="http://limi.net/media/switch-to-tab.png" />

<p class="discreet" style="text-align: center">Apologies for butchering Faaborg’s original image for demonstration purposes. We might also want to tweak the wording to say something like “Switch to open tab” or similar to emphasize that aspect.</p>

<dl>
<dt>List the two choices adjacent to each other instead of using keyboard qualifiers like Shift or Alt</dt>
<dd>We don’t want to introduce modes here if we can avoid it.</dd>

<dt>Don’t show the <abbr title="Uniform Resource Locator">URL</abbr> as part of the entry for the already open tab</dt>
<dd>Loading a <abbr title="Uniform Resource Locator">URL</abbr> means loading the page — so we use this as an implicit indicator that the page will actually be loaded in the current tab if you select that entry.</dd>

<dt>The prioritized case is to switch to the active tab if one exists</dt> 
<dd>We have to test different weightings vs. <a href="https://developer.mozilla.org/en/The_Places_frecency_algorithm">frecency</a> and how it works in real-life scenarios, but we should be able to find a setting that makes it accurate and predictable.</dd>

<dt>Only the non-standard case needs a label</dt>
<dd>We don’t want to use a tab icon or similar here, since there’s already way too much visual noise in the AwesomeBar layout.<sup>1</sup>
<span class="sidenote"><sup>1</sup>I’m hoping we can convince Messieurs Stephen Horlander or Sean Martell to give the location bar results some visual design love for Firefox 3.7. In particular, we should get rid of the underline in the current style, since underline generally signifies a link in the browser context, and is a poor choice for a highlighting mechanism.</span> This will require some user testing — but if it’s too confusing, we could add in another label.
</dd>
</dl>
<p>
An upside of the combined approach is that the entries in the location bar results will keep the same size as the existing ones.
</p>

<h2>Tab Matching Preferences</h2>

<p>We will give people control of whether they want already opened tabs to show up in their location bar results. We add this setting to the location bar settings we already have in the preference pane:</p>

<p>When using the location bar, suggest:</p>
<ul>
	<li>History</li>
	<li>Bookmarks</li>
	<li><em>Tabs</em></li>
</ul>

<p>Tabs will be off by default, as this is more of a “power user” setting. You have to explicitly choose to turn it on if you want it. This is done to minimize impact for existing users, and to keep the location bar behavior simpler.</p>

<p class="discreet">We’ll do some user testing with it on by default and see how people react, but we suspect it will be confusing for a non-trivial number of our users. If it turns out it isn’t, we'll make it enabled by default.</p>


<h2>Related interface tweaks</h2>

<p>We also need more data on how it should behave when you have multiple windows. The current thinking is that it will match any tab in any window. We’ll have to do some testing to see if this is too confusing for people, switching to a different window is definitely a different experience. We might end up restricting it to only match within the current window instead. 
</p>

<p>
Another behavior we should fix as part of this improvement is how the Firefox <abbr title="User Interface">UI</abbr> behaves if you have the location bar hidden — currently you get the following dialog if you hit <kbd>⌘L</kbd> to enter a <abbr title="Uniform Resource Locator">URL</abbr> when that part of the <abbr title="User Interface">UI</abbr> is hidden:
</p>

<img class="image-center" src="http://limi.net/media/open-web-location.png" />

<p>
This is a remnant of the old “Open” dialog from earlier versions of Firefox. 
Instead of showing this, the location bar should slide down from the top and give you the interface you’re already familiar with, and disappear again once you have entered a <abbr title="Uniform Resource Locator">URL</abbr>. This way, you can hide both the location bar and the tabs, and just use the location bar to manage both. This also works well with full-screen mode.
</p>

<p>
Together, these changes fulfill the role of the <a href="http://limi.net/articles/reinventing-tabs-for-the-browser/#power-users">“Power User” interface</a> we detailed earlier.
</p>

<p>
We can always tweak this behavior once we have the initial implementation in place, but if there’s anything we didn’t think of — or improvements to the proposed approach — we’re always open to suggestions. In this case, please leave your comments on the <a href="https://wiki.mozilla.org/Talk:Firefox/Projects/Tab_Matches_in_Awesomebar">Mozilla Wiki page for Tab Matching</a> — thanks! <span class="endMarker"></span>
</p>
<img src="http://feeds.feedburner.com/~r/limi/~4/1ICZZKqYbBs" height="1" width="1"/>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Alexander Limi</dc:creator>
    <dc:rights />
    
      <dc:subject>User Interfaces</dc:subject>
    
    
      <dc:subject>Mozilla</dc:subject>
    
    
      <dc:subject>Firefox</dc:subject>
    
    <dc:date>2009-09-29T08:24:29Z</dc:date>
  <feedburner:origLink>http://limi.net/articles/tab-matching-in-the-location-bar</feedburner:origLink></item>


  <item rdf:about="http://limi.net/articles/firefox-mac-installation-experience-revisited">
    <title>Firefox Mac installation experience, revisited</title>
    <link>http://feeds.limi.net/~r/limi/~3/fMcH8nzE7Qc/firefox-mac-installation-experience-revisited</link>
    <description>A second look at the issues with installation of Firefox on the Mac, with recommendations on how to fix them.</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><small>(<a href=http://limi.net/articles/firefox-mac-installation-experience-revisited>To read this article with its formatting and typography intact, click here</a>)</small></p><p>A short while ago, I posted an article on how to <a href="http://limi.net/articles/improving-the-mac-installer-for-firefox/">improve the Firefox installer experience</a> on the <abbr title="Operating System">OS</abbr> <abbr title="10">X</abbr> platform, and how we were looking at making the user experience better for first-time Mac users and people coming from other platforms. 
</p>

<p>
After posting the first article, we continued investigating how to make the installation experience better, and a developer urged us to check out how <a href="http://delicious-monster.com/">Delicious Library</a> did it — by giving people the option to move the application to the right folder when it was first launched.
</p>

<p>A few days later, the article got picked up by a number of Mac blogs and news sites — among the most well-known: <a href="http://daringfireball.net/2009/09/how_should_mac_apps_be_distributed">Daring Fireball</a>, <a href="http://digg.com/apple/The_confusing_art_of_installing_apps">Digg</a>, <a href="http://www.tuaw.com/2009/09/21/the-confusing-art-of-installing-apps/"><abbr title="The Unofficial Apple Weblog">TUAW</abbr></a>, <a href="http://www.osnews.com/story/22195/Improving_the_Mac_OS_X_Application_Installation_Process"><abbr title="Operating System">OS</abbr>News</a>, 
as well as the French <a href="http://www.macgeneration.com/news/voir/136495/firefox-nouvel-installeur-et-abandon-de-tiger">MacGeneration</a>.
</p>

<p>Soon, the hate mail started trickling in. “Nothing is wrong with the Mac install experience.” “People that can’t teach themselves how disk images work shouldn’t be allowed to use a Mac!” <em>&amp;</em>cetera. I wish I was making this up, but these <em>are</em> from real emails. Fun stuff.
</p>

<p>But there was also a surprisingly large, second group of people: software developers and support people. To quote from one of the emails:
</p>

<blockquote>
<p>“As a former Mac Genius I have literally seen hundreds (thousands?) of instances of the issue you describe. I have heard the confusion regarding two Firefox icons, and ‘why does it always take so long?’ [when starting an application]”
</p></blockquote>

<p>They all offered up different ways to get around the issues with disk image-based installs, but there was one common thread in all their responses:</p>

<p><em>The disk image-based process for installing applications in <abbr title="Operating System">OS</abbr> <abbr title="10">X</abbr> is broken.</em></p>

<p>
We mentioned the Delicious Library install behavior earlier — Daring Fireball linked to <a href="http://www.potionfactory.com/node/251">great write-up</a> from the developer of the application <a class="name" href="http://www.potionfactory.com/thehitlist/">The Hit List</a> — where developer <span class="name">Andy Kim</span> describes this move-on-launch behavior in detail.
Even cooler, he released <a href="http://github.com/potionfactory/LetsMove/">the code to do this</a> as open source.
</p>

<p>
In short, it detects whether the application gets launched from a disk image or the downloads folder, and offers to move the application to an appropriate location:
</p>

<img class="image-center" src="http://limi.net/media/applications-move.png" />

<p>
As a long-time Mac user, I strongly agree that installers shouldn’t be used unless absolutely necessary. But there’s also a difference when you have an audience as big as Firefox does, and different concerns that were minor with a smaller user base suddenly become a significant roadblock for adoption. This is why we initially investigated having an installer.
</p>

<p>
However, given the option to detect when people are launching it from the disk image or the Downloads folder, we can accomplish what we want without an installer. When we saw the Delicious Library<sup>1</sup> behavior,<span class="sidenote"><sup>1</sup> I don’t actually know who invented this behavior, but it’s a very elegant solution given the constraints.</span> the installer option was no longer something we wanted to pursue.
</p>



<h2 style="clear:both">Our options, given an installer-less setup</h2>

<dl>
<dt>Ship a <acronym title="Disk Image">DMG</acronym> like we currently do, and add disk image detection.</dt>

<dd><abbr title="Advantages">Pro:</abbr> Provides a dedicated disk image window in the Finder with only one choice — presentation is nicer, and it’s more obvious what to do next. Makes it easy to see which version of Firefox the disk image contains.</dd>
<dd><abbr title="Disadvantages">Con:</abbr> Leaves the disk image behind, unless we include code to unmount <em>&amp;</em> delete the disk image as part of the application.
</dd>

<dt>Ship as an internet-enabled <acronym>DMG</acronym> or as a <acronym>zip</acronym> file, with the “Downloads” folder detection.</dt>

<dd><abbr title="Advantages">Pro:</abbr> Both zip files and internet-enabled disk images automatically unpack, leaving less clutter on the file system.</dd>
<dd><abbr title="Disadvantages">Con:</abbr> Leaves the file in the “Downloads” directory, where it may not be visible if there’s a lot of clutter. It also makes it harder to see which version of Firefox you have downloaded.
</dd>


</dl>

<p>We’re partial to the internet-enabled <acronym>DMG</acronym> solution since it’s less involved, leaves fewer stray files<sup>2</sup> on the system,<span class="sidenote"><sup>2</sup> It unpacks the the disk image <em>&amp;</em> removes it, leaving you with just the application-but allows you to retrieve it from the Trash if you really need&nbsp;it.</span> and requires less of a change to the current installer build process.</p>

<p>
Our — admittedly minor — issues with <acronym>ZIP</acronym> when compared to the <acronym>DMG</acronym> approach are:
</p>
<ul>
	<li>Unpacking the <acronym>ZIP</acronym> file will leave the original archive in the “Downloads” folder, so you have to remove it manually — unless you changed that setting. We want to leave as little clutter as possible.</li>
	<li>The <abbr title="Cyclic Redundancy Check">CRC</abbr> error checking that <acronym>ZIP</acronym> uses to verify its files is slightly less robust than the <acronym title="Disk Image">DMG</acronym> equivalent. It’s usually good enough, so this is also a minor issue.</li>
</ul>

<p>
Considering this, and with the goal of making the change as non-intrusive as possible for our current build setup, the internet-enabled disk image is our preferred approach.
</p>


<h2 style="clear:both">The new Firefox installation experience</h2>

<p>After considering all of the above factors, we believe the Firefox installation experience on <abbr title="Operating System">OS</abbr> <abbr title="10">X</abbr> should ideally look like this:</p>

<ol>
	<li>Initiate the Firefox download.</li>
	<li>When download completes, Safari will unpack the disk image, throw away the <acronym title="Disk Image">DMG</acronym> file, and show a Firefox icon in its download window — as well as selecting it in the Finder in the background.</li>
	<li>When you double-click the Firefox file, it gives you the options to:
		<ul>
			<li>Move Firefox to the Applications folder,</li>
			<li>Add Firefox to the Dock,</li>
			<li><em>&amp;</em> set Firefox as your default browser.</li>
		</ul>
		&hellip;all of these actions are optional, of course.
	</li>
</ol>

<p>We believe this gives us the best of both worlds — predictability and flexibility for the power users, and simplicity and for people that are new to the Mac. We hope you agree. <span class="endMarker"></span></p>

<p class="discreet">
As explained in the previous article, the Firefox team is currently busy getting the 3.6 release out on time — so if you’re a Mac developer with some spare cycles to make this happen, <a href="http://groups.google.com/group/mozilla.dev.apps.firefox/topics">get in touch</a>. You even have <a href="http://github.com/potionfactory/LetsMove/">the code to get you started</a>.
</p>

<img src="http://feeds.feedburner.com/~r/limi/~4/fMcH8nzE7Qc" height="1" width="1"/>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Alexander Limi</dc:creator>
    <dc:rights />
    
      <dc:subject>User Interfaces</dc:subject>
    
    
      <dc:subject>Mozilla</dc:subject>
    
    
      <dc:subject>Firefox</dc:subject>
    
    
      <dc:subject>Software</dc:subject>
    
    <dc:date>2009-09-22T23:40:00Z</dc:date>
  <feedburner:origLink>http://limi.net/articles/firefox-mac-installation-experience-revisited</feedburner:origLink></item>


  <item rdf:about="http://limi.net/articles/improving-the-mac-installer-for-firefox">
    <title>Improving the Mac installer for Firefox</title>
    <link>http://feeds.limi.net/~r/limi/~3/08nt0zQdnr8/improving-the-mac-installer-for-firefox</link>
    <description>There has been a renewed focus on improving the Firefox install experience recently — what can we improve on the Mac?</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><small>(<a href=http://limi.net/articles/improving-the-mac-installer-for-firefox>To read this article with its formatting and typography intact, click here</a>)</small></p><p class="discreet">There’s now <a href="http://limi.net/articles/firefox-mac-installation-experience-revisited">a part 2 available</a> for this article, read both!
</p>

<p>
Lately, the <a href="http://blog.mozilla.com/metrics/" title="Blog of Metrics">Metrics team</a> here at Mozilla have conducted some great research into why some people leave the installer before Firefox is finished installing, <a href="http://blog.mozilla.com/metrics/2009/07/30/an-improved-experience-for-2000000-non-firefox-users/" title="An Improved Experience for 2,000,000 non-Firefox Users">uncovering a couple of bugs in the process</a>, and improving the way we ask people <a href="http://blog.mozilla.com/metrics/2009/08/03/more-changes-coming-to-the-firefox-installer/" title="More Changes Coming to the Firefox Installer">what will be their default browser</a>.
</p>

<p>
The team looked specifically at the Windows installer — which makes sense, since that’s where most of our new users are coming from — but there are some substantial issues with the Mac install experience that we will explain in more detail.</p>

<h2>Where Apple failed</h2>

<p>
There’s a lot to like about Mac OS X, but in their quest to make things as simple and uncomplicated as possible, Apple actually made some things worse for the (mythical) average user, as well as for people new to the Mac. One of these areas is application installation.
</p>
<p>
If you are unfamiliar with the Mac OS X install process, let us quickly outline how application installation on Mac OS X works:
</p>
<ol>
	<li>Download the file.</li>
	<li>Open the disk image.</li>
	<li>Drag the application to your Applications folder.</li>
	<li>Optionally add the application to the Dock.</li>
</ol>

<p>
While this process is familiar to experienced Mac users, and removes the need for uninstall scripts, very few new users that recently purchased their first Mac know how to do this. Unless they have a friend that has shown them how it works, it doesn’t make sense to anyone coming from a different platform.
</p>

<p>
To mitigate this, the download page for Firefox — as well as pretty much every other Mac application on the planet — attempts to tell you what to do once you have downloaded the disk image:
</p>

<img src="http://limi.net/media/firefox-three-steps.png/image_large" />

<p>
The problem with this should be obvious — by the time the download is complete, that web page is usually long gone, and many people don’t read these kind of instructions at all.
</p>

<p>To make matters even worse, Firefox is often one of the first applications that people new to the Mac go to download and install, since they want the familiar browser they have used earlier. They might catch on to how this works later, but it’s a fair bet that they don’t know this as new Mac users.</p>


<p>
Some common errors that we have seen repeatedly among informal testing with friends and family are:
</p>

<dl>
	<dt>They drag the application to their dock directly.</dt>
	<dd>This creates a link to the file <em>inside</em> the disk image, which means that every time they try starting Firefox, the disk image is unpacked and mounted, and starting of Firefox becomes very slow, which makes it a bad experience.</dd>
	<dt>They think that starting Firefox is done by opening the disk image every time.</dt>
	<dd>This is very common, and the logic is that the first time they started Firefox, they had to do this, so they continue doing it. This makes starting Firefox a chore, since it takes a lot of clicks to accomplish.</dd>
</dl>

<p>
What’s interesting is that Apple <em>are</em> aware of this problem, and even added a warning that shows up when you try to run an application from the disk image:
</p>

<img src="http://limi.net/media/firefox-image-warning.png" />

<p>
Quick, spot the problem! It doesn’t actually tell you anything about <em>why</em> it’s a bad idea to run stuff from a disk image — or even what you can do to avoid the problem — they just state that you’re about to do so. Oh, and that the file is from the Dangerous Internet. For a company that <a href="http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGWindows/XHIGWindows.html#//apple_ref/doc/uid/20000961-TP10" title="Apple Human Interface Guidelines: Alerts">prides itself on informative dialog boxes</a>, this is quite surprising.
</p>

<h2>How we can make the Mac install experience better</h2>

<p>We can make some simple fixes to the current approach to make the experience better for people new to the Mac, while still retaining the power to put the file anywhere, per the classic OS X model.</p>

<p>What problems do we want to solve?</p>

<ul>
	<li>People that don’t understand the standard installation process on Mac should be helped towards their goal.</li>
	<li>Downloading Firefox and then forgetting about the download should be less common.</li>
	<li>Maintain the standard installation model for the users that prefer the drag <em>&amp;</em> drop install method.</li>
	<li>Make it possible to set Firefox as your default browser during the install process.</li>
</ul>

<p>How do we fix these problems? By supplying a dedicated installer in the disk image, similar to the standard Mac OS X application installer:</p>

<img src="http://limi.net/media/plone-installer.png" />

<p>We can fix all of these by using some capabilities of the standard Mac package installer and disk image creation tools supplied by Apple. In particular, they have features where you can <a href="http://osdir.com/ml/os.opendarwin.webkit.devel/2007-12/msg00037.html" title="Auto-launch installer after download">run an installer when a disk image is mounted</a>, like Apple does with some of their own disk images. This, combined with the auto-mounting of disk images downloaded via Safari, gives us an installation flow that is likely to not lose people along the way.</p>

<p>The final installation flow should look like this:</p>
<ol>
	<li>Start the Firefox download.</li>
	<li>When the download is complete, the disk image will mount automatically (if they were using Safari), and the Firefox installer runs.</li>
	<li>The install procedure continues similar to how it happens on Windows. </li>
	<li>As the last step of the process, the installer lets you set Firefox as the default browser, and start the application immediately. We have seen users forget that they just installed Firefox if you don’t let them start it at the end of the process, and make that the default choice.</li>
</ol>

<p class="discreet">
Note that experienced Mac users should be able to cancel the installer at any time and drag the Firefox application to the location they want instead, thus there should be no loss of functionality or flexibility for them.
</p>

<h2>Help us make it happen</h2>

<p>At Mozilla, we’re currently in crunch mode to get Firefox 3.6 ready, and therefore we have limited resources to look at creating a proper installer for Mac OS X right now. If you’re an experienced Mac OS X developer that would like to help out with creating a new installer that we can help test, we’d love to hear from you. Please send an email to the <a href="http://groups.google.com/group/mozilla.dev.apps.firefox/topics">dev.apps.firefox Google Group</a> — or via the <a href="https://lists.mozilla.org/listinfo/dev-apps-firefox">traditional mailing list</a> interface. If you want to track progress, we have filed a <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=516362">bug for the installer improvement</a> that you can subscribe to. <span class="endMarker"></span></p>

<p class="discreet">There’s now <a href="http://limi.net/articles/firefox-mac-installation-experience-revisited">a part 2 available</a> for this article, read both!
</p>
<img src="http://feeds.feedburner.com/~r/limi/~4/08nt0zQdnr8" height="1" width="1"/>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Alexander Limi</dc:creator>
    <dc:rights />
    
      <dc:subject>User Interfaces</dc:subject>
    
    
      <dc:subject>Mozilla</dc:subject>
    
    
      <dc:subject>Firefox</dc:subject>
    
    
      <dc:subject>Software</dc:subject>
    
    <dc:date>2009-09-14T09:42:37Z</dc:date>
  <feedburner:origLink>http://limi.net/articles/improving-the-mac-installer-for-firefox</feedburner:origLink></item>


  <item rdf:about="http://limi.net/articles/hello-mozilla">
    <title>Hello, Mozilla</title>
    <link>http://feeds.limi.net/~r/limi/~3/QsZizdhCMhw/hello-mozilla</link>
    <description>I have joined the Firefox UX Team at Mozilla to work on the next generation of web browsers.</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><small>(<a href=http://limi.net/articles/hello-mozilla>To read this article with its formatting and typography intact, click here</a>)</small></p><p>
	Coming from a web application background, I have always had a strong and opinionated interest in web browsers, and know more than I really should about rendering engines, <abbr title="Cascading Style Sheets">CSS</abbr> implementation and all the other stuff that web developers struggle with every day. It’s not pretty, but the past two years have finally brought some real progress in this area.
</p>
<p>
  On the end-user side of things, the web has evolved tremendously the past few years, but there are still elements of the interaction models that are fundamentally broken, and the approachability for people that are new to the internet&#8202;&mdash;&#8202;or are otherwise disadvantaged&#8202;&mdash;&#8202;isn’t as good as I’d like it to be. In the other end of the spectrum, all current web browsers struggle with scaling up their user interface to keep up with the most demanding power users.
</p>

<p>
 With my new job at Mozilla, I get to put my efforts towards making the leading open source browser even better, and help advance the web, change the way people use the internet&#8202;&mdash;&#8202;and hopefully fix some of my own pet peeves along the way.
</p>

<p>Another reason that I’m very excited about working here is that Mozilla <em>gets</em> open source. They <em>get</em> evangelism, and they <em>get</em> open standards. The chance to work with experts in these areas will help me advance both the Plone and Mozilla projects.
</p>
<p>
	I don’t think I could have asked for a better fit, or a nicer group of people. I’m looking forward to the opportunity ahead of me, and I can already tell that it’ll be expanding my horizon in unpredictable and amazing ways.
</p>

<p>
  I couldn’t be more excited about what the future holds. <span class="endMarker"></span>
</p>
<img src="http://feeds.feedburner.com/~r/limi/~4/QsZizdhCMhw" height="1" width="1"/>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Alexander Limi</dc:creator>
    <dc:rights />
    
      <dc:subject>Mozilla</dc:subject>
    
    
      <dc:subject>Meta</dc:subject>
    
    <dc:date>2009-04-22T21:00:00Z</dc:date>
  <feedburner:origLink>http://limi.net/articles/hello-mozilla</feedburner:origLink></item>





</rdf:RDF>
