This entry is part of a series of posts about some of our proposed GSoC projects. See here the introduction blog post.
What is it: Silverfox is the codename of a feature that we would like to have in Firefox. This feature changes the browser configuration options to focus on beginner users, in an attempt to prevent these users from mis-configuring the browser by accident, either by accidentally clicking on things, changing settings without understanding them, or by being directed by websites to change prefs or to install add-ons.
Example use case: Tech-savvy family member configures a new computer for relatives, installs Firefox and sets appropriate settings and add-ons to their liking, and installs Silverfox after to prevent less tech-savvy family member from breaking their browser.
What does it involve:
- changing the preferences window by hiding or disabling advanced or dangerous features, and displaying an explanation to the user on why those are disabled,
- disallowing changes in about:config
- preventing changes to the homepage url and preventing other add-ons to be installed
- preventing toolbars from being hidden or broken through customization
- provide an API for new features to be supported by Silverfox without the need for changes in Silverfox itself
- should be done as an add-on using the Add-on SDK
Non-goals: It is important to understand that Silverfox is *not* a security feature, and it should not try to prevent itself from being disabled or uninstalled. Quite the opposite, it should educate users on why it’s activated and why changing prefs is problematic. It should not try to disable existing add-ons or resetting prefs that have already been changed. It should also not prevent Lightweight themes from being changed, or blocking add-ons from being updated.
Where to start: Your main first step will definitely be to learn how to use the Add-on SDK and to generate add-ons using it. After that, you should familiarize yourself with the preferences.xul file and the other files from the same folder referenced inside it, and understand the XUL structure there (using the DOM Inspector add-on will also help you a lot). You’ll also need to see the about:config file, and others that can be learned as the project advances.
What is expected in your project proposal: A great understanding of the project, its goals and non-goals, and a good idea on how to approach each of the features involved and how to time slice them. A proposal for good and non-intrusive UI that will be displayed for users of Silverfox, and how to handle the main interactions that will be created (but do not spend most of your proposal describing UI instead of the technical aspects of the project). Links to open-source code (e.g. a github profile) and/or add-ons that you have produced.