Glamorous Toolkit and Pharo

Glamorous Toolkit (GT) is built in Pharo, and it enables people to work with Pharo systems. Nevertheless, the goal of GT is distinct from that of Pharo and so is its realization.

Our goal: Moldable Development

Our goal is to provide a complete and novel development experience to allow people to make the inside of systems explainable. All our work is free and open-source under the MIT license. We contribute two things towards our goal. First, we provide the actual environment. Second, and perhaps more importantly, through GT we enable Moldable Development, the approach we have authored.

Moldable Development puts forward the hypothesis that the shape of software is essential and that it has to be customized to match the context of the developer. By now, we have a decade worth of experience and experiments in various scenarios. For example, we use it to assess and steer the architecture of legacy systems, or to explain the business logic to non-technical people.

Moldable Development was embodied in the first generation of GT which was integrated into Pharo in 2014, and it showed how we can indeed provide an experience that is distinct from any other, including the classic Smalltalk one.

The new GT takes moldable development much further. Especially visible are new kinds of tools, like Lepiter with its live notebooks, slide shows with interactive explanations, or a Coder with expandable editors.

Still, there are less visible parts. Underneath, we have a generic infrastructure for handling other languages. It comes with SmaCC, the parsing engine that allows us to create parsers for new languages (see How to parse sources in different languages for examples).

Then there are even more technical engines. Releaser makes it possible to version deeply nested projects and repositories completely automatically. Visualizer adds significant visualization abilities to the overall environment.

You can think of GT as a set of tools, but that would miss the point. GT is a whole environment that enables a new way of thinking about programming. We see the environment as a language, one that extends the base language with visual and interactive operators that can be combined in many ways. For instance, Examples offer a different technical way to capture tests, but when combined with live documents they can change how we document our systems and even how technical people communicate with non-technical people.

GT relies on the vm, language, and basic libraries of Pharo, but it comes with a completely separate Graphical stack and engines for tools, such as syntax highlighting and completion. This stack is particularly relevant because it renders every scene through a single rendering tree. On the one hand, this allows us to create new kind of interfaces. On the other hand, visualizations become first class citizens at a very low cost.

A modular system

While we bundle multiple things together, we still keep GT highly modular. It is currently built out of 167 distinct, yet combinable, components. The picture below provides an overview of these components and their interdependencies.

GT loads cleanly in Pharo. In practice, this means people working on projects built on top of the Pharo runtime have the option of two distinct environments.

A distinct environment

If we define a Smalltalk-like system as being the language plus the environment, GT is a new such system. The tools and the experience are different, but more importantly, the workflow that it enables is distinct.

The traditional Smalltalk environment was a revolution when it was created. It enabled humans to interact with the inside of software systems in novel ways that then led to a new way of perceiving programming. We see moldable development as yet another leap.