
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 Janko 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 Aida/Web Smalltalk Web Application Server http://www.aidaweb.si