Monday, December 1st, 2008
Chromium can’t be everything to all people. People use web browsers in a variety of environments and for a wide variety of jobs. Personal tastes and needs vary widely from one user to the next. The feature needs of one person often conflict directly with those of another. Further, one of the design goals of Chromium is to have a minimal light-weight user interface, which itself conflicts with adding lots of features.
User-created extensions have been proposed to solve these problems:
- The addition of features that have specific or limited appeal (“that would be great as an extension”).
- Users coming from other browsers who are used to certain extensions that they can’t live without.
- Bundling partners who would like to add features to Chromium specific to their bundle.
They then define the goals:
An extension system for Chromium should be:
- Developing and using extensions should be very similar to developing and using web pages.
- We should reuse the web platform wherever possible instead of creating new proprietary APIs.
- Web developers should be able to easily create Chromium extensions.
- Installing and using an extension should feel lightweight and simple, like using a web app.
- It should be possible to create extensions as polished as if they had been developed by the Chromium team.
- Eventually, it should be possible to implement major chunks of Chromium itself as extensions.
- There should be only one extension system in Chromium that handles all types of extensibility.
- Infrastructure like autoupdate, packaging, and security should be shared.
- Even traditional NPAPI plugins should be deployable as extensions.
- The system should require low ongoing maintenance from the Chromium team, and minimize potential for forward compatibility issues.
- We should not need to disable deployed extensions when we release new versions of Chromium.
- Extensions should not be able to crash or hang the browser process.
- Chromium should assign blame to extensions that are overusing resources via tools like the task manager and web inspector.
- Poorly behaving extensions should be easy to disable.
- It must not be possible for third-party code to get access to privileged APIs because of the extension system.
- Extensions should be given only the privileges they require, not everything by default.
- Extensions should run in sandboxed processes so that if they are compromised, they can’t access the local machine.
- It should be trivial for authors to support secure autoupdates for extensions.
- We must be able to blacklist extensions across all Chromium installations.
- Extension development must not require use of any Google products or services.
- Extensions should work the same in Chromium as in Google Chrome.
As the new kid on the block, they get to learn from the good and bad of other add on systems (IE, Firefox, etc). What would you like to see? I love the idea of being able to do as much as possible by using the Web platform as it is, and doing things like adding some new APIs, but also additions to CSS and the like versus a new system.
I would also love to see the Chromium folks working with others to start sharing some work here. For example, it would be great to have the vbox/hbox work shared. David Hyatt did a lot of work there back in the day with WebKit already.
Posted by Dion Almaer at 1:28 am