Partitioning the image (was Re: Shrinking sucks!)

Doug Way dway at mailcan.com
Mon Feb 14 00:07:54 UTC 2005


On Feb 13, 2005, at 11:16 AM, Lex Spoon wrote:

> Doug Way <dway at mailcan.com> wrote:
>> Is there a situation where you'd have the global list of PI instances
>> in a more minimal image, but not have SqueakMap installed?  Could be,
>> but that might be uncommon.  I was thinking that the Minimal image
>> would still have the PI instances, which means PackageInfo would need
>> to be part of the Kernel, but I don't know if that's necessary.  As
>> long as it can add code to itself.  (That is when we take a serious
>> look at Spoon. :) )
>
> It violates the privacy principle.  It is fine that SM must be loaded,
> because it's part of the basic code-management infrastructure of 
> Squeak.
>  However, surely people should be able to make a package without 
> posting
> it immediately to SqueakMap.  In such a case, there is no SMPackage
> entry, but you'd still like to have author, comment, and homepage url.
> I call this the privacy principle for real.  Personal images should not
> need to make round trips to a global server in order to do basic
> operations like creating a package.

Basically, I agree.  The current proposal supports the privacy 
principle reasonably well IMO.

The current proposal being:  We have a list of PackageInfos (+comments) 
as the master list of in-image packages, which will be usable even if 
you don't have SM loaded.  You can create new PI packages with the 
standard browser in your image if you want, without SM knowing about 
it.  If you do have SM loaded, you also get the corresponding 
SMPackages (for known packages) with additional metadata, including 
URL, License, etc.  An SMPackage holds onto its PI package (if it's a 
PI-type package and not a changeset), and a PI package can look up its 
SMPackage if it exists.

(I'm not sure this jibes 100% with what Goran was envisioning, but I 
think it's pretty close.)

I disagree with you about the URL, I don't think it's really essential 
to have in the personal image PI package.  You can go to SqueakMap if 
you really need to find out more about the package out on the net.  But 
that's a relatively minor point.

> Is it possible to whip up a SMPackage entry that is not attached to any
> actual SqueakMap?  My impression has been that this doesn't make sense.
> If this one principle were to change--and a SqueakMap became simply a
> list of packages that can be copied between multiple SqueakMap's
> including a local per-image map--then I'd sing a different tune here.
>
> Notice that the universes system *does* support packages which are not
> associated with any particular server.  (And as a cost of this 
> property,
> a single universe cannot sensibly hold a catalog of *every* publically
> shared package.)  The way this discussion is going, I believe Universes
> can be modified to deal in whatever PackageInfo we end up with.  A
> UPackage could then be a PackageInfo plus a UVersion.

A somewhat separate issue which I don't have a strong opinion on. :)  
But whether you have one global map, or multiple/local maps, a simple 
in-image package shouldn't *have* to know about any map as we agreed 
earlier.

> The one thing that would need to be done, would be for PackageInfo to
> have a list of dependencies.  A set of string names is fine.  Ideally,
> it should also have "provides" and "conflicts", even though the current
> algorithm in the univeres browser doesn't deal with these yet.

Ouch, I'm not sure if we want to go there right now. ;)  Although a 
simple set of string name prerequisites would be kind of nice, if it 
was understood that PI will eventually be replaced with something else, 
including a more comprehensive dependency mechanism.  But these things 
have a way of sticking around forever once they're introduced. ;)

But yeah, just to simply know that the Morphic package requires 
Graphics as a prereq, and Graphics requires Kernel, etc, would be nice. 
  It would make unloading a little bit safer, e.g. if KomHttpServer 
requires the DynamicBindings package, then it could at least tell you 
that before you tried to unload DynamicBindings if you also had 
KomHttpServer loaded.

But we've been thinking we could wait until the Basic image is 
partitioned before adding a dependency scheme.  If you only have 10 or 
15 packages making up the Basic image, it's not *too* hard to keep 
track of the prerequisites by hand, for a little while at least.

- Doug




More information about the Squeak-dev mailing list