Re: A bit about SM1.1 and dependencies

Daniel Vainsencher <[email protected]>
Newsgroups gmane.comp.lang.smalltalk.squeak.foundation
Message-ID <[email protected]>
Ah, I see what you envision now. I don't actually see changing the
configuration package as a problem - I do trust you'll give an api to do
this soon, and then code can do it for me. And as you say, it might be
wise to have alternative configurations for the same package. There's no
conflict - the alternatives can certainly live inside the package.

We agree the depedencies should be outside the code packages, the
difference is whether to keep them in a "special place" - resources, or
in packages themselves. 

Simplest thing that could possibly work?

> It is not what I want to have for resolving complex dependency networks.
> They are two different things and they are needed both IMHO.
Aha - we may be addressing different requirements. I'm addressing
precisely this problem - I want packages to be modular, I want users to
be able to load a package with it's prerequisites, I want maintenance of
configurations to be separate from maintenance of code. Either solution
does all of these (haven't changed my mind about any of these).

I'm not looking for anything more complicated, among things because I'm
hoping to make a working release within days of having an SM that
supports package releases, for many good reasons mentioned before.

What additional needs are you addressing? (elaborate on complex
analysis...)

> > And I don't see many ways to go around that...
> What? I didn't understand this. 
I'm simply pointing out that when a code package is updated, a human
will have to evaluate it to update the configuration. That's the main
thing humans maintaining configuration (not code) will have to do, and
that's the same between both proposals. 

How that translates to changes in the metadata itself, I don't care much
about - it can be mechanized, either way.

I think the models we're proposing are very similar, mine is just
minimal and maybe a little crude, but I think it can take us a pretty
long way.

And the two systems can definitely coexist, and probably even
interoperate (you can depend on my kind of package, a vice versa).

Daniel

[email protected] wrote:
> Daniel Vainsencher <[email protected]> wrote:
> > [email protected] wrote:
> > > Daniel Vainsencher <[email protected]> wrote:
> > > > Ok, just to show what I mean. Suppose I make a package type that holds a
> > > > single method that goes something like
> > > > ^#((RBModel 1.09)
> > > > (RBGUI 1.06)
> > > > (RBTests 1.05))
> > > > 
> > > > Then I write a service that loads this kind of package, and does
> > > > packagesList collect: [:packagePair | SMSqueakMap loadPackage:
> > > > packagePair first version: packagePair second].
> > > > 
> > > > Or maybe something a little more complicated, but you can see where I'm
> > > > going... I don't need much more support.
> > > 
> > > Ok, this looks to me like "virtual packages". A package that has no
> > > content and loads specific versions of other packages. In fact - this is
> > > a "static load script" given my previous terminology. (Static in the
> > > sense that it will always result in the same package releases being
> > > loaded)
> > Not exactly - note that the code interpreting the list is outside the
> > list, in a service. The code here is just a way to store the
> > instructions.
> 
> Sure, but what real difference does that make? It is still a list of
> specific releases of other packages to be installed. Or?
> 
> > > But this plan doesn't AFAICT make it possible to have multiple possible
> > > configurations for RB. I assume that the virtual package/load script you
> > > described above would be "RB".
> > Actually it does - there's nothing stopping me from concurrently also
> > publishing another package that also specifies the RB Components, at
> > different versions. For example -
> > ^#((RBModel 1.1)(RBGUI latest)(RBTests latest)(RBRewriteRuleEditor
> > latest))
> 
> Sure, I understand that you can publish several different "load
> scripts".
> But that would in fact be *different* packages. Of course you would give
> them names like "RB cool" and "Another RB" etc. But that wouldn't help
> the dependency engine at all.
> 
> Let me reiterate: I want to be able to have different working
> configurations for one specific package release. For example, one
> "certified working configuration" is that RB1.2 works if SmaCC1.1 and
> SUnit3.3 are in the image too. BUT... RB1.2 may also be able to work
> just fine with SmaCC1.2 and SUnit3.3. That is another fully valid
> configuration for RB1.2.
> 
> The idea here is that an engine can analyze these multiple
> configurations. And adding a new configuration (registering a Resource
> and linking it to RB1.2) does not change the version of RB.
> 
> > could represent the right configuration for someone that want to play
> > with the latest GUIs, but using a known stable model. The two can
> > definitely coexist - each is it's own package (I don't know what you
> > mean by virtual), and even be authored by different package maintainers.
> 
> Yes, I fully agree that this is useful for exactly the thing you
> describe. But that is a "load script" package.
> It is not what I want to have for resolving complex dependency networks.
> They are two different things and they are needed both IMHO.
> 
> > > It would also mean that you need to make a new version of RB if you want
> > > to change the dependencies for RB - so you get "cascading version
> > > changes" - package Y is released in a new version and X depend on it so
> > > must also be released in a new version etc. etc.
> > No, why?
> > The only time I'll have to update depedencies, is when I have a stable
> > configuration, and I've decided that a newer version deserves to be
> > point to in it. And I don't see many ways to go around that...
> 
> What? I didn't understand this. Ok, let's say you have registered a
> "load script" called RB version 1.0 that contains information about what
> other package releases should be loaded - package X1.1 and Y3.4.
> 
> And then I release package X in version 1.2. You realize that, hey - RB
> works dandy with this newer release of X. So what do you do? Ah, you
> need to *change* package RB. And if you change it then you better change
> the version too.
> 
> In my scheme you would simply just register another configuration and
> link it to RB1.0 - this simply says: Hey, I just tested RB1.0 with these
> packages too and it still works. So the dependency engine now has two
> working versions of X that it can choose from without making RB1.0 go
> bonkers. And that is very good since package Z that I want to use
> together with RB1.0 may actually *demand* X version 1.2.
> 
> Well, I have been describing these things so many times now that I
> simply need to implement them. :-)
> 
> I mean - it was you who pushed me in this direction by saying that the
> dependency information should be *outside* the packages in order to be
> able to have them evolve independently. Those emails we exchanged has
> influenced my model a lot. And now you are arguing IMHO in the opposite
> direction. ;-)
> 
> Sidenote: I did run my model by Roel Wuyts, Doug Way, Stephen Pair and
> several others I can't remember right now at OOPSLA and they all liked
> it. This also included the draft on how the dependency engine will use
> this information to resolve complex situations and my concept of
> "stretchable dependencies".
> 
> regards, Göran
> 
> _______________________________________________
> Squeakfoundation mailing list
> [email protected]
> http://lists.squeakfoundation.org/listinfo/squeakfoundation
From [email protected] Thu Feb 13 02:58:27 2003
Return-Path: <[email protected]>
Delivered-To: [email protected]
Received: (qmail 1394 invoked from network); 13 Feb 2003 02:58:26 -0000
Received: from mailout.whidbey.net (HELO mail.whidbey.net) (209.166.64.124)
  by mail.theinternetone.net with SMTP; 13 Feb 2003 02:58:26 -0000
Received: from vdsl-72-234.whidbey.net ([209.166.72.234] helo=ned)
	by mail1 with esmtp (Exim 4.12)	id 18j9Yw-0004zO-00
	for [email protected];
	Wed, 12 Feb 2003 18:57:23 -0800
From: Ned Konz <[email protected]>
To: [email protected]
Date: Wed, 12 Feb 2003 18:58:03 -0800
User-Agent: KMail/1.5
X-Image-URL: http://bike-nomad.com/nedicon.jpg 
MIME-Version: 1.0
Content-Type: text/plain;
  charset="us-ascii"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Message-Id: <[email protected]>
Subject: [Squeakfoundation]identifying existing apps to package
X-BeenThere: [email protected]
X-Mailman-Version: 2.1
Precedence: list
Reply-To: Discussing the Squeak Foundation
	<[email protected]>
List-Id: Discussing the Squeak Foundation
 <squeakfoundation.lists.squeakfoundation.org>
List-Unsubscribe: <http://lists.squeakfoundation.org/listinfo/squeakfoundation>,
	<mailto:[email protected]?subject=unsubscribe>
List-Archive: <http://lnx-12.ams-2.theinternetone.net/pipermail/squeakfoundation>
List-Post: <mailto:[email protected]>
List-Help: <mailto:[email protected]?subject=help>
List-Subscribe: <http://lists.squeakfoundation.org/listinfo/squeakfoundation>,
	<mailto:[email protected]?subject=subscribe>
X-List-Received-Date: Thu, 13 Feb 2003 02:58:27 -0000

I'd like to start the packaging process for parts of the 3.5 image, as 
planned.

I know Daniel and others have written tools for static analysis; I was 
hoping someone could come up with a good way to actually discover the 
contents of the different packages (strongly coupled clusters of 
otherwise independent classes along with class extensions that they 
use or that refer to them). Plus, I'd like to get the names of the 
major writers of the existing code.

Ideally, this is something that we'd apply to an image that has as 
many change sets in it as possible (to get the historical version 
information). So if someone has (say) a 2.8 image that they've 
updated all the way to 3.5a, it would be the ideal test case.

I'd like to come up with a table in HTML that lists:
* Category
* Class names
* Major authors
* Last period (quarter year?) in which substantial changes were made
* Outside dependencies

And I'd like to do this automatically, if possible.

Then we can start signing up volunteers to pick these apart.

Once we have tools and HOWTO manuals on package stripping, we should 
be able to get more volunteers.

Some relatively easy targets that I can see:

* Speech
* Fabrik
* Games
* Piano Roll
* Process Browser
* Archive Viewer
* eToy communications and Nebraska
* Scamper
* VM Construction

Harder ones:

* Genie
* Active Books
* eToys
* Browsers
* File List
* MVC
* Morphic

Any ideas?

-- 
Ned Konz
http://bike-nomad.com
GPG key ID: BEEA7EFE
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.