[Esug-list] GSoC Project Proposal: Morphic for Amber, Looking for mentor

Matthias Springer me at matthiasspringer.de
Fri Apr 26 16:25:16 EDT 2013

Hi Smalltalkers,

I'm a computer science student studying in Potsdam, Germany, in the 6th 
semester (take a look at my profile on the ESUG GSoC website, 
http://gsoc2013.esug.org/matthias-springer/biography) and want to 
propose a GSoC project. I'm looking for a mentor. I know that it's 
already late but I started working on this project just some weeks ago. 
Regardless of whether you would be willing to participate as a mentor, 
I'd like to know if this project is something you're interested in and 
what features are most important for you. I'd like to hear about your 

Amber is a Smalltalk implementation running in a web browser. It is 
written in JavaScript. Amber provides some basic Smalltalk classes and 
methods. It is also possible to render HTML code in a Seaside-like way. 
But in contrast to Seaside, Amber has the advantage that the whole 
Smalltalk VM runs inside the browser. Code written in Amber can be 
automatically filed out to the hard disk (using a NodeJS server running 
in the background).

My proposal is to reimplement parts of the Morphic framework in Amber. 
This would have several advantages.
- Existing Squeak/Pharo/... applications that use the Morphic framework 
can be ported to Amber easily.
- GUI applications can be developed more easily. For complex GUI 
applications running in a browser, people usually use JavaScript 
libraries like ExtJS. But I think, when someone decides to use Amber, we 
can assume that the this person is also fairly familiar with the Morphic 
framework. This makes Amber even more interesting. Furthermore, more 
people might decide to use Smalltalk.
- GUI applications can be written entirely in Smalltalk, without 
- We can easily provide advanced programming tools like multiple class 
browser windows and OmniBrowser.

My vision is to provide a fully-featured Smalltalk programming 
environment running in the browser that provides all features that are 
offered by Squeak/Pharo (class browsers, Monticello, ...). I think not 
all of this can be done in the scope of a GSoC project but providing a 
Morphic implementation would be the first step. Having multiple class 
browsers and all the other components (inspect, debugger; this already 
exists in Amber) in a seperate window (instead of tabs) would already be 

I'm currently working on porting a very small part of the Morphic 
framework to Amber, in order to get Dale Henrichs' tODE 
(https://github.com/dalehenrich/tode) working in Amber. I already 
implemented some basic Morph classes like "Morph", "SystemWindow", 
"TextMorph" and "SimpleButtonMorph", but only very basic methods that 
are needed by tODE (see 

Here's some technical stuff about how my current implementation works.
- All morphs need to be rendered as HTML DOM elements.
- Morphs are rendered using "HTMLCanvas" and "Widget", both classes are 
provided by Amber.
- Morphs are rendered inside a div container, submorphs can be added by 
adding the submorph's div container to the owner's div container and 
setting its position and so on.
- Not all HTML tags can be reused. For instance, the HTML text box/text 
area does not support text with different text formats (color, emphasis, 
...). I had to reimplement text areas for editable "TextMoprh"s with DOM 
- I use JQuery and JQuery UI intensively for DOM manipulations and 
events. JQuery is already integrated in Amber and can be used from 
Smalltalk code (but I had to implement some additional helper functions).

A proposal on how to get started and structure the project.
- 1st week: think about architecture (how to do the rendering, ...), 
class structures (e.g. which Morph classes are needed) and choose some 
existing Squeak/Pharo applications that use an important/representative 
subset of Morphic.
- Next weeks: implement Morphic classes in order to get the Squeak/Pharo 
applications running (start with an easy one).
- Half-time: basic Morphic functionality should be working. Begin 
implementing more advanced Morphic classes for getting a class browser 
running. We have to think about whether to port an existing class 
browser or to reuse parts of the current Amber class browser (atm, I 
don't know if it's even implemented in Smalltalk). When we decide to 
port an existing class browser, we have to take into account that Amber 
has a different way of manipulating and compiling classes (to JavaScript).

Similar previous work: The Lively Kernel (http://www.lively-kernel.org/) 
is an implementation of the Morphic framework in JavaScript (no 
Smalltalk). I want to do this in Amber.

I'm looking for a mentor for the GSoC 2013. Ideally, the mentor has a 
good understanding of the Morphic framework and maybe even HTML, 
JavaScript and CSS (but I'm already quite familiar with this).

Best regards,
Matthias Springer

Matthias Springer * me at matthiasspringer.de * +49-1577-3814255
Student B.Sc. IT-Systems Engineering (Hasso-Plattner-Institut)
Stahnsdorfer Straße 144c, 14482 Potsdam

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4471 bytes
Desc: S/MIME Kryptografische Unterschrift
URL: <http://lists.esug.org/pipermail/esug-list_lists.esug.org/attachments/20130426/76abd543/attachment.p7s>

More information about the Esug-list mailing list