On 4/28/2018 12:06 PM, Ben Coman wrote:


On 28 April 2018 at 21:49, Sean P. DeNigris <sean@clipperadams.com> wrote:
Nicolas Cellier wrote
> The growing gap with Pharo is not helping and is really annoying me

+1 but what can be done? The divergence is more and more fundamental e.g.
namespaces are only available on Squeak, stateful Traits/real packages
(RPackage) only on Pharo. For a time, I tried to sync all my projects
between the two, but the effort is exponential, and it wasn't even clear if
there would be users…

This will only get worse with Pharo moving to Bloc and presumably 
Squeak dependent projects requiring Morphic for a long time.


snip

If Squeak saw some value in having a similar bootstrap, 
then leveraging Pharo's efforts would make sense and might result in 
some *known* common minimal stage (e.g. pre-GUI) between distributions. 
Maintenance effort could then at least be shared at that level.

Such a minimal common bootstrap would probably suit being hosted under the OpenSmalltalk banner.


Speaking of which, one obvious point of contact could/should be smalltalkhub. I am not sure if or how often squeakers are using it, and it might be that I am missing something, but I tried to load John Brant's SmaCC as instructed on his page and failed miserably, although SmaCC should be a poster child for sharing between different Smalltalks. It was built with sharing in mind, it works for and within VA, VW and Pharo. Furthermore, the project as published on smalltalkhub has already taken care of separating the Pharo-only parts (mostly UI), and the configuration has a spec called #common (as opposed to #pharo) that should be loadable in Squeak.

John's instructions say:

Gofer new
    smalltalkhubUser: 'johnBrant' project: 'SmaCC';
    configurationOf: 'SmaCC';
    loadBleedingEdge

Yet this clearly does not work out of the box in Squeak, so after following the Metacello instructions and loading it (which did work nicely), I had to not only fileIn a couple of Pharo classes (GoferConfigurationReference. GoferMetacelloLoad and MCSmalltalkhubRepository) to Squeak, but I had to also add several methods to Gofer and MCSmalltalkhubRepository. While in Gofer they were just some additional utility methods from Pharo, the ones in MCSmalltalkhubRepository were needed to override inherited behavior, plus for some reason WebClient did not work for me, so I had to make sure to use HTTPSocket (which also has to replace the Pharo Zinc client).

The Gofer-related code would thus be identical with the one in Pharo, unfortunately MCSmalltalkhubRepository will probably have to diverge, but I think that's a small price to pay.
I have attached as changesets the added methods.

Florin