Children

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

Seaside has a growing body of documentation available:

Self-documenting code. Well-written Smalltalk code reads very easily. The refactoring has driven wider use of "intention-revealing names", as well as better commented code (2600 class and method comments, that’s 3 times more than for 2.8)

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).

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.

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.