
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 -- Matthias Springer * me@matthiasspringer.de * +49-1577-3814255 Student B.Sc. IT-Systems Engineering (Hasso-Plattner-Institut) Stahnsdorfer Straße 144c, 14482 Potsdam