Support/Firefox Features/Clean up user profile

From MozillaWiki
Jump to: navigation, search
Please use "Edit with form" above to edit this page.


Ability to clean up user profile
Stage Shipped
Status Complete
Release target Firefox 13
Health OK
Status note Startup crash detection landed in 13. Migrator with stub import landed (no add-ons) in 12. UI to initiate from about:support landed in 13. UI from safe mode dialog landed in 15.


Product manager Asa Dotzler
Directly Responsible Individual Matthew Noorenberghe
Lead engineer Matthew Noorenberghe
Security lead `
Privacy lead `
Localization lead `
Accessibility lead `
QA lead Ioana Budnar
UX lead Alex Limi
Product marketing lead `
Operations lead `
Additional members `

Open issues/risks

  • Since OS X and Linux don't have installers, we don't have a way to trigger this process for them upon re-installation. The other use-cases are still valid though.

Stage 1: Definition

1. Feature overview

The Reset Firefox feature will provide a way for users to automatically fix Firefox by creating a new profile and migrating their data (bookmarks, history, passwords, etc).

This feature falls primarily in the Experience category (from the "Discover, Experience, and Connect" vision statement.)

There are a number of serious Firefox issues (not starting, crashing, unexpected behavior, lost toolbars and more) that can be solved by creating a new profile. The problem is, creating a new profile (which is an incredibly difficult task) is not enough. A user will almost always want to also migrate their data to the new profile which is another difficult task. See these two articles (1, 2) for complete steps.

Many users try to reinstall Firefox to solve these issues but reinstallation doesn't do anything to the profile folder. Providing this option upon reinstallation and, in addition, offering this after consecutive start-up crashes and on the Troubleshooting Information page will make this feature both intuitive and discoverable.

  • There is a plan to remove the Profile Manager UI (Bug 214675) and add an external Profile Manager application (Bug 539524). This solution is fine from a testing point of view but for the user who is just trying to fix Firefox this will complicate an already difficult process. Our feature would make the removal of the profile manager ui irrelevant from the user's point of view.

2. Users & use cases

The goal is to take a difficult and confusing repair process that most people never discover (and often need one-on-one help to complete when they do find it) and turn it into an easy and discoverable operation that can be done by most users without guidance.

Example 1:
A user determines that "something" is wrong with Firefox, so they attempt to fix it by reinstalling. When the installer detects that the same version of Firefox already exists on the computer it will offer the option to repair Firefox by resetting it to its default state. That intent can be passed on to Firefox and the reset process will be started the next time Firefox starts.

Example 2:
After a third consecutive start-up crash, Firefox will offer to either start in safe mode so diagnosis can be done or to reset Firefox to it's default state.

Example 3:
A SUMO article or helper can direct a user to a simple method for repairing Firefox by accessing the Troubleshooting Information page and clicking the Reset Firefox button.

3. Dependencies

This will probably require the expertise of installer, migration, and Firefox front-end hackers, reviewers, and testers.

4. Requirements

  • Easy to use
  • Easy to discover (Ideally the user shouldn't have to go to SUMO to figure this out)


  • A Clean Install is another repair process that is not covered by this feature.

Stage 2: Design

5. Functional specification

There are three ways the Reset Firefox feature can be accessed:

  1. During installation we can detect or be told by the user that this is a repair attempt. That information will then be passed on to Firefox which will start the Reset Firefox process. Note that the reset process is not performed by the installer.
  2. A third consecutive startup crash will trigger Firefox to offer to start in safe mode or to reset Firefox.
  3. A user can start this process by clicking a "Reset Firefox" button on the Troubleshooting Information (about:support) page.

When the Reset Firefox command is invoked, Firefox will:

  1. Confirm with the user what actions are about to be taken
  2. Create a new user profile
  3. Migrate user data
    • Bookmarks
    • History
    • Saved passwords
    • Autofill form/search data
    • Extensions and themes
  4. Reset toolbars and controls
  5. Reset all user preferences to Firefox defaults
  6. Disable all add-ons and switch to the default theme
  7. Then Firefox will open using the new profile.
    • asa said: "do we want to load the add-ons manager on this restart so users can see they still have add-ons but those have been set to disabled? do we want to migrate their add-on prefs as well?
      • We don't know which add-on prefs are safe so I suggest not –– MattN

6. User experience design

Preliminary Mockups:

Stage 3: Planning

7. Implementation plan

Notes to keep in mind:

  • There are two different kinds of startup crashes:
    1. Caused by a user's profile
    2. Caused by code that loads in all profiles - may still crash on a new profile
      • I think that third-party code (except plugins) wouldn't get loaded in safe mode but if malware has infected Firefox install files then this will still be a problem.
        • The installer repair workflow may fix some of this.
  • The Reset Firefox process should run in safe mode to prevent crashes – runs in a new profile instead and pulls data
  • Non goal: Another option is to add a button to restart in safe mode from about:sessionrestore when it had trouble restoring the session. bug 347680
  • Safe mode should always be used before reset since reset causes data loss which may be unnecessary if safe mode would have solved the problem. As a result, I think that a button to restart in safe mode is a higher priority for about:support than going directly to a reset.
    • The safe mode dialog could provide a method to reset the profile
    • Less discoverable
  • We need to make the distinction between the reset process and making permanent changes in safe mode more clear as they appear to do the same thing in the UI. In reality, resetting involves more data loss since it's actually going to migrate only high priority data to a new profile.
  • Use prefs in the profile to keep track of crashes for startup crash detection
  • Add command-line argument(s) and/or environment variable(s) to launch the reset process
    • This is needed so that the installer has a way of telling Firefox to repair after installation
  • Migration to a new profile
    • Use profile migrator infrastructure
      • Can only migrate from the default/selected profile since the Toolkit Profile Service is going to be replaced in bug 214675
  • Migration of Places data (notes from rnewman)
    • Queries refer directly to a Places ID. If you do a low-level migration to a new DB, make sure that you don't break those foreign pseudo-keys!
    • Note that Sync relies on the GUIDs assigned to records. Those must persist.
    • For now, the entire places.sqlite file and bookmarkbackups directory are copied to the new profile.
  • Interaction with Sync (notes from rnewman; feel free to ask for clarification):
    • [TODO] N.B.
      , clearing all user-set prefs will eliminate the user's Sync configuration, with unpleasant consequences. (Take a look in about:config for services.sync.*.) If you start a blank profile, it'll pull down all the old prefs from the Sync server. If you preserve timestamps, the new values won't necessarily be uploaded, unless you send Sync the correct observer notifications for change events.
    • Note that Sync whitelists prefs to sync between devices (services.sync.prefs.*). You might want to think about that.
    • Similar caveats apply to other data stored in Sync. Making this feature work correctly with Sync will need a little bit of thought.
  • DONE - Make sure that UI isn't exposed in cases where we won't migrate due to ToolkitProfileService limitations

8. Reviews

Security review

sec-review happened on 2012-02-03. Completed 2012-03-05.

Privacy review


Localization review




Quality Assurance review


Operations review


Stage 4: Development

9. Implementation

  1. [DONE] in Mozilla 13 - bug 294260 – Safe Mode: Auto detect previous start-up failure and offer to start in safe mode
  2. [DONE] in Mozilla 12 - bug 273874 – Create migrator with bookmark support and simple file copies (dependencies)
  3. UI to reset profile
    • [DONE] in Mozilla 15 - bug 732303 - startup crashes & safe mode dialog
    • [DONE] in Mozilla 13 - bug 717070 - about:support with dialog
    • bug 750979 - Installer Reset option - Add profile reset option to installer on re-install
  4. Other migrations
    1. [DONE] in Mozilla 12 - bug 721265 - form history
    2. add-ons
  5. [DONE] in Mozilla 15 - bug 731047 - Privacy – Functionality to clean up the old profile
  6. Make data migration more conservative
    • prefer data export + import rather than file copies

Stage 5: Release

10. Landing criteria

  • Ensure migration of a profile that had sync setup still works - Done

Feature details

Priority P1
Rank 9
Theme / Goal Experience
Roadmap User Support
Secondary roadmap `
Feature list Desktop
Project `
Engineering team Desktop front-end

Team status notes

  status notes
Products ` `
Engineering Startup crash detection landed in 12. Migrator with stub import landed (no add-ons). Safe mode dialog UI landed in 15. Migrators to just copy the relevant files has landed (except add-ons). Can iterate as necessary to better handle corrupt files.
Security sec-review-complete Security/Reviews/CleanUpUserProfile
Privacy ` `
Localization ` `
Accessibility ` `
Quality assurance Signed off Test Plan
User experience ` `
Product marketing ` `
Operations ` `