Seaside (software)

From Wikipedia, the free encyclopedia
  (Redirected from Seaside web framework)
Jump to: navigation, search
Seaside
Seaside.png
Seaside logo
Seaside-development.png
Screenshot of a web application in development mode
Developer(s) The Seaside Team[1]
Initial release 2002; 15 years ago (2002)
Stable release
3.2.0[2] / May 6, 2016; 12 months ago (2016-05-06)
Repository github.com/SeasideSt/Seaside
Development status Active
Written in Smalltalk
Operating system Cross-platform
Platform IA-32, x86-64
Available in English
Type Web framework
License MIT
Website seaside.st

Seaside is computer software, a web framework to develop web applications in the programming language Smalltalk. It is distributed as free and open-source software under an MIT License.

Seaside provides a component architecture in which web pages are built as trees of individual, stateful components, each encapsulating a small part of a page. Seaside uses continuations to model multiple independent flows between different components.[3] Thus, it is a continuation-based web framework[4] based on the ability to manipulate the execution stack of some implementations of Smalltalk.

Key features[edit]

Seaside's implementation of continuations was an initial point of interest in its first several years of existence following its 2002 release. Continuations provide a mechanism for rollback and resumption; a useful provision for the web browser environment in which refresh and back buttons may interrupt the flow of processing. Continuation servers give the developer the ability to maintain state on the server in a scalable manner.[5] The subsequent improvement of web browser implementations of JavaScript since 2002 has made the continuations aspect of Seaside less significant, by allowing client browsers to better keep track of state.

A distinctive feature of Seaside is its integrated development environment, providing access to development tools and debugging support within an application. In development-mode, unhandled errors are reported to the web page; developers can access and alter the program code and state directly from the web page, allowing bug identifying and fixing processes to occur within an integrated development environment (IDE).[6]

A Seaside application is a set of interacting components. Each one stores state across page views and can render itself to the HTML stream. Thus, it is straightforward to write a component once and then reuse it elsewhere in an application. Seaside also supports the notion of tasks, which allow a programmer to describe the high-level logic of component interaction.

Seaside is not template-oriented, and does not offer generating or using HTML templates; HTML markup is generated programmatically. (The Seaside-based Pier content-management framework does offer wiki-markup syntax for templating.) Seaside uses callbacks on closures to specify actions to be taken when clicking on a link or submitting a form. The developers and users of Seaside argue that this helps enforce separation of structure (markup) from content and presentation (Cascading Style Sheets (CSS)).[7] Seaside's combination of components, callbacks, and closures can significantly reduce the semantic gap between a complex workflow and its representation in code.[8]

Seaside supports Ajax through integration with script.aculo.us and jQuery. Seaside also supports Comet-style server-push technology.[9]

Philosophy[edit]

Over the last few years, some best practices have come to be widely accepted in the web development field:

  • Share as little state as possible.
  • Use clean, carefully chosen, and meaningful URLs.
  • Use templates to separate the model from the presentation.

Seaside deliberately breaks all of these rules. Avi Bryant describes it as a 'heretical' framework. He argues that this careful and reasoned rejection of the conventional wisdoms of web development has led to a very effective model for developing web applications.[10]

Ports[edit]

The main development of Seaside is implemented in Pharo Smalltalk.[11] Ports for other Smalltalk dialects exist. Michel Bany implemented ports to VisualWorks through Seaside version 2.7; Cincom Systems supports Seaside as part of VisualWorks as of early 2008. Instantiations announced Seaside support in its VA Smalltalk version 8.0. As of February 2009, VA Smalltalk 8.0 is in beta. Esteban Maringolo maintained the 2.8 port, plus some other add-ons (such as script.aculo.us) for Dolphin Smalltalk X6.[12] Gemstone Systems implemented a port to Gemstone/S.[13] A port of 2.8 was completed for GemStone,[14] and a preliminary version of 3.0 runs on GNU Smalltalk 3.0a and later.[15]

Criticisms[edit]

Open-source projects using it[edit]

Proprietary projects using it[edit]

See also[edit]

References[edit]

External links[edit]