Porting Monticello to Smalltalk/X

Mentor: Jan Vraný
Second mentor: Claus Gittinger
Level: Intermediate
Invited students: Petr Spacek
Students interested: Petr Spacek

Over the years, lot of nice stuff has been developed for Squeak/Pharo. All the code is maintained using Monticello, a source code management tool written for Squeak and Smalltalk. Porting the code to other dialects lacking monticello (such as Smalltalk/X) support is difficult and error-prone. Updating already ported code to a new version or merging changes back to the mainline is even worse.

Monticello port will ease porting of other successful projects. AidaWeb, Seaside, SqueakDBX, Glamour, Mondrian or DeltaStreams are just few of them. GemStone pioneered this approach and
its success show us that this is a reasonable way to go.

The goal of this project is to port and integrate Monticello to
the Smalltalk/X environment so the programmer will be able to
load a code from a monticello repository and commit it back right
from the Smalltalk/X IDE.

Technical Details

Porting Monticello to Smalltalk/X consist of three parts: (i) porting a Monticello's base classes, (ii) creating usable user interface integrated to existing Smalltalk/X tools and (iii) define a mapping scheme to map Smalltalk/X package names to Monticello ones and back. Port of base classes should be pretty straightforward - Monticello code-base is already covered by an extensive set of tests. The user interface part of monticello may reuse a code already written for libsvn (a SubVersion integration).

Benefits to the Student

Student will explore smalltalk language in depth. Working on source code management tool requires good knowledge of every aspect of given programming language. Smalltalk
is dynamic reflective language and Smalltalk source code management tools are usually good examples of usage of reflective features. Moreover, the student will become a part of big community, which is always a good experience.

Benefits to the Community

Due to historical reasons there are many Smalltalk dialects. Although they are all similar in spirit they differs in many details like an API, language features, user interface toolkits. Since there is a lot of high-quality code already stored in Monticello,, its support in Smalltalk/X will ease
further porting of other libraries and tools. Consequently this will enlarge particular tool sub-community. Moreover any back-contributions will further improve the tool or library,
making it even better and more usable. Monticello may serve as an integration platform ant thus,
having a Monticello ported is the first necessary step.

Updated: 22.3.2010