Author: Benjamin Smedberg
Date: 25-Feb-2004
I have been floating the idea of a semi-single-profile setup for the
new-toolkit apps, but I never wrote a complete proposal. This is my
first cut at a serious proposal for discussion.
The problem was originally discussed in a long series of emails
about how the new-app extension manager would register XPCOM components
which were part of extensions installed in the profile. There was talk
of having a "tiered" compreg, but I argue that to be a major
re-architecturing for little benefit. We could also register profile
components at startup and un-register them at shutdown: this doesn't
work well because the components may miss important startup
notifications.
Move profile-selection before XPCOM is initialized.
Since this may seem a bit abstract and I don't have a better way to
describe it, I'm going to present an timeline of the startup sequence,
with sidenotes about design decisions. For the moment, I'm presenting a
solution with full profile UI: firefox can simplify as appropriate:
#relative path is relative to ~/.phoenixIf the profile name exists, set it up with the profile dirserviceprovider and skip to the "launch" step below. If it doesn't exist, skip to "launch profile manager" below;
default=./default/<slt>
devel=/opt/devel-phoenix-profile
startup-default=devel
I am not sure the impact this will have on profile migration
strategy. I "think" we'll be fine, because migration should happen in
the profile manager, but I'm not sure that's how it actually works.
This system should continue to work with salted profiles. Other
people can decide whether we actually want to salt profiles.
We need to split and make sensible the profile dirserviceprovider.
It contains gecko keys and app keys all mixed together. We need to
document which directory service keys an embedding app needs to provide
in order for gecko to work correctly in various configurations, and
minimize this as much as possible by providing a defaulting mechanism.
Removing the profile dependency on libreg may imply other things I
haven't thought of... ccarlen? does profile/ keep other information in
registry.dat?
The start-xpcom-several times strategy is *supposed* to work, but
hasn't really been tested. There is probably static data scattered
around the tree that might need to be cleaned up more rigorously than
today.