Providing eveything any application may want was never the goal of the GRE as I understood it, rather, it was to provide everything all application must have. As such, the original intent of the GRE was to provide a factoring of components found in all mozilla apps at a rather low level. The layout engine, XPCOM, networking code, and so forth fit into this category. A GRE is installed the first time a mozilla app is placed on a machine, and shared by compatible mozilla apps. It is also fixed in terms of its definition. The intent behind having a GRE is to save space on the hard disk, and to save time spent downloading and unpacking stuff at install time. One would not expect to see things in a GRE that were not absolutely fundamental, by this definition. GRE is "kernel" space, not "user" space (I use those terms loosely, but if you consider mozilla to be a platform, and then it almost makes sense to consider the GRE being kernel space and apps like a browser, mail client, or composer being user space).

Extensions seem to me to be in user space primarily because they are not universally essential.

Perhaps what is needed is an addition space, an "extensions" space that has additional stuff in it that is not "core" functionality, but might be shared nonetheless. But it would be good IMHO to make this space distinct from the GRE, for fear of the GRE becoming a kitchen sink that strays from the original goals.

If you are from a Unix persuation, GRE might be what you find in /lib, required by nearly every application, while extensions might be what is installed in /usr/lib.

syd

Benjamin Smedberg wrote:

I have filed and taken several bugs having to do with extensions and the GRE, and I would like to outline my plans for GRE extensions (and extensions in general) so that people may comment. Please reply to n.p.m.xpinstall, and not to the bugs, unless you have a patch or implementation comment. The overarching bug is bug 209439.

Definitions:
"extension" == a browser addon or utility (installed with XPInstall)

My plan has the following goals:

1) allow extensions to be registered with a GRE, so that they can be made available to multiple applications using the GRE
2) allow extensions to be installed into their own directories, instead of being installed in the same directory as an application
3) allow extensions (which use only frozen interfaces) to work with multiple versions of the GRE
4) allow extensions to be un-installed


Currently, extensions "piggyback" on top of an application's chrome and components directories. This makes it difficult/impossible to un-install extensions. Instead, it should not be difficult for extensions to maintain their own chrome and components locations.

Implementation-prerequisites:
1) The chrome: service needs to be extended to register arbitrary chrome directories (bug 210838)


Implementation:
Each extension would have an RDF file describing itself. The GRE would include an nsIExtensionManager service, which would allow applications to enumerate/discover available extensions, register extensions, and enable/disable extensions as necessary. The GRE would not contain any UI for extensions; any UI would be managed by applications. There would also be a little command-line utility with the GRE that would register extensions.


Extensions would not be enabled by default; instead, after the application initializes the GRE, it would need to use the nsIExtensionManager to enable the extensions that it wished to use.

Although every extension could use this mechanism, extensions meant for multiple applications would benefit most from this scheme. Some important examples would include:
DOM Inspector
Venkman
JSLib
tranformiix


I feel that GRE extensions are necessary, in order for the new roadmap to be implemented effectively.

--BDS

P.S. Can I also argue that there ought to be a second alpha before 1.5beta? Not much of the current roadmap has been completed yet, and we're going to freeze 1.5a on Wednesday... how about another month and then 1.5a2?







Reply via email to