On Thu, 11 Jan 2001, John Bandhauer wrote:
> Ari Heitner wrote:
> >
>
> I've lost track of *precisely* what you want to do here. If you
> just want to force xpti to notice a file IN THE COMPONENTS
> DIRECTORY without having it scan all the file then you can do
> something like what you suggest. If you want to have it also
> notice files not in the components directory (or wherever you've
> told it to find all xpt files) then deeper surgery is required.
No. No files in the components directory.
What we're trying to do here is add new type information to an embedded copy of
mozilla.
> when it *really* needs an interface from that file. Like I said
> before, this is a bigger and deeper change to the code. I'm still
> unconvinced that this is needed. I *still* think that embeddings
> (yours included) can get away with having one place where they
> store type files.
>
This is a *very* key point, and i'm kinda annoyed at the weaknesses in mozilla
architecture regarding the differentiation between *system wide* and *per user*
information.
The point being, Sash is supposed to be *very* lightweight. Like a meg for the
basic install. Like a few hundred K for each extension.
Including a complete copy of mozilla is *not* acceptable in the long
run. Mozilla needs to regard itself as just one of many versioned libraries
that Sash (or any other application) depends upon.
This is not the windows world. Applications do *not* ship with piles of bloody
dll's to cover up system deficiencies. Applications do not bloat themselves by
hiding private copies of libraries in their own directories. Applications rely
on *version safe* copies of libraries in system library folders. Applications
*specify* which libraries they need. But the libraries are *always* shared and
publicly available.
So as long as mozilla has *its* type information, and Sash has *its* type
information, we're fsck'd.
It looks like I'm going to have to hack this one with a Sash-specific complete
copy of mozilla, so that we have rights to add crap to the components/
directory. But this is a *terrible* solution.
This stuff needs to get fixed posthaste.
This isn't the only example of braindamage, i'm afraid. Component registration
is also broken the same way (but at least allows runtime registration). Skins
are also broken -- only the superuser can install new skins, because it
requires modifying the system mozilla folder.
Dumb dumb dumb dumb dumb.
This is not Windows, where my applications randomly seem to carry over per-user
settings (meaning that the local user on w2k is modifying system installations
of programs .... ugh, terribly ugly) to everybody.
> The way I see it, the only transition this code ought to make to
> support multiple file locations would have to use an ordered
> search path to repeatably be able to build the manifest at
> autoreg time. It would have to store a stringified (platform
> specific) set of file paths in xpti.dat. Each file would contain
> a reference to its filepath (see how xpti manages xpt files
> within zipfiles - it is the same sort of factored out additional
> layer).
>
Fine with me :) but doesn't sound like the kind of thing that's going to happen
in the very near future, or the kind of thing someone who's not familiar with
the code (i.e. *me*) is going to be able to hack up.
...
i'm sorry, i'm venting. i feel better now :)
john, what are the chances of hacking WorkingSet to store complete path
information? That seems like the most promising thing. Then you could add files
that resided in arbitrary locations.
The path thing would be nice but is a much more comprehensive rewrite.
In any case i'm going to have to go forward without this :).
The only reason I'm being picky is that i'm really trying to do this the right
way (from the perspective of Sash). Non-Sash stuff should stay out of
Sash. Mozilla stuff (including any changes we need to do Sash's stuff) should
go into mozilla. Except for this one bugaboo, the Sash client would be
rediculously clean.
I can hack this fairly straightforwardly by having the installer put type files
in a Sash-owned mozilla components dir.
But it is the *wrong* way to do this. Right now, it's so wrong that it means
that every user must have his/her own copy of mozilla (since sash doesn't have
its own support for system wide stuff yet; it's not that key since in theory
all the parts of Sash are tiny).
Oh well.
ari