Amber's html5 canvas

Research Team:
Team leader (HDR):
St├ęphane Ducasse
Project leader and contacts:
Damien Cassou (Project contact)
Igor Stasenko (Graphics expert)
Nicolas Petton (Web expert)

Project Context

Pharo is a new open-source Smalltalk-inspired programming language and environment [2]. It provides a platform for innovative development both in industry and research.

Athens is an innovative open-source vector-graphics framework that lets Pharo users programmatically generate diagrams and other vectorial drawings and animations. Athens supports several rendering back-ends including Cairo (used by, e.g., Firefox).

Amber is a variant of Smalltalk that compiles to JavaScript. Amber is currently gaining momentum as it made it possible for developers to program web applications using a simple language and very powerful tools.

Project goal

The goal of this project is to write a new back-end for Athens so that it can generate graphics on an html5 canvas. With this back-end in place, it will basically be possible to write a single application that can run native and within web browsers.

Work plan

To solve this problem, the student will have to:

  • learn Pharo, Athens, Amber, and html5
  • implement the html5 back-end for Athens
  • make sure everything works fine with Amber
  • implement a small game in Amber to showcase the work

Benefits for the Pharo and Amber communities

  • Facilitate the implementation of games and other graphical tools that can run in the web browser
  • Augment the awareness of developers regarding Pharo and Athens technologies

Benefits for the student

  • Integration into a prolific research group, fond of software development and programming languages;
  • Discover completely different ways to program object-oriented applications
  • Learn html5 canvas
  • Potential integration as a master and/or PhD student either within the group or within one of its numerous partners around the world (Switzerland, Chile, Belgium, Argentina).


  • Having a good understanding of object-oriented programming;
  • Being eager to learn a new programming language and environment.