FUEL/Ideas

< FUEL
Revision as of 15:35, 20 December 2006 by MarkFinkle (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Purpose

The purpose of the extensibility framework is to make it easier for extension developers to hook into toolkit and application level systems. The framework will also provide utilities that make accessing toolkit services and application data easier. By providing a known, documented, stable framework for extension developers, extensions can rely less on using internal, undocumented application code and hacks. The result will be more stable extensions, and therefore, a more stable application. Changes in application code should have less of an affect on extensions compatibility.

In addition to making it easier to work with toolkit and application system, the framework will provide general purpose simplification utilities. There are many JavaScript utility frameworks for DHTML, but these usually do not work in Mozilla chrome with XUL and XPCOM. Therefore, the framework will include utilities to make it easier to work with XUL DOM and events inside chrome.

Overview

The extensibility framework is a set of abstractions for toolkit and application level systems. Toolkit systems are usually frozen and documented, but can be hard to use or understand. The framework will provide utilities to make it easy to use toolkit services and components. On the other hand, application systems are not well documented and could change from release to release. The frame work will provide utilities to access application level data and hook into application level events and notifications.

Toolkit objectives:

  1. Make it easier to access interfaces, components and services.
  2. Provide convenience wrappers for enum / launching windows
  3. Provide a threaded wrapper for nsIProcess

Application objectives:

  1. Make it easier to access data and meta data
    1. Bookmarks
    2. Microsummaries
    3. Search Providers
  2. Provide convenient way to monitor application events/notifications
    1. Startup sequence [toolkit -> application ->application windows]
    2. Extension sequence [download -> install/fail -> updates -> uninstall]
    3. Downloads [start -> progress -> finish]
  3. Provide convenient ways to interact with application UI
    1. Adding toolbar buttons
    2. Chrome to Content communication

Simplification objectives:

  1. Provide jQuery / Prototype convenience tools for working inside chrome
    1. Easy XUL DOM builder
    2. Hookup events to elements in JS (not XUL) and promote using best practices (commands, keys, and controllers)
    3. Localization utilities for accessing string bundles