Iliad, a new lightweight web framework for GNU Smalltalk

Tagged:  •    •  

A new lightweight web framework for GNU Smalltalk named Iliad is available for download.

svn co http://bioskop.fr/svn/gst/iliad/trunk iliad

We're working on this framework since a few months now, and we just wanted to share the code with others.

For our personal needs, we wanted to have the following features in the framework:

  • standalone stateful widgets
  • REST-like applications
  • simple API
  • easy to setup and deploy (no complicated configuration step)

In order to avoid to reinvent the wheel, we started it by reusing pieces of code from other libraries. In particular, we adapted the dispatch pattern from HttpView2, the composite element hierarachy for building HTML from Aida/Web, and the stateful Widgets from Seaside, however without using continuations. A bit of glue code was needed to make this work together, but we quickly ended up with something that actually worked.

The logical next step was to add a javascript layer to fully ajaxify those stateful widgets. Amazed by Weblocks "mark dirty" mechanism, we reused this idea to make it work with Iliad. I must say that the result was nice, and made Iliad applications really smooth and fast. A cool thing is that Iliad degrades nicely to full requests if javascript is not enabled, so the behaviour of Iliad remains the same.

Now that the code has gained some stability, we think it can be used by others. Unfortunately, there is almost no doc yet, except in the code itself. In particular, if you want to give Iliad a try, you probably should read comments in Core/Builders/Application.st and Core/Builders/Widget.st.

Here's a really quick start:

svn co http://bioskop.fr/svn/gst/iliad/trunk iliad
cd iliad
gst-package -t ~/.st ./Core/package.xml
gst-package -t ~/.st ./Swazoo/package.xml
gst-package -t ~/.st ./More/Widgets/package.xml
gst-package -t ~/.st ./More/Magritte/package.xml
gst-package -t ~/.st ./More/Examples/package.xml
gst-package -t ~/.st ./More/package.xml
gst-package -t ~/.st ./package.xml

gst
>> PackageLoader fileInPackage: 'Iliad'
>> Iliad.SwazooIliad startOn: 7777
>> Processor activeProcess suspend

And go to http://localhost:7777/examples/counters/multicounter to see
the multi-counter example.

Nicolas Petton,
Sébastien Audier

This versatile jacket is wrinkle resistant. It features full lining and metallic buttons. This Classic blazer is rugged, yet comfortable. To fit your specific blazer needs, we stock over 20,000 blazers in 16 different colors.

Royal Blue Blazers

there's not only the "hello world" of seaside (multicounter), but also the "hello world" of rails, i.e. a simple blog (.../examples/blog) implementation and also a todo-list (.../examples/todo)

User login