This document gives some advice on how to share code with other Smalltalkers;
both other Smalltall/X and other dialects.
- Portability Issues
- ChangeFile Exchange
- FileOut / FileIn
- Shared Repository
- Monticello
Skip this, if you only intent to give your code to other Smalltalk/X users.
Namespaces
Squeak does not support namespaces. To be able to move code to Squeak/Pharo or VisualAge, you
have to move classes out of their namespace and possibly give them a prefix to avoid
class name conflicts in the target system. A good workaround is to prepend the classes
original namespace as prefix. I.e. rename "MyNamespace::Foo" into "MyNamespaceFoo".
VisualWorks uses a different namespace scheme ("Namespace.Name" instead of "Namespace::Name").
As there is currently no automatic rewrite tool for this, it is recommended to use the above
renaming strategy as well and move the classes into their target namespace once you have them
ported.
The static code checking tools (in the browser) contains a search rule for namespace uses.
Identifiers
Squeak/Pharo does not allow for underline characters in identifiers and selector names.
You have to rename all of them before exporting.
The static code checking tools (in the browser) contains 3 search rules for this
(underline in class/instvar names, underlines in locals and underlines in selector).
The easiest mechanism is to pass a changeFile (or part of it) to your target system,
and open a changeList tool there. There, you can browse and inspect individual changes and
get a chance to skip or modify things before they are loaded.
As this becomes quite tedious for big files, use this for a small number of changes and patches.
Fileout each individual class from the browser, and either fileIn in the target system,
or open a changeList there (on the class files) and load them incrementally.
Using a shared source code repository allows for classes to be checked in on one side and
checked out on the other. This will probably only work seamless if both systems are Smalltalk/X
dialects. For VisualWorks interchange, a StoreSCM class exists, but it has not been maintained and
updated to the current Cincom version, after they changed their DB layout recently. So this may need
a bit of additional work.
ST/X is able to generate monticelllo packages, which can be loaded into Squak/Pharo systems.
Continue in "More Smalltalk".
Copyright © Claus Gittinger Development & Consulting
Copyright © eXept Software AG
<cg at exept.de>
Doc $Revision: 1.3 $ $Date: 2021/03/13 18:24:49 $