Monticello 2 question (sort of)

Colin Putney cputney at wiresong.ca
Sat Apr 28 06:22:21 UTC 2007


On Apr 27, 2007, at 12:24 PM, J J wrote:

> So, I guess this was a dumb question?
>
> I am curious because I was considering testing some code myself to  
> make a current generation change management system based on the  
> change set mechanism that Squeak already has.  But if Monticello 2  
> is already going to do this then I'll just wait and focus on other  
> things.

No, not a dumb question, just one that's difficult to answer.

Yes, darcs is interesting. Monticello2 came out of some discussions  
that Avi and I had about the darcs versioning model. But Monticello2  
uses a different model than darcs. In darcs, changes are grouped  
together, and the dependencies between them are recorded so that when  
a change is applied, all the changes it depends on can be applied as  
well. In Monticello2, on the other hand, this history of each change  
is recorded individually, so that they can be grouped and regrouped  
arbitrarily.

The darcs model of recording dependencies is powerful, in that it can  
give you better "coherence" when applying changes - if you make a lot  
of small, inter-related changes to different parts of the code base,  
darcs knows that they are related and keeps them together. This can  
help avoid, for example, DNU errors because a merge applied a message  
send, but not the method that implements it.

On the other hand, Monticello takes advantage of something that darcs  
can't. Darcs has to deal with arbitrary text, while Monticello  
operates at a higher level of abstraction - classes, methods,  
variables etc. As a result, Monticello is able to decouple changes  
from each other without introducing syntax errors.  The end result is  
that code versioned in Monticello can be organized in a variety of  
ways - packages, change sets, or something else that we haven't  
thought of yet.

So if you're interested in doing a darcs-like versioning system for  
Squeak, don't let the (non) existence of Monticello2 stop you.

Colin



More information about the Squeak-dev mailing list