[Seaside-dev] Detecting installed Seaside versions?

Dale Henrichs dale.henrichs at gemstone.com
Wed Nov 25 17:45:44 UTC 2009


Colin,

The down-side to having a constant in the image that records the "last version loaded" is that users are free to load packages independently, without ensuring that the "last version loaded" is updated appropriately.

It is certainly a good enough solution.

The point of Metacello is to create a specification for a particular version, so that no matter how that particular version got loaded the current image can be compared to the spec and the "current version" can be calculated.

It's one of the fundamental problems with "Package management" - when the package data base does not match the installed system. Metacello is not immune to the problem, but since it dynamically calculates the version based on a spec and the existing image, it has a chance of getting a good answer.

Ad hoc solutions start breaking down when a particular user is interested in reasoning about cross project dependencies, based on versions ... a problem that every current Smalltalk programmer has:)

I'm not going to say that Metacello is the last word in package management for Smalltalk, but it _is_ an attempt to address some of the larger problems that the consumers of multiple software projects have to deal with...

Dale

----- "Colin Putney" <cputney at wiresong.ca> wrote:

| On 24-Nov-09, at 6:27 PM, Andreas Raab wrote:
| 
| > I'm trying to answer the big picture question of "Does this image  
| > have Seaside installed, and if so, which version".
| 
| I've run into this problem too, not with Seaside, but with my own  
| projects - OmniBrowser, Monticello and now Filesystem. I'm trying out 
| 
| a new strategy with Filesystem - the class FSReleaseInfo has a class 
| 
| variable called Current. The SAR install script sets it after the  
| install. So far FSReleaseInfo just has a version number, but it can  
| grow to include more metadata if necessary. The plan is to have the  
| install script for future versions check for the presence of  
| FSReleaseInfo and if it's there, use "FSReleaseInfo current version" 
| 
| to figure out what upgrade script to run. Andreas, I realize this  
| doesn't do you any good for the moment, but perhaps something similar 
| 
| could work for future releases of Seaside 3.
| 
| For now I'd bet there *is* check-for-WAFrumbazzle-style algorithm out 
| 
| there, but somebody will have to do the analysis to figure out what it
|  
| is. It might not be *that* complicated... I bet  
| "SeasidePlatformSupport versionString" is a good place to start. For 
| 
| the alpha versions of 2.9 and 3.0, there's been a lot of package  
| churn, so it shouldn't be hard to figure out what version is present 
| 
| based on that. Before SeasidePlatformSupport existed... well, how far 
| 
| back to you want to go?
| 
| Colin
| _______________________________________________
| seaside-dev mailing list
| seaside-dev at lists.squeakfoundation.org
| http://lists.squeakfoundation.org/mailman/listinfo/seaside-dev


More information about the seaside-dev mailing list