Squeak
  links to this page:    
View this PageEdit this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide
The Virtual module hierarchy
Last updated at 4:39 am UTC on 3 May 2002
(Places for your modules.)

Module paths are roughly similar to Java class paths like java-lang.util or com.sun.whatever . Here they are literal arrays like #(Project Cool).

A general principle is that the owner of a certain module path, i.e. a place in the name hierarchy, is in control of all potential names "under" that path. So whoever holds e.g. #(Project Cool) , they "control" everything under that path, ie. #(Project Cool QuantumComputation) and so on, so they can manage this entire subtree as they wish and no conflicts with others can arise there.

This ownership of subtrees is equally true anywhere in the virtual hierarchy. So once you have a spot, the entire space under there is yours to control without risking conflicts.

(The discussion that led to this design is summarized in Rationale for the Virtual Module Hierarchy.)

Purpose of the top-level "module domains"

The intention behind the top-level "module domains" Squeak, People, Project, Com and Org is roughly this:

#(Squeak [...]) – the official distribution

Everything under Squeak would be considered "official", ie. roughly part of the official distribution. E.g.
    #(Squeak Morphic)

#(People [...]) – your individual module space

Your code will typically go under either Project or People.

  1. (People) is meant to hold spaces for all Squeakers, organized by their method initials (this convention is meant to give some convenient effects later on).
    #(People [your method initials])
e.g.
    #(People xy)
Under there you would put anything you want, including quick hacks that you want to make available, or little goodies, and so on.

#(Project [...]) – public or collaborative efforts

"Project" is thought to be used for slightly more "public" or stable things, or for that matter, for efforts that several people collaborate on. For example, the Refactoring Browser, Whisker, MathMorphs, and so on.

Com and Org

There is also the possibility to allocate space under Com and Org, this is meant to allow companies or organizations to allocate module names that do not clash with others. E.g. with
    #(Com Acme)
a company could place whatever they wish under there wthout any risk of conflict with other contributions, and where they can more or less do as they wish.