A new version of Pharo by Example. The immediate goal is to port Pharo By Example to the most recent version of Pharo and update the content where is necessary.
CSS HTML TeX Shell JavaScript Perl Emacs Lisp
Latest commit d516f39 Mar 12, 2017 @Ducasse Ducasse cleaning cover template
Failed to load latest commit information.
BasicClasses singleton should not be with == Jan 10, 2017
Collections mind the parser Dec 30, 2016
Covers cleaning cover template Mar 12, 2017
Environment update screenshot and debugger pane description Dec 29, 2016
FirstApplication Merge branch 'master' of https://github.com/SquareBracketAssociates/U… Dec 17, 2016
Lulu cover and renaming of files Jan 14, 2017
Metaclasses small fix and updated screenshot Dec 31, 2016
Morphic updated screenshots (changed icons in playground) Dec 31, 2016
PharoObjectModel correctly comment a script reference Dec 28, 2016
PharoTour Expand contractions. Mar 5, 2017
Preface Expand contractions. Mar 5, 2017
Reflection some small fixes Dec 31, 2016
Regex update webdir example for new file api Jan 1, 2017
SUnit typos Jan 21, 2017
Seaside typos glitches Dec 23, 2016
SharingCode fix small type and todo/do_this in sharing chapter Dec 29, 2016
Streams morphic Dec 17, 2016
SyntaxNutshell do not put scripts in chapter summary Dec 28, 2016
UnderstandingMessage pass done Dec 3, 2016
figures Migrate to the sbabook class Jan 26, 2016
legacy Added more conf-related files and some changes May 5, 2014
support PDF metadata, sans-serif URLs Feb 3, 2016
.dir-locals.el Add Emacs configuration file Feb 12, 2016
.gitignore Migrate to the sbabook class Jan 26, 2016
.gitmodules Import sbabook style as submodule Jan 26, 2016
.latexmkrc Migrate to the sbabook class Jan 26, 2016
.travis.yml travis: update latex installation Sep 22, 2015
CONTRIBUTING.md Add windows build instructions Oct 27, 2016
LICENSE Fix license type (#21) Nov 3, 2015
LayoutProblemWerner.txt yupi Jan 21, 2016
README.md update progress Dec 31, 2016
SUMMARY.md status updates Jan 6, 2015
UpdatedPharoByExample.tex added with Feb 4, 2017
compile.sh Migrate to the sbabook class Jan 26, 2016
compile1ChapterInPDF.sh Fix #124: Add 2 simple compile scripts Oct 19, 2015
compileBook.sh Migrate to the sbabook class Jan 26, 2016
download.sh Switch back to Pillar stable after 3.0.0 release Apr 21, 2016
gitinfo2.sh Migrate to the sbabook class Jan 26, 2016
pillar.conf change book title Oct 29, 2016


Build Status


Pharo by Example (vol 1) is a practical introduction for Pharo, a Smalltalk-inspired programming language, IDE and live coding enviroment. This book is an updated version of Pharo By Example for Pharo 1.4.

This version focuses on the latest stable version of Pharo (Pharo 5.0, at the time of writing).

You can find more info and documentation about Pharo at Pharo.org.

Latest Builds

The latest versions of Updated Pharo by Example can be found at the following sites:

Chapter Progress

Chapter Status Latest Link reference
1 - Preface Revised, copyedited html pdf
2 - Pharo Tour Revised, copyedited html pdf Chapter *: A Quick Tour of Pharo>../PharoTour/PharoTour.pillar@cha:tour*
3 - A First Application Revised, copyedited html pdf Chapter *: A First Application>../FirstApplication/FirstApplicatioin.pier@cha:firstApp*
4- Syntax in a Nutshell Revised, copyedited html pdf Chapter *: Syntax in a Nutshell>../SyntaxNutshell/SyntaxNutshell.pillar@cha:syntax*
5 - Understanding Messages Revised, copyedited html pdf Chapter *: Understanding Message Syntax>../UnderstandingMessage/UnderstandingMessage.pillar@cha:messages*
6 - The Pharo Object Model Revised, copyedited html pdf Chapter *: The Pharo Object Model>../PharoObjectModel/PharoObjectModel.pier@cha:model*
7 - Environment Revised, copyedited html pdf Chapter *: The Pharo Environment>../Environment/Environment.pillar@cha:env*
8 - Sharing Code and Source Control Revised, copyedited html pdf Chapter *: Sharing Code and Source Control>./SharingCode/SharingCode.pillar@cha:sharingCode*
9 - SUnit Revised, copyedited html pdf Chapter *: SUnit>../SUnit/SUnit.pillar@cha:sunit*
10 - Basic Classes Revised, copyedited html pdf Chapter *: Basic Classes>../BasicClasses/BasicClasses.pier@cha:basicClasses*
11 - Collections Revised, copyedited html pdf Chapter *: Collections>../Collections/Collections.pier@cha:collections*
12 - Streams Revised, copyedited html pdf Chapter *: Streams>../Streams/Streams.pillar@cha:streams*
13 - Morphic Revised, copyedited html pdf Chapter *: Morphic>../Morphic/Morphic.pier@cha:morphic*
14 - Seaside By Example Needs revision html pdf Chapter *: Seaside By Example>../Seaside/Seaside.pier@cha:seaside*
15 - Classes and Metaclasses Revised, copyedited html pdf Chapter *: Classes and Metaclasses>../Metaclasses/Metaclasses.pillar@cha:metaclasses*
16 - Reflection Needs revision html pdf Chapter *: Reflection>../Reflexion/Reflexion.pier@cha:reflection*
17 - Regular Expressions in Pharo Needs revision html pdf Chapter *: Regular Expressions in Pharo>../Regex/Regex.pier@cha:regex*

Contributing to Updated Pharo By Example (vol 1)

This book follows the fork-and-pull GitHub workflow for contributions:

  1. Fork the repository

  2. For each modification, create a quick topic branch named in the form of...

    • initials_ChapterName_my_topic_description

    example: git checkout -b dz_PharoTour_update_screen_snapshots

  3. Make commits to that branch. When you're ready, make a Pull Request

  4. The request will receive comments/corrections, and will be merged into the main repo.

More info about contributing to this book (including Pillar syntax, setting up LaTeX, etc) can be found in the CONTRIBUTING.md file.

Please send any comments, suggestions, or questions to the pharo-dev mailing list (see also the Get Help section of Pharo.org).

Style Guide

This book is written in Pillar markup. If you are not familiar with it please check the pillar-documentation. See also:


Images (screenshots and diagrams) use Pillar image syntax:

+Image caption>file://figures/filename.png|width=80|label=fig:label+

For example:

+A stream positioned at its beginning.>file://figures/abcde.png|width=100|label=fig:abcde+
  • The width parameter is required (percentage of the screen).
  • Place the files in the figures directory of the chapter they are in.
  • The label should begin with fig:
  • When taking screenshots (PNG format), please compress them (you can use TinyPNG for easy and lossless compression)

To reference an image: Figure *@fig:abcde* (renders to Figure 3.8, for example).

Scripts and Code Blocks

For scripts, method definitions and other code blocks:

[[[language=smalltalk|caption=Hello World in a Transcript|label=src:helloWorld
	Transcript show: 'hello world'; cr.

Note that the label starts with src:.

To reference code blocks, use Script *@scr:helloWorld* (similar to Figures).

Chapter and Section Reference Links

Whenever you refer to other chapters of the book, please use the Pillar internal link syntax and the chapter name. (The cha: in the id is to denote that it's a chapter, to differentiate from a section id.) For example:

Chapter *: A Quick Tour of Pharo>../PharoTour/PharoTour.pillar@cha:tour*

A list of chapter ref link code is provided, to easily copy and paste, in the Chapter Progress / table of contents above.

General Style Guidelines

Please keep in mind the following:

  • When possible, hard-wrap lines at 80 characters (e.g. Meta-Q in Emacs, Cmd-Alt-Q in Atom). This is a common open-source documentation convention, and helps with viewing GitHub-generated diffs. However, due to Pillar limitations, ordered and unordered list elements must be on a single line to be correctly parsed. Those can be left un-wrapped.
  • Only one space between sentences.
  • Avoid periods in section titles. (For example, this section is titled "Style Guide" and not "Style Guide.")
  • All inline code mentions (objects, messages, variables, packages) should use the Pillar monospace notation: ==Object==.


This book is licensed under a Creative Commons Attribution-ShareAlike 3.0 license.

Other Books

Deep Into Pharo (Pharo By Example vol 2)

Deep into Pharo (source code) is the second volume of a series of books covering Pharo. Whereas the first volume is intended for newcomers, this second volume covers deeper topics.

Enterprise Pharo: A Web Perspective

Enterprise Pharo: A Web Perspective (latest PDF, source code) is the third volume of the series. It covers enterprise libraries and frameworks, and in particular those useful for doing web development.