.mcv => .sar?

Stephen Pair stephen at pairhome.net
Tue Jul 29 14:51:01 UTC 2003


I like the idea in general...here is a list of items I'd like to see 
addressed (these are largely based on my experience in splitting 
Comanche into separate packages and managing the packaging, publishing 
and loading of those packages)...the Comanche packaging tools already 
support several of these items...I think that the challenges that I 
faced with packaging Comanche makes for a really good set of 
requirements (for a development, packaging, and publishing system)...I 
think we would end up with a really nice set of tools and frameworks if 
we could make a goal of re-packaging Comanche using the new MC 
features.  Here's the list of things that I think need to (eventually) 
be addressed:

- make the load process a matter of building a load configuration and 
loading it

- allow *named* package dependencies to be specified, along with default 
fulfillments (that identify a specific package and version)...the 
default fulfillments can be overridden by a load configuration and the 
defaults can be used to create a load configuration

- allow packages to be "published" to a separate directory from the 
development versions and allow a "version name" to be specified...the 
version name would be distinct from the internal Monticello version 
numbering and would be used when identifying packages to load or 
dependecies...use a convention like "PackageName-1.0.sar" where "1.0" is 
the "version name" (not the internal MC version number)...a URL like 
sqpkg://PackageName:1.0 would sepcify a specific package and version.

- have some kind of directory the load tools can use for locating 
published packages...this is probably a future version of 
SqueakMap...rather than hold a path to a specific file, SM could have a 
path to the publishing directory of a package...within that directory 
would be all of the published versions of that package...an operation 
like: 'sqpkg://PackageName:1.0' asUrl load   ...would consult SM to find 
the publish directory, then look for a file named PackageName-1.0.sar in 
that directory

- allow optional packages to be specified...a loader can present a user 
with a prompt to ask if they also want to load the optional packages (if 
any)...I use this feature in KomServices to optionally load a 
StarBrowser UI for KomServices

- allow loose files to be bundled in a SAR and installed by a loader 
(distributions that include VM plugins really need this...as do any 
packages that require externally stored files)

- allow loose change sets for pre-loading to be attached to a package, 
bundled in the SAR, and installed during loading (I find this feature 
useful for maintaining the purity of a package that may require certain 
bug fixes in the base system...those bug fixes (which should eventually 
be incorporated in the base system) would be put into a preload change 
set)...with Comanche, any fixes to the base system (such as Socket) that 
I need, I put in a separate change set instead of including them in the 
package...that way, when they get fixed in the base system, I just 
remove the items from the change set and the package itself isn't 
cluttered with those things

- enable packages to segregate SUnit testing related items (ie. support 
a test category naming convention like "PackageName-Tests")...in the 
SAR, separate these items into their own files...a loader could then 
choose whether or not to load these items (the loader could also 
automatically run the tests after the load is completed).  This is one 
thing that the Kom packaging tools currently does and I really like it.

- multi package SARs are good if done correctly...specifically, allow 
multiple packages to reside in one SAR, but make sure that they remain 
independent, and are independently loadable...for example, if a 
prerequisite like sqpkg://StarBrowser:1.0 was specified by a load 
configuration (perhaps built from a default fulfillment), then the 
loader should look for that package first in the SAR, then online (the 
loader could also allow one to specify a search path)

- I don't necessarily agree with Goran that it's important to keep 
meta-info external to a package...I think the argument is that you won't 
have to get the whole package just to find out a list of requirements, 
etc...1) I don't think these packages are going to be all that big, 2) 
we can always replicate that information outside the packages in the 
future if we need to (matter of fact, it might be as simple as 
replicating the instances and subclasses of PackageInfo)...but its 
something that we can wait until we know more about what information 
needs to be replicated...I guess I see it as a sort of performance 
optimization that you really shouldn't spend much time on until more 
usage experience is obtained

- Stephen

Avi Bryant wrote:

>Just a half-formed late night thought:
>
>We'd like Monticello to support a number of different formats - for
>Smalltalk source code, this could include .st, .mc, .sif, .pst,
>Rosetta, and maybe others.  For other kinds of packages (and I don't see
>any reason why there couldn't be other kinds), there would be an entirely
>different set of possible formats.
>
>However, the contents of each of those formats maps to what Monticello
>calls a "Snapshot" - the collection of definitions being versioned,
>without any particular ancestry or packaging metadata attached to them.
>But what we generally want to be passing around are Versions, which
>contain a Snapshot plus all the necessary extra bits of info.
>
>We'd fuzzily been thinking that each format would have some semi-natural
>way of including this metadata - annotations for SIF, maybe a preamble
>comment for .st, and so on.  But this is pretty adhoc and doesn't feel
>quite right.
>
>What about taking a page from Ned's book and making the format be a ZIP
>file?  You could have special paths monticello/package,
>monticello/version_info which contained the metadata, and
>monticello/snapshot which explained (as a SAR-like install script,
>perhaps) how to recreate the Snapshot from whatever other members (like
>"source.sif", say) were in the ZIP.
>
>They could in fact be SAR files, whose install script checked for the
>presence of Monticello.  If it was there, they wouldn't directly install
>anything but instead would pop up the Version window from which you can
>load, merge, etc.  If there was no Monticello they would load themselves
>into the image as best they could.
>
>How does this sit with people?
>
>Avi
>
>
>  
>


-- 
- Stephen
_________
Do you need:
  Web/Domain/Application Hosting?
  Mailing List Services?
  IMAP/POP3/Web Email Accounts?
  Instant Messaging Accounts hosted on your domain?

Email me for information.




More information about the Squeak-dev mailing list