Esteban Lorenzano wrote:
Hi,
A newbie also does not know anything about Smalltalk object, what metacello is or even what is a Package... At some point we need to stop lowering the level and expect our newbies have capability of learning and willing to do it...
If we define Gofer as the "access point for every loadable artifact in Pharo", is easier for a newbie to look there when he wants to load something... much easier than split the functionality in different conceptual issues like Smalltalk, Packager or "Monticello Packager (Gofer)"
But having one tool for "_every_ loadable artifact" clutters up the higher level package management. I LIKE the segregation defined in the PBE2 Metacello sample chapter: * Monticello - managing source code versioning * Gofer - Moniticello Scripting API * Metacello - package dependency manager On further consideration of the PBE2 Metacello chapter I note that Metacello is a "Package Management System" and not a "Package Management Tool." Significantly what I expected to find as a newbie is The Tool, not The System. Consider that The Tool is for users and The System is for developers. While with Smalltalk we all end up developers, people being introduced to Pharo start as users.
anyway... you can call it as you want... what I'm just asking is: please, don't doit again... it is already there, waiting to be integrated :)
GopherProjectLoader particularly aligns with what I expected a class Metacello would do. Here are some significant ones... GopherProjectLoader class >> createRepositories "I answer a list of all pre-defined repositories on system" ^OrderedCollection with: (GoferProjectRepository location: 'http://www.squeaksource.com/MetacelloRepository') GoferProject class >> projectPrefix ^'ConfigurationOf' GopherProject >> toProjectList: aCollection "I collect all package names (with the form 'ConfigurationOf*' and transform them into project names)" ^(aCollection collect: [ :each | self toProjectName: each ]) asSet asOrderedCollection GopherProjectLoader>list "Lists all available projects, scanning all repositories" ^self repositories inject: OrderedCollection new into: [ :packageNames :each | packageNames, each list ]
cheers, Esteban
El 20/12/2011, a las 9:59a.m., Janko Mivšek escribió:
S, Esteban Lorenzano piše:
Why don't you take another look to Gofer Project Loader? (http://www.squeaksource.com/Loader.html) Maybe it needs to be integrated with Gofer to be really useful (as long as it is "yet another configuration", no one will use it), and maybe it needs some work on it... but it is already there :)
Also I think:
Gofer project load: 'Blah'.
is far better than:
Smalltalk loadMetacelloProject: 'Blah'
Well, from a newbie standpoint not really. Who knows what Gofer is? Even I have still this problem. A word Installer or some other intent revealing word is needed for such important function as package management is. Maybe simply:
Packager load: 'Blah'
+1 but not Installer or Packager, but Metacello!!! - the "defined" package management tool for Pharo.
This one should look into default Monticello repository, search first for ConfigurationOfBlah in http:/mc.default.org/Blah, then in /MetacelloRepository and if not found load plain package Blah-byme.99.mcz
Best regards Janko
best, Esteban
El 20/12/2011, a las 5:39a.m., Stéphane Ducasse escribió:
Noooooooooooooooooooo !
Horrible ugly terrible, Don;t touch our SmalltalkImage :)
But i think there could be a compromise. We may add an extension method to be able to do something like:
Smalltalk loadMetacelloProject: #ConfigurationOfXYZ fromRepository: 'http://squeaksource.com/XYZProject'
and/or:
Smalltalk loadMetacelloProject: #ConfigurationOfXYZ fromRepository: 'http://squeaksource.com/XYZProject' version: 'x.y.z'
like that, we can have a cake and eat it too.
-- Janko Mivšek Svetovalec za informatiko Eranova d.o.o. Ljubljana, Slovenija www.eranova.si tel: 01 514 22 55 faks: 01 514 22 56 gsm: 031 674 565