> On 20 Feb 2015, at 18:11, Chris Muller <[email protected]> wrote:
>
>> Chris, didn't you do something about this in Squeak? It would be nice to
>> keep consistent if possible...
>
> Yes, but no one liked it because it employed the Proxy design-pattern
> and requires a become. Perhaps if I'd gotten it perfect the first
> time it'd have been better-received. But, I didn't, and the ensuing
> backlash wiped out any motivation for me to fix it.
>
This is always the danger… I start to be very careful in this regard: better
make (and allow!)
mistakes than doing nothing. Because mistakes can be fixed, while a discouraged
person will
just never do anything. (e.g. leave the project in case of open source).
Of course #become: sadly get really slow when the image gets large… but this is
fixed with Spur,
which means it will possible.
> Marcus' suggestion is more explicit, and so might be better received
> by the community. There's a tradeoff between the two designs: In my
> design, you have to make sure you get it right or the image could lock
> up. In Marcus' design, you have to sprinkle multiple checks for
> #reload in the code and make sure you get it right, or you might end
> up saving corrupt MCZ packages (e.g., with #reload as the ancestry).
>
Yes. I think the only reason I dared to let me think in this direction is that
the #ancestors are accessed *only* via the accessor… but nevertheless:
checks need to be added.
> Either way, its a wasteful part of the design of MC that should be
> addressed. I'm partial to fixing the Proxy solution, but I'd be in
> favor of ripping it out and adopting a stable alternative from Pharo
> if it becomes available.
>
We could do it in two steps: adopt the #become: solution when we use
spur 100%… I even want to have a default Proxy framework in the system
to make these things easier. (something like Ghost).
Marcus