[Etoys] Fully Relicensed version of mainstream Squeak
Andreas Raab
andreas.raab at gmx.de
Thu Oct 23 01:47:02 EDT 2008
Matthew Fulmer wrote:
> It sounds like a good plan. Do you have a patch I could use to
> get started? I would definitely like to see just how bad the
> situation is in 3.9 or 3.10. Croquet would be nice too, but I
> think the history of Croquet is much more muddled than the
> history of squeak.org
Probably not. Remember that both Tweak and Croquet were MIT licensed
from day one which really simplifies matters since all contributions
were always understood to be MIT licensed. The only question is whether
the Croqut base image (deployment/Homebase.image) is squeaky license
clean or not (pun intended). A quick check - comparing the versions in
homebase.image with the versions in etoys4 - shows that any auditing
effort should be *very* manageable (mostly because they share the same
3.8 ancestry). Here is the total of methods that are in Homebase.image
and where etoys4.image has different versions (scripts below):
Kernel: 245 / 3035 (91.92% identical)
Collections: 124 / 2047 (93.94% identical)
Compression: 13 / 435 (97.01% identical)
Multilingual: 179 / 1023 (82.5% identical)
Graphics: 110 / 2196 (94.99% identical)
GraphicsTools: 1 / 179 (99.44% identical)
TrueType: 9 / 140 (93.57% identical)
XML-Parser: 21 / 339 (93.8% identical)
Network: 195 / 1910 (89.79% identical)
Morphic: 1349 / 11534(88.3% identical)
SmaCC: 0 / 113 (100.0% identical)
Sound: 61 / 1523 (95.99% identical)
Files: 28 / 513 (94.54% identical)
System: 469 / 3317 (85.86% identical)
Exceptions: 13 / 229 (94.32% identical)
Balloon: 72 / 462 (84.41% identical)
Movies: 61 / 524 (88.35% identical)
Flash: 20 / 723 (97.23% identical)
Tools: 203 / 1946 (89.56% identical)
ST80: 50 / 1559 (96.79% identical)
Nebraska: 169 / 707 (76.09% identical)
FFI: 10 / 393 (97.45% identical)
Compiler: 94 / 657 (85.69% identical)
Protocols: 15 / 297 (94.94% identical)
SUnit: 0 / 221 (100.0% identical)
Tests: 1 / 394 (99.74% identical)
MorphicTests: 6 / 47 (87.23% identical)
NetworkTests: 0 / 48 (100.0% identical)
KernelTests: 13 / 657 (98.02% identical)
GraphicsTests: 0 / 79 (100.0% identical)
CollectionsTests: 0 / 115 (100.0% identical)
SMBase: 335 / 603 (44.44% identical)
SMLoader: 21 / 98 (78.57% identical)
Games: 613 / 1358 (54.86% identical)
PackageInfo-Base: 41 / 134 (69.4% identical)
Monticello: 1763 / 1763 (0.0% identical)
VersionNumber: 0 / 36 (100.0% identical)
TweakMC: 21 / 21 (0.0% identical)
MonticelloConfigurations: 113 / 113 (0.0% identical)
ToolBuilder-Kernel: 305 / 305 (0.0% identical)
ToolBuilder-Morphic: 142 / 142 (0.0% identical)
StarSqueak: 208 / 209 (0.47% identical)
Scamper: 90 / 90 (0.0% identical)
VMMaker: 3507 / 3531(0.67% identical)
Speech: 954 / 954 (0.0% identical)
Note that for most of the core packages (like Network or Morphic) I
would expect the changes to come from the etoys image due to the
modifications done for OLPC. In reality I would expect that you would
probably have to audit less than 5% of the code base. And of that I
would expect a goodly chunk to be written by yours truly which means it
is either covered by the VPRI or the Croquet license.
Cheers,
- Andreas
[--------- Creates a file with all versions of all methods ----------]
"Run this in homebase.image"
Utilities informUserDuring:[:bar|
allVersions := MCWorkingCopy allManagers collect:[:mgr|
info := mgr package packageInfo.
bar value: 'Processing ', info name.
Array with: info name with: (info methods collect:[:mref|
Array with: mref actualClass name
with: mref methodSymbol
with: mref compiledMethod timeStamp]).
]].
(FileStream forceNewFileNamed: 'C:\homebase.versions')
fileOutClass: nil andObject: allVersions;
close.
[-------- Compares the above file with the current image ---------]
allVersions ifNil:[
[file := FileStream readOnlyFileNamed: 'C:\homebase.versions'.
allVersions := file fileInObjectAndCode] ensure:[file close].
].
Utilities informUserDuring:[:bar|
allVersions do:[:pspec|
pkgName := pspec first.
bar value: 'Verifying ', pkgName.
total := matches := 0.
pspec second do:[:mspec|
cls := Smalltalk classNamed: mspec first.
cls ifNotNil:[method := cls compiledMethodAt: mspec second ifAbsent:[]].
method ifNotNil:[stamp := method timeStamp].
stamp = mspec third ifTrue:[matches := matches + 1].
total := total + 1.
].
Transcript cr; show: pkgName,': ', (total-matches) asString,' / ',
total asString,' (', (matches asFloat / total * 100 truncateTo: 0.01)
asString, '% identical)'.
]].
More information about the Etoys
mailing list