Responsible First-run Usage

Assortment of first-run pages
Extension first-run pages are increasingly common and are a great way to inform the user about what the extension they just installed can do, how to access it, how to get help, and oftentimes guide the user through creating an account or logging in to a service. They are usually very graphical and clean-looking, and really show off the extension or author’s brand. Sometimes in addition to or in lieu of a first-run website in a new tab, additional first-run components are used, such as opening a sidebar or popping up a modal dialog or wizard.

The practice of using first-run modal dialogs, pages, sidebars, and wizards is a great way to make sure the user doesn’t forget to try out your extension after installing it. But there’s a pretty big problem that’s developing as more and more extensions do this: installing more than one extension at a time. As an example, I installed 4 extensions that are “recommended” by Mozilla in a brand new Firefox 3 profile. This is what I got after restarting:


Screenshot of Firefox after first run after extension installs

That’s a pretty horrible sight even if you’re a confident add-on user. Now imagine yourself as a user trying an add-on for the first time, going to the add-ons site and installing a number of extensions that are featured on the home page. It gets worse: after you restart and see what’s in the above screenshot, close the Add-ons Manager and click OK on the modal dialog to see 3 new first-run pages opened, a wizard come up, and another modal dialog come up inside that wizard from a completely different extension but with no way of knowing it’s not related to the wizard extension:

Screenshot of Firefox after first run after extension installs

As a novice add-on user, my first question is “how do I get rid of these windows?”, and my second question is “how do I get rid of these add-ons?”. It gets even worse. After clicking Cancel on all these dialogs, the wizard and its unrelated modal dialog and sidebar will come up every time you start Firefox until they have gotten the attention they demand. Perhaps fortunately in this scenario, novice add-on users aren’t likely to install 4 add-ons at once before restarting. Yet.

One of the most requested features for addons.mozilla.org is add-on bundles and/or shopping cart functionality. The idea behind a “shopping cart” is that you browse around the site, add add-ons to your cart that you want to try out, and do the installation all at once. Or perhaps there’s a pre-made bundle of a few of consumer-friendly add-ons available for me to try out. When all of those are installed at once, I get the above result, even as an add-on beginner.

How do we fix this?

David Rolnitzky, Basil Hashem, a few others, and myself have been discussing this for some time. We have come to the conclusion that there’s no good solution to solve this from the addons.mozilla.org/server side. Warning the user that the add-ons they’ve selected might conflict is not a good first impression for someone that’s never tried add-ons before, and may justify fears they already have about add-ons being made by third-parties. I’m making this post to ask add-on developers, especially those that are “consumer friendly” to please be as courteous as possible in the first-run experience after a user installs your extension. How do you do this?

  • No first-run modal dialogs! If your extension requires an account login or other settings to be configured immediately, place these forms and elements in your first-run page, an area linked from your first-run page, or in a dialog that is only opened from a control on your first-run page. You may want to make sure your first-run page is in chrome:// if the data is sensitive or requires chrome privileges to be stored.
  • Only one first-run element is needed. If you have a first-run page, you shouldn’t need to use a wizard, dialog, or sidebar too. Instead, use the first-run page to teach the user how to access the extension and allow setup of the extension right from that page.
  • Standardize first-run page usage. Right now, this just means not doing anything particularly crazy or performance-degrading with your first-run page. I recently filed bug 459965 on adding a property to install.rdf that would make adding a first-run page to an extension as simple as typing in the URL to use, which will help make sure the first-run experience plays nicely for all extensions and could even be disabled if the user wanted.

If you’re an extension developer and know that your extension will make a user run away at first-run, please look into ways of improving the first-run experience. If you have a popular extension that does this, I may be contacting you soon to try working out these issues, as the success of package installs and bundling depends on a great user experience.