[Pharo-users] Learning Spec

Sven Van Caekenberghe sven at stfx.eu
Fri Feb 13 04:12:09 EST 2015


From now on it is forbidden to complain about Spec in general, unspecific terms unless you have taken the time to learn about it. Here is a guide to documentation about Spec, most recent first.

There is an excellent presentation by Johan Fabry did during the last Pharo Days, 'Using Spec to Build a UI'. *MUST WATCH* (the video is not yet fully public, but soon will be, the link should work though):


The slides are also not yet available, but soon will be (the talk is much better that the slides on their own).

This draft chapter 'Spec: a framework for describing user interfaces' for an upcoming book:


Look in the image.

Browse the hierarchy below AbstractWidgetModel in the category Spec-Core-Widgets in Pharo 4, look at the protocols called 'protocol' & 'protocol-events' mainly. Look for references to each class. Trace senders of methods until you arrive at examples. Study the examples, play with them, change them.

The UI of most tools in Pharo is also implemented using Spec. Browse the hierarchy below ComposableModel to find them. (Komitter, Versionner, Critics, Metacello, the old Eye Inspectors, ..). Watch and learn.

The cool Spec website:


Read some cool articles like:


See the section 'HP35CalculatorModel' for the Spec part.

The following papers (some older ones refer to API that has changed):

'Seamless Composition and Reuse of Customizable User Interfaces with Spec'


'Spec - A Framework for the Specification and Reuse of UIs and their Models'


'Spec – Technical Report'


Use the image to build a couple of simple UIs using Spec. You will be surprised to learn that it is not that difficult. Just go with the flow, don't try to enforce your world view on it, wait until you are further along.

Have fun !


PS: Once you have done all the above, you are most welcome to help improve Spec by discussing specific, concrete issues.

Sven Van Caekenberghe
Proudly supporting Pharo

More information about the Pharo-users mailing list