Cross-Platform Namespaces

Mentor: James Foster
Second mentor: Göran Krampe,
John O'Keefe
Level: Advanced
Accepted student: Germán Leiva
Invited students: Germán Leiva, Mikaël Smaha
Students interested: Germán Leiva(very), Mikaël Smaha(very), Flávio Cruz, Viktor Kerkez

Produce the design of a cross-platform namespace with a reference implementation for Pharo/Squeak.
This will involve:

  • Identify existing namespace approaches in other Smalltalk dialects (GemStone, VisualWorks, GNU Smalltalk, VA Smalltalk, etc.)
  • Identify existing namespace proposals for Pharo/Squeak
  • Design cross-platform namespace and implement for Pharo/Squeak
  • Add tool support for selected implementation

Technical Details

Traditionally, all globals in Smalltalk are visible to all code in the image. While this works fine on a small scale, it becomes a problem when code originates from many different individuals or teams (which is particularly common in an open source community such as Squeak or Pharo). Each module that is developed will naturally have class names that reflect the domain being modeled. In any large system there is likely to be overlap among the names chosen (e.g., Person, User, Preferences, Server, Client, etc.). The typical approach is to preface class names with an abbreviation of the module name. While this works, it is cumbersome and tends to make names either cryptic or cumbersome. What is needed is a system in which internal class names (and other "globals") are visible only to the internals of a module that defines them.

Benefits to the Student

Exposure to compiler and tool building.

Benefits to the Community

A much richer environment that allows more sharing of code without the risk of overlap.

Updated: 9.4.2010