Revived from the dead [Re: [squeak-dev] [Cuis] Cuis]

keith keith_hodges at yahoo.co.uk
Sun Jan 24 13:09:04 UTC 2010


> Josh> that it is a technical shortcoming of Sake/Packages, I just  
> think that
> Josh> any attempt to have universal cross-fork compatibility is  
> fundamentally
> Josh> doomed to either:
>
> Josh> 1) fail, or
>
> Josh> 2) "succeed", but at the cost of preventing fundamental  
> improvements to
> Josh> the programming model


Let's try an example. We have three forks...

Edgars-Minimal , Keith's Beach, and Pharo's.

If I develop a package, Rio, that loads into a Pharo release,

in order to load Rio into Beach, I have two choices.

1. Make the Rio code base more general, use the lowest common  
denominator (i.e go backwards)
2. Make Beach more like Pharo with a patch or two. (The forks are  
converging with the patch)

I prefer the 2nd option. Now if I patch Keith's-Beach, my patch is  
only useful to me.
However if I patch 3.10 on which Keith's Beach is built then I am  
capturing useful knowledge, for all users of 3.10, including Edgar.

So along comes Edgar, he finds Rio doesn't load, however there is a  
patch which clearly explains the issue. He doesnt need to understand  
Beach, because the patch is against 3.10 which he already understands.  
Since he is the developer of Minimal based on 3.10 he can see how to  
adapt the patch for Minimal

So, now we have several benefits.

1. Rio loading in three base images, and
2. the api of the three forks are converging.

So what does this mean in practice. If you develop your next base  
image (aka 3.11) in smaller steps, patches against 3.10, then other  
forks can gain api compatability with 3.11, by choosing to become more  
like 3.10 (a task which is possible), rather than choosing to become  
more like 3.11 a task which is impossible because 3.11 isn't finished  
yet.

regards

Keith





More information about the Squeak-dev mailing list