Pharo's goal is to deliver a clean, innovative, free open-source Smalltalk environment. By providing a stable and small core system, excellent developer tools, and maintained releases, Pharo is an attractive platform to build and deploy mission critical Smalltalk applications.

All RMoD contributions are MIT licensed (See the official document), as is Pharo as a whole.

For more information, see


Moose is a platform for software and data analysis. It is an open source project since 1996. It is supported by several research groups around the world, and it is increasingly adopted in industrial projects.

For more info you can browse


Amber is a Smalltalk-inspired language that compiles to JavaScript. It includes a live development environment with a class browser, workspace, unit test runner, transcript, object inspector and debugger. Amber is written in itself, including the compiler, and compiles into efficient JavaScript, mapping one-to-one with the JS equivalent.

For more information, see


Hazelnut is a project which goal is to automatize the bootstrap process of a Pharo environment. This bootstrap process will provide several advantages to the Pharo distribution:

  • making the process reproduceable and repeatable
  • giving support to deep evolution of the system when performing critical changes
  • providing a way to create experimental distributions for research

More information here.


When reengineering software systems, maintainers should be able to assess and compare multiple change scenarios for a given goal, so as to choose the most pertinent one. We designed Orion, an interactive prototyping tool for reengineering, to simulate changes and compare their impact on multiple versions of software source code models. We deal with requirements such as: interactive simulation of changes, reuse of existing assessment tools, and ability to hold multiple and branching versions simultaneously in memory. Specifically, we devise an infrastructure which optimizes memory usage of multiple versions for large models. This infrastructure uses an extension of the FAMIX source code meta-model but it is not limited to source code analysis tools since it can be applied to models in general. We propose the Orion-Browser, a prototype of browser which allows us to navigate in versions. A description is available on the moose website.


Enriched Dependencies Structure Matrix (eDSM) is a tool used to detect and to provide information to break cycles between packages of a system. It offers enriched cells showing contextual information information about the kinds of references made (inheritance, class accesses...), the proportion of referencing entities and the proportion of referenced entities. It uses coloring information to an easier detection. This work has been implemented on top of the Moose reengineering environment and the Mondrian visualization framework. eDSM is integrated in Moose Suite 4.0. A description is available on the moose website.


VerveineJ is a Java to MSE exporter, which means it parses Java code and exports it in a format that Moose (see above) can understand. VerveineJ is based on JDT (the Java Development Toolkit from Eclipse) and takes advantage of its parser and binding solver. However, you don't need Eclipse to run it, it is a standalone application. VerveineJ as been tested successfully on Eclipse itself (Eclipse 3.0: about 3.900 files, 6.700 classes, 45.400 methods, 300.000 entities).


Torch is a software visualization tool that supports integrators in taking decisions about the integration of changes before performing the actual merging, and that supports developers to understand and control their changes before publishing them. Torch provides an overview of how a Smalltalk program was changed, and that aims at aiding its user in understanding these changes. Torch characterizes the changes based on structural information, authors and symbolic information. It offers a dashboard that presents different structural representations of changes using visualizations.


Serializing objects is an important domain since objects should be stored and reloaded on different environments. There is a plethora of frameworks to serialize objects based on recursive parsing of the object graphs. However such approaches are often too slow. The work presented here is based on the idea that objects are much more times loaded than stored, therefore it is worth to spend time while storing in order to have faster loading and user experience. We present an implementation of a pickle format that is based on clustering similar objects.

More information here.

Tools Improvement

During the SummerTalk 2011, Benjamin has proposed to improve some tools of the system like code editing tools or widgets

More information here.


Marea is spare memory management for dynamic languages. Marea source code and information is available at Marea's goal is to automatically detect and swap out to secondary memory unused objects. When one of these swapped out objects is needed, it is automatically brought back into primary memory. To achieve this, while swapping out, the system replaces the original (unused) objects by proxies. Marea updates all objects which were pointing to the existing unused objects to now point to the proxys.

Whenever a proxy receives a message, it loads back the swapped out object from secondary memory. Moreover, Marea swaps all objects, whether they are normal objects, classes or methods.

More information check Marea section.


SourceCity is a 3D visualization tool to analyse object-oriented systems. It render whatever you want as a city. SourceCity is really fast and, as it already said, render whatever you want in less than 5 minutes. It's really easy to configure your own visualization.

The main goal of SourceCity is to help you to have a quick-overview, and know which parts of your system are going wrong.

More information here.


Opal is a new Compiler infrastructure for Pharo. It compiles Smallltalk to bytecode. It uses the RB ParseTree and uses a design that makes it easy to understand and change.

More information here


Telescope provides a system to express highly interactive software visualizations. It provides rich API to express interactive, dynamic, and customized visualizations built on top of Roassal.

More information here