Seaside 3.0 Release Announcement

The Seaside core developers are pleased to announce the release of Seaside 3.0.

This release began development as the 2.9 codebase, but the significant scope and nature of the changes led us to realise that the work justifies bumping the version to 3.0. This change reflects the maturity of Seaside, and we believe the 3.0 codebase will be a solid foundation for the foreseeable development of the premier web application development framework in Smalltalk and for the applications and frameworks built upon it. We are confident that the new architecture will allow Seaside to continue to grow, while minimising the impact on our user base.

Why you should upgrade

The changes in 3.0 are intended to make using and extending Seaside faster and easier.

Better design

  • Familiar: The basic architectural concepts will continue to be familiar to users of Seaside 2.8.
  • Simple: Many classes have been refactored to reduce complexity, decrease coupling, and improve flexibility.
  • Modular: The packages in Seaside are now cleanly defined with clear relationships and interdependencies, allowing you to load only those pieces you require.
  • Reified: Key concepts such as URLs and Mime Types are now represented by real objects throughout the framework instead of by strings.
  • Easier to understand: Key classes have had their roles clarified and their interfaces made more consistent. Clear layer boundaries let you focus on understanding one layer at a time.
  • Encoding: Improved support for character encodings gives you out-of-the-box support for languages such as Korean, Chinese and Russian.

Better code quality

  • Better testing: Test coverage has increased from around 200 to more than 1500. The developers monitor test status to ensure that the tests remain green.
  • Refactoring: Many methods have been refactored to reduce duplication, increase efficiency and to reduce coupling between elements.
  • Stripped-down core: Non-core code has been moved out of the core codebase to allow development to focus on a core of well-documented, well-tested code.

Better performance

As a result of the improvements to the code, we’ve seen a number of improvements to the performance of Seaside since the release of version 2.8 due to:

  • The smaller core codebase resulting from the improved design.
  • The introduction of partial continuations (smaller "snapshots") on the supported platforms (this will be of particular benefit to developers on VA Smalltalk and Smalltalk/X that don’t have first-class stack).
  • Smaller memory usage throughout.

Better support

Better portability

  • Platform independent: Seaside 3.0 runs on every major Smalltalk platform out there, including Pharo Smalltalk, Squeak, Cincom Smalltalk, GemStone Smalltalk, GNU Smalltalk, VA Smalltalk and Dolphin Smalltalk. It is officially supported by every commercial Smalltalk vendor.
  • Easy to port: Seaside leverages a custom portability layer called Grease; platform-dependent code is kept in separate packages. Ports can be completed and maintained faster and with less effort, meaning they will be more up to date. Fixes can also be more easily pushed back into the main Seaside repository.
  • Optional continuations: The use of continuations is now optional, making it easier to use Seaside on Smalltalk platforms that do not support them.

Better developer experience

  • Easier to extend and adapt: The refactoring work has made it easier for developers to write their own extensions to Seaside to use different protocols and to serve content in different formats (e.g. RSS, Atom, REST).
  • Easier to try: Just download the Seaside One-click Image and run it on Windows, Mac OS X or Linux.
  • jQuery support: In addition to support for Prototype and script.aculo.us, Seaside 3.0 now includes support for jQuery 1.3.2 and jQueryUI 1.7.3. jQuery methods are wrapped to allow natural Smalltalk syntax to be used.
  • Improved admin tools:
    • Control Panel for Squeak and Pharo allows painless integration and control of web servers including Comanche, Swazoo...
    • The web-based configuration interface allows authorised users to set-up and configure applications, and even debug code through the web-browser.

A better platform for future growth

We are confident that the experience we gained during development of the 2.x codebase has allowed us to introduce a better-architected and more robust framework, which will provide a stable platform for the 3.x branch.

About Seaside

Seaside lets you quickly build highly interactive web applications by writing high-level code, freeing you to think about functionality instead of implementation details. It is based on Smalltalk, a proven and robust language that runs identically on Windows, Mac OS X, Linux and many more platforms.

Features

  • Easy forms and links: Seaside simplifies the creation and processing of forms, fields, and anchors by transparently binding them to variables and code in your application. No more worrying about generating unique IDs and parsing URLs.
  • Component-based development: Seaside lets you build your UI from individual components, each encapsulating a small part of a page. Components can be re-used within and between applications.
  • Simple session management: Seaside models an entire user session as a continuous piece of code, with natural, linear control flow. You can write components that have loops and conditional work flows, call other components, and return just like subroutines. And the back button works as users expect!
  • Programmatic HTML generation: Seaside has a rich API for generating standards-compliant content directly from Smalltalk, without having to keep track of HTML tags.
  • Live updating: Seaside lets you find and fix bugs faster by debugging and updating code and objects live in the server. You can build a prototype seeing the effects of your changes immediately as you develop. Forget the edit-compile-run cycle!

Seaside also has great support for JavaScript and AJAX (including jQuery and Scriptaculous), excellent web-based development tools and debugging support, a rich configuration and preferences framework, and more.

More information

About Seaside
http://seaside.st/about

Seaside homepage
http://seaside.st/

Seaside 3.0 Detailed Release Notes
http://seaside.st/community/development/seaside30

Seaside One-Click Experience 3.0 (runs with one-click on Mac, Windows and Linux)
http://www.seaside.st/distributions/Seaside-3.0-final.app.zip

Seaside 3.0 Developer Image 3.0 (for Pharo developers)
http://www.seaside.st/distributions/Seaside-3.0-final.zip

Bugfixes since Seaside 3.0rc
Issue 581: Fonts in WAWelcome and in other applications
Issue 585: Parameters in AJAX requests are not always properly encoded
Issue 576: #callbackTabs: in jquery-ui public extension to JQAjax
Issue 586: I frequently fail to return a collection of child components from #children
Issue 486: #isolate: appears to fail for WATask
Issue 588: Seaside server process is broken, after image save done programatically (i.e. not from world menu)
Issue 589: JSObject misses jsonOn:
Issue 590: JQBaseTheme does not respect SSL
Issue 593: expired session cookie deletion fails if server hostname is set
Issue 474: Using Halos - CSS Style Editor to update CSS of a component breaks versions view with ’subscript is out of bounds: x’.
Issue 594: #style methods don’t work then session cookies are enabled
Issue 493: RSS ignoring updateRoot: stuff
Issue 452: OneClick welcome page
Issue 479: WAGarbageCollectorStatus can result in ZeroDivide exception
Issue 525: WALegacyRedirectionHandler loses url parameters during redirection
Issue 570: iso-8859-1 doesn’t show up in the encoding list of the server adapter
Issue 547: replace #asSortedCollection with #sorted:
Issue 595: Deselection from a multi selection field does not work
Issue 511: WASwazooAdaptor fails WAUploadFunctionalTest and WAEncodingFuntionalTest
Issue 554: WABuilder>>codec should try WACurrentRequestContext first before using GRNullCodec
Issue 597: Radio Button Callback
Issue 599: remove overrides from Grease

Credits

The developers on this release of Seaside were Lukas Renggli, Julian Fitzell, Philippe Marschall, Gerhard Obermann, John O’Keefe, James Foster, Dale Henrichs, Michael Davies, Michael Lucas-Smith and Nick Ager, with help from Michael Lucas-Smith, Yann Monclair, Stuart Herring, Adriaan van Os, Damien Cassou, Paolo Bonzini and Torsten Bergmann. Thanks to everyone who tested the code on a variety of platforms, and those brave souls who have already run live applications on the bleeding-edge code.