Hi Dale, 2016-11-10 6:04 GMT+01:00 Dale Henrichs <dale.henri...@gemtalksystems.com>:
> > > On 11/8/16 7:09 AM, Thierry Goubier wrote: > > Hi Dale, > > 2016-11-08 2:03 GMT+01:00 Dale Henrichs <dale.henri...@gemtalksystems.com> > : > >> [ snip ... ] >> >> yes I think this is the area where a Metallo Project Browser comes into >> play. The technology for committing the dirty packages in a a >> ConfigurationOf has been around for quite awhile, but a tool that unifies >> the "multi-package" commit for ConfigurationOf and BaselineOf hasn't popped >> out of the wood work ... >> > > I'm having some issues with the scripting approach of Metacello, for that. > Just manipulating a baseline in the Metacello registry (locking it) seems > to be like writing a compiler code generation item: write a Metacello > script ;) (Metacello>>#lock contains interesting code). > > I think I agree:) ... that is why i am talking about a tool ... developers > shouldn't have to pass around workspaces to load and manipulate projects .. > a project tool can partially automate the process, but I believe that there > needs to be a "load spec" object that can be passed around and massaged by > code instead of requiring a user to edit a Smalltalk workspace ... it's > what I do in tODE ... the only times I have to write Smalltalk load scripts > is when I work in Pharo :) > Agreed. I would just like to find out which object can be used to act upon (can I call lock on a Metacello project spec... apparently not :))... I'm not too keen on adding another layer on top of it, first because I'm not that found of unneeded layers, second because it may mean a significant rewrite of the environment (have dozens of methods like MyLayer>>#load which is just a call to Metacello load) to get something that starts working. I'm not in a position to impose large scale changes in the Pharo ecosystem; it's the consortium role to take and impose such choices. I can only, like GitFileTree, inject something at a lower level that allow people to complement and experiment with... > > > I will repeat that I don't think Pharo should do exactly what I've done > with tODE, but a Metacello Project Browser and some sort of "load spec" > object that is shared amongst a cluster of images is something that needs > to be seriously considered ... > I'm really willing to also make something helping to work with Baselines / Configurations because I think they present a significant complexity barrier to the proper use of Metacello features, and I don't see any path avoiding us to write those, given how complex it may be. > > >> >> >> What is a bit annoying, really, is this talk of rewriting everything >> where some of the pieces (the project browsing you're talkin about, for >> example) is already there in the image, just not exposed. >> >> Well I am annoyed as well .. I would say that perhaps we are in screaming >> agreement ... I've said that I don't think it's a lot of work to do the >> project-centric tool. but a project-centric tool that encompasses both >> ConfigurationOf and BaselineOf will expose the features that "are already >> there" >> >> >> I'm trying to code a little something for that... stay tuned for a >> screenshot soon. >> >> Cool:) >> > > And here it is! I'm still fighting with the Metacello lock / unlock thing. > > [image: Images intégrées 1] > > If Pharo was more really modular in configurations and baselines, then I > would see more things into the registry and I could group packages based on > that (instead of having to prepare a ad-hoc classification for my my > browser). > > Yes this is headed in the right direction ... I am in Argentina this week > so it isn't easy for me to do much collaboration, but I would love to help > you with your lock problem next week ... For example ... you do not want to > directly expose the Metacello registry as there are "hybrid projects" where > a ConfigurationOf causes a BaselineOf to be loaded, so the BaselineOf needs > to take precedence (I have code for resolving this) and I strongly suggest > that the Project Browser not be built-into the Class Browser, but be a > separate tool like the CataLogBrowser ... but this is just a suggestion --- > a separate tool dedicated only to loaded Projects and unloaded Projects of > interest allows one to get a very quick overview of what is in the project > or not and when version skew pops up, one can easily see the affected > projects ... embedding this kind of information in the code browser can > make it hard to get the overview and if you choose to live with version > skew can be annoying to ignore .... again these are just my thoughts .. > I'm of a different mind on this. Giving access to the Metacello registry explains well to me what is happening in the system; as long as the GUI accelerate a significant subset of the common operations, then I'll consider it good enough and have it working on a short time frame. Otherwise, you end up with projects like libgit / Iceberg, which are taking significantly longer to reach a better solution... Exposing the exponential time needed to reach the perfect solution. I also hate information duplication: why do I have to write a complex project spec where most (all?) of it has to be rewritten in a different form in a BaselineOf? Same goes for the forks you described the other day: why do I have to write in my project description the information I also have to add inside the repository (an upstream remote) to manage updating with the master project? For version skew, I must be a bit like git designers on that. It has to be an action (a git pull), and this action is required in git anyway (git pull upstream / git pull origin) .. I have no opinion on whether a GUI has to automatically check that everytime I open the project browser. > > Regardless I think you are definitely headed in the right direction and it > isn't all that much work ... yet:) > I need to keep it reasonable to be able to tackle it :) Thierry > > > Dale >