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

Janko Mivšek janko.mivsek at eranova.si
Sat Apr 27 03:28:23 EDT 2013

Hi Matthias,

Very good proposal indeed, specially combined with all proposed project
over Spec - a declarative specification and builder for UI, both desktop
and web. Also in Aida/Web we are looking for further enhancements on
that field and if Morphic way of UI building happens to be the superior
way, we will also adapt it.

I therefore propose that you prepare a project proposal ASAP, following
the template other projects are. Send it to me and I'll add it to our
GSoC site. Other half of your proposal then put into a proposal page
after you express an interest on your own project, being invited, etc.

About mentorship, I can be a second mentor, dealing with all web stuff,
while I don't know much about Morphic. But it seems you are quite
knowledgeable of it already? Nico will certainly help too with Amber stuff.

One recommendation: try to stay independent of any outside JS library as
much as possible. For instance, you don't need jQuery nowadays for DOM
and event management because recent browsers have quite decent support
for that. Even that resulting code can be without jQuery a bit uglier,
you are not dependent of jQuery fate. I know that from my own experience
being trapped once into dependence to a Prototype, predecessor of
jQuery, which is nowadays practically defunct...

Best regards

Dne 26. 04. 2013 22:25, piše Matthias Springer:
> 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
> ideas.
> 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
> JavaScript.
> - 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
> great!
> 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
> https://github.com/matthias-springer/tode-web-amber).
> 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
> manipulation.
> - 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

Janko Mivšek
Smalltalk Web Application Server

More information about the Esug-list mailing list