On 11/7/16 11:30 AM, Thierry Goubier wrote:
Hi Dale,

2016-11-07 12:03 GMT+01:00 Dale Henrichs <dale.henri...@gemtalksystems.com <mailto:dale.henri...@gemtalksystems.com>>:



    On 11/7/16 7:15 AM, Thierry Goubier wrote:


    2016-11-07 11:05 GMT+01:00 Esteban Lorenzano <esteba...@gmail.com
    <mailto:esteba...@gmail.com>>:


        On 7 Nov 2016, at 10:03, Thierry Goubier
        <thierry.goub...@gmail.com
        <mailto:thierry.goub...@gmail.com>> wrote:

        Hi Esteban,

        I cut out the rest, because I agree with all your points,
        except for...

        2016-11-07 9:55 GMT+01:00 Esteban Lorenzano
        <esteba...@gmail.com <mailto:esteba...@gmail.com>>:

            [ ... ]

            Replacing Monticello with git goes in this direction:

            [ ... ]


        And this one I don't understand. A smooth, git / iceberg
        oriented transition over Monticello/Metacello is perfectly
        doable... As Dale explained. A nice Iceberg gui reworking /
        making git usable is perfect.

        Well… I disagree with this.
        All my experience says the opposite: this is a convenience
        usage that in the long way does not match (the thing that we
        simulate mcz packages do not work… and makes things a lot
        harder to maintain later).
        Nico has worked a lot on this, maybe he has something to say.


    I'd like to. Simulating mcz? That I don't get it.
    Thierry, If I'm not mistaken, Esteban is referring to the fact
    that in FileTree we are still using Monticello to do the load of
    the packages and even when we are running metadataless, we end
    creating fake meta data to simulate an mcz ... you and I have had
    conversations about ways to eliminate this "requirement" because
    it is meaningless in a git context ...


Yes, this I understood. I do believe that what I suggested at one point (have the ability to compare versions with an 'isAncestorOf') would be very nice for that transition (work in mcz as well as on git with/without metadata).
II think that the work that you did with gitfiletree was very influential in making git a realistic option for the Pharo community and I think that the choices you made were excellent, but I think that for a transition it is important that git be presented as itself more fully and expose some of the features that set git apart (project/package/class/method diffs; multi-package commits; etc.) ... but I also feel that Monticello does not need to be diluted --- the existing Monticello tools should remain in place for the forseeable future ...


    With the work that Richard Sargent did on the
    CypressReferenceImplementation, I would prefer to say that Cypress
    can provide an Alternative to Monticello rather than replace it
    ... the CypressReferenceImplementation includes a package loader
    so it isn't necessary to convert Filetree format on disk to Mcz
    format in the image --- without all of the ancestry, "latest
    version stuff" and package-cache the loading process becomes much,
    much simpler...

    I think that both Monticello and Cypress can live together in the
    image ...


For me, MC is also the code / diff model behind: will Cypress rewrites all that too?
Well Cypress is not that much of a rewrite ... Cypress definitions are closely based upon the Monticello definition model... snapshots and loading based on comparing the snapshot of the repository against the snapshot of the image are also closely based on Monticello ... The differences are in the fact that Cypress packages do not have ancestry, author names or version numbers:
  - the ancestry and author is recorded and managed by git (or svn or hg)
- there is only one version of a package in a fieltree repo, so there is no
     need to sort packages by version number to fine the "latest version"

So Cypress is more of a "take all of the really good parts of Monticello while dropping the bits that are handled better by git" than it is a complete _rewrite_ ...


    I have created a version of Metacello that uses Monticello OR
    Cypress and I expect to eventually (in the next several months ---
    it doesn't take that long, but I've got other things on my plate)
    to have a version of Metacello that uses Monticello AND/OR Cypress
    again I think that smooth transitions (that may take a long time)
    are better supported in this fashion than to draw a line in the
    sand and force the usage of one OR the other ...


As long as Cypress behaves as a MC repository and fits into the same API, I really don't see where is the difficulty. As we are saying now, adding a type of repository / emulating the MC overall API is no real difficulty in itself and isolates one from all the project management issues (because that means Metacello, ConfigurationOf and BaselineOf just keep working as usual).
There are api differences between MC and Cypress ... MC has ancestry and package numbers while Cypress does not ... but I don;t think that these are major items ... I have yet to try to merge MC and Cypress in the same Metacello code base and I have yet to look closely at the requirements for Cypress Package Browser tool, but I know that the Cypress Package Browser will be much simpler ... But the goal for Metacello is that individual developers will be able to choose the repository/package model that best fits their work flow and portability needs ...
We need to get the MC repository API to evolve a bit, in part to handle the "save multiple packages, do one commit without using package dependencies." required now, and also to expose more of the repository organisation (remotes, branches) for the GUI above. And remove some of the things saying "I'm MC trying to do Metacello's job".
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 ...

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:)

Dale

Reply via email to