Seaside web framework
Encyclopedia
Seaside is a free
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...

 and open source web application framework
Web application framework
A web application framework is a software framework that is designed to support the development of dynamic websites, web applications and web services. The framework aims to alleviate the overhead associated with common activities performed in Web development...

 for developing web application
Web application
A web application is an application that is accessed over a network such as the Internet or an intranet. The term may also mean a computer software application that is coded in a browser-supported language and reliant on a common web browser to render the application executable.Web applications are...

s in Smalltalk
Smalltalk
Smalltalk is an object-oriented, dynamically typed, reflective programming language. Smalltalk was created as the language to underpin the "new world" of computing exemplified by "human–computer symbiosis." It was designed and created in part for educational use, more so for constructionist...

.

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

Key features

It is Seaside's implementation of continuations
Continuation
In computer science and programming, a continuation is an abstract representation of the control state of a computer program. A continuation reifies the program control state, i.e...

 that makes it of particular interest; continuations provide a mechanism for rollback and resumption. This is essential in a web browser environment where "refresh" and "back" buttons may interrupt the flow of processing, and continuation servers give the developer the ability to maintain state on the server in a scalable manner.

Another distinctive feature of Seaside is that it comes with an integrated development environment, providing access to development tools and debugging support from within the applications. In development mode, unhandled errors are reported to the web page, and developers can access and alter the program code and state directly from the web page, allowing the bug identification and fixing process to happen in an integrated environment.

A Seaside application is a collection of interacting components. Each component stores state across page views and can "render" itself to the HTML stream. Because of this setup, it is straightforward to write a component once and then reuse it elsewhere. Seaside also supports the notion of tasks, which allow the programmer to describe the high-level logic of how components interact.

Seaside does not come with any built-in tools to support the generation or use of HTML templates; HTML markup is generated programmatically. (The Seaside-based Pier
Pier (software)
Pier is a free and open source content management system written in Smalltalk using the Seaside web application framework.Pier is written with objects from top to bottom. Pier is based on Magritte, a meta-description framework...

 content-management framework adds wiki-markup syntax as a templating solution, however.) Seaside uses callbacks
Callback (computer science)
In computer programming, a callback is a reference to executable code, or a piece of executable code, that is passed as an argument to other code. This allows a lower-level software layer to call a subroutine defined in a higher-level layer....

 on closures
Closure (computer science)
In computer science, a closure is a function together with a referencing environment for the non-local variables of that function. A closure allows a function to access variables outside its typical scope. Such a function is said to be "closed over" its free variables...

 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 (CSS). Seaside's combination of components, callbacks, and closures can significantly reduce the semantic gap between a complex workflow and its representation in code.

Seaside supports Ajax
Ajax (programming)
Ajax is a group of interrelated web development methods used on the client-side to create asynchronous web applications...

 through the officially supported script.aculo.us
Script.aculo.us
script.aculo.us is a JavaScript library built on the Prototype JavaScript Framework, providing dynamic visual effects and user interface elements via the Document Object Model ....

 and jQuery
JQuery
jQuery is a cross-browser JavaScript library designed to simplify the client-side scripting of HTML. It was released in January 2006 at BarCamp NYC by John Resig...

 integration. It also supports Comet
Comet (programming)
Comet is a web application model in which a long-held HTTP request allows a web server to push data to a browser, without the browser explicitly requesting it. Comet is an umbrella term, encompassing multiple techniques for achieving this interaction. All these methods rely on features included by...

 style server-push technology.

Philosophy

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, indeed 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 the development of web applications.

Ports

Although the main development of Seaside happens in Pharo
Pharo
Pharo is a fork of Squeak, an implementation of the object-oriented, dynamically typed, reflective programming language Smalltalk.Appearing in 2008, Pharo focuses on removing unessential code from Squeak and serves as the reference implementation of Seaside, a web application framework for...

, there exist ports for other Smalltalk dialects.
Michel Bany did regular ports to VisualWorks
VisualWorks
VisualWorks is a cross-platform implementation of the Smalltalk language. It is implemented as a development system based on "images", which are dynamic collections of software objects, each contained in a system image....

 through Seaside version 2.7; Cincom
Cincom
Cincom Systems is a privately held, multinational, computer technology corporation founded in 1968 by Tom Nies, Tom Richley and Claude Bogardus....

 is supporting Seaside as part of VisualWorks
VisualWorks
VisualWorks is a cross-platform implementation of the Smalltalk language. It is implemented as a development system based on "images", which are dynamic collections of software objects, each contained in a system image....

 as of early 2008. Instantiations has announced Seaside support in its VA Smalltalk version 8.0. As of February 2009 VA Smalltalk 8.0 is in beta.
Esteban Maringolo maintains the 2.8 port, plus some other add-ons (such as script.aculo.us
Script.aculo.us
script.aculo.us is a JavaScript library built on the Prototype JavaScript Framework, providing dynamic visual effects and user interface elements via the Document Object Model ....

) for Dolphin Smalltalk X6..
Gemstone Systems is working on a port to Gemstone/S
Gemstone Database Management System
GemStone is a proprietary application framework that was first available for Smalltalk as an object database.GemStone Systems was founded in 1982 as Servio Logic, and then became GemStone Systems, Inc in 1995. GemStone developed its first prototype in 1982, and shipped its first product in 1986. ...

 .
A port of 2.8 has been completed on GemStone, and preliminary version of 3.0 runs on GNU Smalltalk
GNU Smalltalk
GNU Smalltalk is an implementation of the Smalltalk programming language by the GNU Project.The implementation, unlike other Smalltalk environments, uses text files for program input and interprets the contents as Smalltalk code...

 3.0a and later.

Criticisms

  • Compared to other web development frameworks
    Web application framework
    A web application framework is a software framework that is designed to support the development of dynamic websites, web applications and web services. The framework aims to alleviate the overhead associated with common activities performed in Web development...

    , unspecified old version of Seaside is memory intensive. A single session
    Session management
    In human-computer interaction, session management is the process of keeping track of a user's activity across sessions of interaction with the computer system....

     could accumulate several hundred kilobytes of RAM. A later release of Seaside (2.8) significantly reduces this footprint (e.g. a formerly typical 200 KB footprint becomes 50 KB) Interesting discussion in http://forum.world.st/Seaside-memory-consumption-td97508.html.
  • Seaside does not follow Representational State Transfer
    Representational State Transfer
    Representational state transfer is a style of software architecture for distributed hypermedia systems such as the World Wide Web. The term representational state transfer was introduced and defined in 2000 by Roy Fielding in his doctoral dissertation...

     (REST) by default. Instead Uniform Resource Locator
    Uniform Resource Locator
    In computing, a uniform resource locator or universal resource locator is a specific character string that constitutes a reference to an Internet resource....

    s (URLs) hold session key information, and meaningful URLs must be generated explicitly.

Open-source projects using it

  • Magritte - a meta-description framework with a tight integration into Seaside
  • Pier
    Pier (software)
    Pier is a free and open source content management system written in Smalltalk using the Seaside web application framework.Pier is written with objects from top to bottom. Pier is based on Magritte, a meta-description framework...

     - a content management system
    Content management system
    A content management system is a system providing a collection of procedures used to manage work flow in a collaborative environment. These procedures can be manual or computer-based...

     and high level application framework for Seaside
  • ADK Project(http://adk.sourceforge.net generates 404)

Proprietary projects using it

  • Dabble DB
    Dabble DB
    Dabble DB is a web application written using the Seaside web framework which allows users to create database applications using a web browser. A Dabble DB application can import data and export data in a variety of formats. Unlike most traditional relational database systems, it uses a...

     - web-based database application
  • Cmsbox - a Seaside-powered CMS
    Content management system
    A content management system is a system providing a collection of procedures used to manage work flow in a collaborative environment. These procedures can be manual or computer-based...

     which has been made available by netstyle.ch for the Swiss marketplace.

See also

  • List of web application frameworks
  • Content management framework
    Content management framework
    A content management framework is an application programming interface for creating a customized content management system . The relationship between a CMF and a CMS can be illustrated by the following analogy:...

  • Comparison of web application frameworks
    Comparison of web application frameworks
    This is a comparison of notable web application frameworks.-Perl:-PHP:-Java:-Python:-Ruby:-CFML :-ASP.NET:-Other:-ASP.NET:-C++:-CFML:-Python:-Java:-PHP:-Ruby:-Others:...


External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK