The Cross-Dialect Smalltalk Code Interchange Tool


Camp Smalltalk Rosetta Project

A dialect-neutral framework for Smalltalk source code exchange

Rosetta is a dialect-neutral, XML-based format for Smalltalk code interchange. It is based upon a semantic model of Smalltalk that allows dialect-specific concepts to be mapped to a cross-dialect form, thus enabling transformation between different file-in formats.

Rosetta supports namespace annotations in dialects that do not implement namespaces, thus aiding code porting from a non-namespaced to a namespaced dialect and vice-versa. Also, the use of custom transformation blocks for method source code allows for powerful source code manipulation using the Refactoring Browser’s rewrite tool.

Rosetta was designed to file into a vanilla base image, with no add-ons, compatibility layers etc. It is a lossy transformation format, which means it will install as much as it can, but probably leave out constructs (like namespaces) that cannot be mapped in the receiving dialect.

The Rosetta export framework operates at the level of a “Package” – an ENVY (Sub)Application, Dolphin Package, or VisualWorks Package or Parcel. It also requires the package to be in-image when exported. Support for exporting “Clusters” (i.e. ConfigurationMaps or Bundles etc.) will be included in a following release.

Rosetta is not yet finished. It will keep getting better, though.

Transformation Possibilities

Exporting Dialects

The Rosetta export framework is currently available for the following dialects:

Exporters for other dialects will become available as soon as either we or someone else port them.


XSLT stylesheets are currently available to transform Rosetta format into the following formats:

In addition, there's a stylesheet to convert Rosetta to HTML (for on-line viewing of package content), and we're working on one for automatic documentation generation.

Please mail bug reports, enhancement requests, etc., to Rosetta.


The canonical Rosetta DTD is hosted here at Sourceforge: Logo