goran.hultgren@bluefish.se wrote:
Hi Doug and all!
Doug Way dway@riskmetrics.com wrote:
Right, I forgot to mention that. DeltaModules can also add/remove instance variables, etc.
Since people seem to have a problem grasping DMs I just wanted to be picky. ;-)
Since people tend to not make explicit the difference between wishlist items and green tests ;-) I will - this one is a wishlist item. Not implemented.
Yes, this is exactly the problem I was thinking of when I said "version number worries". This seems like it could be a major problem. I'm not sure how things like String>>asMorph were intended to be dealt with when the image is partitioned... perhaps most of them would need to be removed completely, requiring a lot of refactoring, so that we don't have branches all over the place?
One of the conceptual problems I have with DMs is that handling class extensions (I think your class should also do X) is mixed with modifying classes (not a + b, a * b). Note that this is also one of the problems in ChangeSets.
This is not a big problem in systems that claim weak semantics - fileins have the exact same issue, but since a filein doesn't "tell you" it has any specific meaning, you don't expect it to fill any particular role very well, except "This will put code in your image, overwriting". ChangeSets are mainly for tracking time-related bunches of changes, and they tell you that by automatically storing things in the same CS until you change. This works pretty great. But ChangeSets can also be edited (using the change sorter). This is wonderful to clean up your history before presenting it to the world. But - some gullible users might take this editability as a claim that "I (CS) am a way for you to maintain a certain piece of code", at which point, if the code is somewhat complex and has several parts, horror stories begin to emerge (hmm, did I give myself away? ;-).
DMs, claiming to handle versions too, might be dangerous to more practical people than me, too.
Envy/Ginsu-style modules don't have this particular problem, because the additive-only Class Extensions don't require the base module to "branch" (change its version number).
Exactly.
Good point.
- Doug Way dway@riskmetrics.com
regards, Göran
Daniel Vainsencher
squeak-dev@lists.squeakfoundation.org