About squeak image compatibility (3.6/7/8)

stéphane ducasse ducasse at iam.unibe.ch
Tue Jan 10 14:36:26 UTC 2006


>>> * you assume a stable interface in classes and meta classes  
>>> (this  got seriously broken in 3.7, then again in 3.8, and now  
>>> again in  3.9 - it is amazing how little continuity there has  
>>> been in such a  critical part of the system)
>> I suspect that you refer to the changes we did to try to clean  
>> the  kernel. I do not see where the classes and metaclasses  
>> interfaces  changes.
>
> Well, if you are really curious, you could have a look at the  
> references to CSqueak3Point8Detected in a Tweak image. This will  
> point out the areas in which there were plain inconsistencies in  
> the class and metaclass interfaces (there are others which can be  
> dealt with by extra overrides but those changed in semantically  
> inconsistent ways). In 3.9 I actually don't know yet what  
> concretely is broken since I only gave a quick try - which resulted  
> in a series of errors that in all likeliness are due to class/ 
> metaclass changes (there is a small chance that the problem is  
> elsewhere, I'll admit that but I really don't think that's very  
> likely). And given the pain that I went through porting to 3.8 I  
> really didn't feel like investigating this more closely right now.  
> It was just one of those "oh, well, realistically speaking, what  
> did you expect..." kind of things.

***I will look at that because I REALLY want to know. I hate breaking  
stuff without knowing it***
>
>>> * you use meta tools that rely on the previously available  
>>> semantic  entities (which excludes traits)
>> I do not understand what you mean there.
>
> Tools like Rosetta which bild a semantic model from source code.  
> Adding new semantic entities means all of those tools represent the  
> (new) structures inadequately.

Yes I see. Indeed adding a new entity is a challenge.

>>> Now, I'm not saying that everyone will be affected by (or even  
>>> care  about) the above but if you are in either situation it is  
>>> pretty  safe to assume you'll be severely screwed one way or  
>>> another. Case  in point: Without appropriate fixes Monticello and  
>>> file contents  browser are invariably broken (and so is the VW  
>>> parcel that allows  people to load Squeak code).
>> Why don't report that to us?
>> I always like the way you shot at people instead of notifying them.
>
> I didn't say you didn't fix these issues. Indeed you did. But it  
> doesn't change the fact that those fixes were *required* that  
> without those fixes these tools were utterly broken. Mind you, this  
> discussion started with Cees asking for what compatibility issues  
> were introduced by adding traits and I'm merely pointing these out.  
> That issues have been fixed doesn't mean they didn't exist, which  
> is how I read Cees' claim about "extremely little" compatibility  
> issues, e.g., that typically nothing would break after adding  
> traits - and for those areas that I'm pointing to, that's just not  
> true. And that's why I said "very little, unless..."


Ok I understand your point.

>> Should I conclude that when you said to nathanael that you wanted  
>> him  to work on traits for Tweak or whatever this
>> was not quite true? Or do you meant a package loadable traits  
>> (I'm  trying to be fair here).
>
> I don't know what you are trying to say here. Again, this  
> discussion started by Cees asking for what compatibility issues  
> have been created by traits. I have listed them, *and* I have  
> pointed out that quite a number of people might not care about  
> them. What this has to do with Nathanael or traits in Tweak I don't  
> know.
>
> But since you are raising the issue what I *have* been talking  
> about with Nathanael is to get an END-USER version of traits into  
> Tweak - one that requires an algebraic foundation but that by no  
> means should be used by the end user in the way that he's been  
> proposing (e.g., by annotating class definitions). Personally, I  
> think that Nathanel nailed the model - what he (in my view) didn't  
> nail very well was the usability issues. Also, if you will remember  
> that this is "Traits v1" - and I was *always* arguing for something  
> that (given that versioning scheme) could best be called traits v3  
> (e.g., it goes beyound what Nathanael thought about for the  
> "extended" version, incl. encapsulation etc). So, yeah, I think  
> this is an interesting model[*] (and definitely worth giving  
> someone a PhD for since this is ground work that future generations  
> can build upon) but it's still a ways away from where we *ought* to  
> be if there would be such a thing as software "engineering". And  
> so, in a way my main complaint is that he stopped working on it  
> when it just got interesting...

Google steal him from us. :)
But I sincerly think that the v1 is simple and that even with all the  
care, this simplicity is really still introducing a new feature.
When I see the evolution of Java and C# I think that Smalltalk is  
great since we do not have new crazy features.
I learned to really help the method annotation (coming also soon in  
3.9) much better than the namespace introduction in VW.

>
> [*] To be even more plain about this I feel like Nathanael has  
> solved the harder, yet less interesting problem, namely how to  
> flatten behaviors and organize composition around that flattened  
> behavior. The reason why I'm saying it's the "less interesting"  
> problem is that it ignores objects - in a way this is an algebra  
> which allows us to munge a set of functions into a namespace.

Indeed

> The usefulness of his work lies in being able to express what this  
> "munging" means and to consequently describe its use, the potential  
> conflicts and proposed solutions (incl. aspects of reusability  
> etc). For an end-user scripting system I think it's okay to do that  
> (the end-user will in many places think about functions anyway and  
> it would enable a number of pretty cool interactions) but in a way,  
> it's ultimately non-oop to do that - these *should* be objects and  
> interactions between objects and you really should't just dump a  
> whole lot of functions into a namespace (in a way, that's no  
> different from "include foo.c"). Anyway, end of rant for now.

I'm guessing what you mean ( we need a black board). My main problem  
today is how this is possible that we do not invent
a way to deal with all these versions alltogether leaving happily in  
the same "image". I trying to understand why we have the evolution  
problems. The language seems not to take into account evolution and  
changes. But I do not have concrete and reasonable solution.

Stef




More information about the Squeak-dev mailing list