Skip to content
mkobetic edited this page Aug 30, 2012 · 14 revisions

This effort has been sparked by Dale's presentation at STIC 2012.

Goals

The goal is to have a version controlled environment for cross-dialect projects. We do not aim to replace existing dialect solutions. There should be a convenient way to run development of a particular branch of a project in a dialect specific manner but be able to export the results into a (usually github based) common cross-dialect repository. The vision is that a cross-dialect project will maintain separate master branches for each dialect and rely on merging capabilities of the version control system to move changes between these branches.

Current Activities (as of March 2012)

Currently there are several dialect specific solutions brewing in their specific project. This project is the umbrella where they will eventually merge. At STIC 2012 we've agreed on the general layout and format of the code storage in a git repository that we will support from all dialects. The format is versioned to allow its evolution, i.e. a repository will have metadata at the top level indicating which format it uses.

Amber + Gemstone

Dale intends to create a non-Monticello based solution for both of these dialects

Squeak, Pharo, Gemstone

At this point we expect the FileTree (Monticello based) project to evolve towards these goals

VisualWorks

Travis Griggs created STIG as a VW specific integration with git. Martin Kobetic is using that as a basis to provide a Cypress solution

Visual Age

Bob Nemec will code the VA Smalltalk implementation.

Proposed file structure

(Following text was added at ESUG 2012 as a result of discussion between Dale Henrichs, Jan Vrany, Martin Kobetic, Martin McClure)

Common property keys

Properties of repository, package and class are stored in file named 'properties.ston' at the corresponding location in the directory structure and contains STON object (for portability it must be restricted to the JSON subset). Each property file contains property named "_cypress_copyright where the value is same as the copyrightLine property below.

Dialect specific property keys should use vendor prefix of the form (e.g. 'vw...', 'squeak...').

Repository Properties

  1. commentFile - filename to be used to store comment (of class or package)
  2. copyrightLine - single line copyright statement that is included in the header of each method file

Package Properties

Class Properties

  1. name - the name of the class (just the unqualified class name)
  2. super - the name of the superclass (just the unqualified class name)
  3. namespace - optional namespace of the class
  4. superNamespace - optional namespace of the superclass
  5. instvars - lists the names of instance variables
  6. classinstvars - lists the names of class instance variables
  7. classvars - list of class variable names.
  8. _xx_type - class type identifier; xx is the vendor prefix and the property value is vendor specific; this attribute should be omitted for the most common class type, i.e. non-variable pointer class
  9. pools - list of variable pool names

Method File Format

Method file starts with following four lines:

  1. a single double-quote
  2. "notice: " + the contents of the copyrightLine property (see above)
  3. "category: " + method category/protocol
  4. a single double-quote

The method source code starts on 5-th line

Clone this wiki locally