Igor Stasenko wrote:
i'd like to comment the parts i like (not all) :)
Based on the above points, it would be nice to have...
a> Metacello configuration: 'SqueakDBX' load
rather than...
b> Gofer new b> squeaksource: 'MetacelloRepository'; b> package: 'ConfigurationOfSqueakDBX'; b> load. b> ConfigurationOfSqueakDBX project latestVersion load. yes , that would be nice. except from one thing: your image must have metacello installed. While things is done in a way, that you don't need to have it in order to load a project from your configuration. i.e. one can load ConfigurationOfXYZ into image without metacello and then run it, without caring if Metacello is installed or not (because configuration takes care of it).
Sven Van Caekenberghe wrote:
On 19 Dec 2011, at 17:04, Ben Coman wrote:
I've been lurking this mail list for 6 - 9 months and had not picked that up. That is a big miss. I'm not usually so slow. Can you point me to the documentation that describes that process?
I agree, the UX is not (yet) perfect; so your comments are valid.
Metacello was written with many different design goals: one of them is that it solve the 'chicken/egg' problem by allowing configurations to be loadable in images that do not yet contain anything related to Metacello ! That is why you always see this boilerplate with Gofer and the Smalltalk at: #ConfigurationOf..
Sven
Preface: I imagine what I discuss below has been thrashed out in the original design and discarded, but I'd like to learn this topic better. I understand wanting a lean core image, but once a single ConfigurationOfXXX is loaded, Metacello ends up installed. So the independence is only important for the very first loaded ConfigurationOfXXX. If you are using an lean-image that does not have any ConfigurationOfXXX loaded, then you are likely an advanced user who knows how to resolve the Metacello dependency. A pre-requisite of example b> above is Gofer. I notice that PharoCore-1.3-13315.zip there is no Gopher and in Pharo-1.3-13315 there is but also ConfigurationOfGofer. Since example b> ends up with Metacello fully installed, is there any common use case where ConfigurationOfGofer would not be installed first? At which point, can we assume that Metacello is installed for example b> ? Now I assume my following proposal is flawed with respect either good practice and/or the Pharo design goals - but since (from my perspective) Metacello is a critical part of Pharo, I am interested for my learning why it would be evil to include just the following stub in PharoCore... ---8<---snip Metacello class >> doesNotUnderstand: aSymbol self ensureMetacello Metacello class >> ensureMetacello [as per the Metacello template] ---8<---snip