[squeak-dev] Survey: what do you do with Squeak, what do you *want* to do?

Florin Mateoc florin.mateoc at gmail.com
Sun Apr 29 03:10:49 UTC 2018


On 4/28/2018 12:06 PM, Ben Coman wrote:
>
>
> On 28 April 2018 at 21:49, Sean P. DeNigris <sean at clipperadams.com <mailto:sean at 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


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20180428/84943139/attachment.html>
-------------- next part --------------
'From Pharo6.0 of 13 May 2016 [Latest update: #60540] on 28 April 2018 at 10:39:52.840614 pm'!

!Gofer methodsFor: 'operations' stamp: 'SeanDeNigris 6/13/2014 17:53'!
loadBleedingEdge
	"Load the baseline of the previously specifed configuration."
	
	^ self loadVersion: #bleedingEdge! !

!Gofer methodsFor: 'operations' stamp: 'CamilloBruni 9/18/2012 19:10'!
loadStable
	"Load the stable version of the previously specifed configuration."
	
	^ self loadVersion: #stable! !

!Gofer methodsFor: 'operations' stamp: 'CamilloBruni 9/12/2013 11:00'!
loadDevelopment
	"Load the development version of the previously specifed configuration."
	
	^ self loadVersion: #development! !

!Gofer methodsFor: 'operations' stamp: 'CamilloBruni 9/18/2012 19:11'!
loadVersion: anMetacelloVersionIdentifierSymbol
	"Load the given version name"
	^ self execute: GoferMetacelloLoad do: [ :operation|
		operation version: anMetacelloVersionIdentifierSymbol ]! !

!Gofer methodsFor: 'repositories-places' stamp: 'CamilloBruni 9/18/2012 18:27'!
smalltalkhubUser: aUserName project: aProjectName
	self repository: (MCSmalltalkhubRepository owner: aUserName project: aProjectName)! !

!Gofer methodsFor: 'references' stamp: 'CamilloBruni 9/18/2012 18:52'!
configurationOf: aProjectName
	"Add a package reference to the configuration of the given project"
	references addLast: (GoferConfigurationReference name: aProjectName)! !

-------------- next part --------------
'From Squeak6.0alpha of 24 April 2018 [latest update: #17909] on 26 April 2018 at 12:04:52 am'!

!MCSmalltalkhubRepository methodsFor: 'accessing' stamp: 'fm 4/24/2018 23:17'!
description
	^ self location! !

!MCSmalltalkhubRepository methodsFor: 'accessing' stamp: 'fm 4/25/2018 16:25'!
versionNameFromFileName: aFileName
	^ (aFileName copyUpToLast: $.) copyUpTo: $(! !

!MCSmalltalkhubRepository methodsFor: 'interface' stamp: 'fm 4/25/2018 16:06'!
allFileNames

	| stream |
	stream := self httpGet: self locationWithTrailingSlash, '?format=raw' arguments: nil.
	^stream ifNotNil: [ self parseFileNamesFromStream: stream contents ]! !

!MCSmalltalkhubRepository methodsFor: 'interface' stamp: 'fm 4/25/2018 16:22'!
allVersionNames
	^ self readableFileNames collect: [:ea | self versionNameFromFileName: ea]! !

!MCSmalltalkhubRepository methodsFor: 'interface' stamp: 'fm 4/24/2018 22:47'!
parseFileNamesFromStream: aNewLineDelimitedString
	^ aNewLineDelimitedString 
		ifNil: [ ^ OrderedCollection new ]
		ifNotNil: [ aNewLineDelimitedString subStrings: String crlf ]! !

!MCSmalltalkhubRepository class methodsFor: 'preferences' stamp: 'fm 4/28/2018 21:41'!
useSharedWebClientInstance

	^false! !


More information about the Squeak-dev mailing list