Seaside, an acronym that stands for “Squeak Enterprise Aubergines Server with Integrated Development Environment,” is computer
software
Software consists of computer programs that instruct the Execution (computing), execution of a computer. Software also includes design documents and specifications.
The history of software is closely tied to the development of digital comput ...
, a
web framework
A web framework (WF) or web application framework (WAF) is a software framework that is designed to support the development of web applications including web services, web resources, and web APIs. Web frameworks provide a standard way to build a ...
to develop
web application
A web application (or web app) is application software that is created with web technologies and runs via a web browser. Web applications emerged during the late 1990s and allowed for the server to dynamically build a response to the request, ...
s in the programming language
Smalltalk
Smalltalk is a purely object oriented programming language (OOP) that was originally created in the 1970s for educational use, specifically for constructionist learning, but later found use in business. It was created at Xerox PARC by Learni ...
. It is distributed as
free and open-source software
Free and open-source software (FOSS) is software available under a license that grants users the right to use, modify, and distribute the software modified or not to everyone free of charge. FOSS is an inclusive umbrella term encompassing free ...
under an
MIT License
The MIT License is a permissive software license originating at the Massachusetts Institute of Technology (MIT) in the late 1980s. As a permissive license, it puts very few restrictions on reuse and therefore has high license compatibility.
Unl ...
.
Seaside provides a component architecture in which
web page
A web page (or webpage) is a World Wide Web, Web document that is accessed in a web browser. A website typically consists of many web pages hyperlink, linked together under a common domain name. The term "web page" is therefore a metaphor of pap ...
s are built as
trees of individual,
stateful components, each encapsulating a small part of a page. Seaside uses
continuation
In computer science, a continuation is an abstract representation of the control state of a computer program. A continuation implements ( reifies) the program control state, i.e. the continuation is a data structure that represents the computat ...
s to model multiple independent flows between different components. Thus, it is a continuation-based web framework based on the ability to manipulate the execution stack of some implementations of
Smalltalk
Smalltalk is a purely object oriented programming language (OOP) that was originally created in the 1970s for educational use, specifically for constructionist learning, but later found use in business. It was created at Xerox PARC by Learni ...
.
Key features
Although subsequent improvement of state handling in web browser
JavaScript
JavaScript (), often abbreviated as JS, is a programming language and core technology of the World Wide Web, alongside HTML and CSS. Ninety-nine percent of websites use JavaScript on the client side for webpage behavior.
Web browsers have ...
engines have meant this aspect is less important today, Seaside's method of handling of browser state (via
continuation
In computer science, a continuation is an abstract representation of the control state of a computer program. A continuation implements ( reifies) the program control state, i.e. the continuation is a data structure that represents the computat ...
s) was an initial point of interest in the first years following its 2002 release. This mechanism provides for rollback and resumption, resolving many common issues then occurring with running web applications, adequately sustaining the state on the server-side even when the web browser's 'back' and 'forward' or 'refresh' buttons are used. Continuation based servers give the developer the ability to maintain state on the server in a scalable manner.
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
An integrated development environment (IDE) is a Application software, software application that provides comprehensive facilities for software development. An IDE normally consists of at least a source-code editor, build automation tools, an ...
(IDE).
A Seaside application is a set of interacting components. Each one stores state across page views and can ''render'' itself to the
HTML
Hypertext Markup Language (HTML) is the standard markup language for documents designed to be displayed in a web browser. It defines the content and structure of web content. It is often assisted by technologies such as Cascading Style Sheets ( ...
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
A pier is a raised structure that rises above a body of water and usually juts out from its shore, typically supported by piling, piles or column, pillars, and provides above-water access to offshore areas. Frequent pier uses include fishing, b ...
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)). 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 may refer to:
Greek mythology and tragedy
* Ajax the Great, a Greek mythological hero, son of King Telamon and Periboea
* Ajax the Lesser, a Greek mythological hero, son of Oileus, the king of Locris
* Ajax (play), ''Ajax'' (play), by the an ...
through integration with
script.aculo.us and
jQuery. Seaside also supports
Comet
A comet is an icy, small Solar System body that warms and begins to release gases when passing close to the Sun, a process called outgassing. This produces an extended, gravitationally unbound atmosphere or Coma (cometary), coma surrounding ...
-style server-push technology.
Seaside can work with either Smalltalk-based web server implementations or other non-Smalltalk ones (Nginx, Apache).
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. Avi Bryant, then of Dabble DB, in 2006 described it as a 'heretical' framework, arguing that this careful and reasoned rejection of the conventional wisdoms of web development led to a very effective model for developing web applications.
Ports
The main development of Seaside is implemented in
Pharo Smalltalk. Ports for other Smalltalk dialects exist.
The original development of Seaside was done on
Squeak
Squeak is an object-oriented, class-based, and reflective programming language. It was derived from Smalltalk-80 by a group that included some of Smalltalk-80's original developers, initially at Apple Computer, then at Walt Disney Imaginee ...
in the early 2000s.
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 VAST (VA Smalltalk) Platform version 8.0 in 2009. The VAST Platform has continued to support Seaside through its latest version.
Esteban Maringolo maintained the 2.8 port, plus some other add-ons (such as
script.aculo.us) for
Dolphin Smalltalk X6.
Gemstone Systems implemented a port to
Gemstone/S.
A port of 2.8 was completed for GemStone, and a preliminary version of 3.0 runs on
GNU Smalltalk 3.0a and later.
The web server package in the standard library of
Racket (Programming language)
Racket is a General-purpose programming language, general-purpose, multi-paradigm programming language. The Racket language is a modern dialect of Lisp (programming language), Lisp and a descendant of Scheme (programming language), Scheme. It is ...
uses a very similar philosophy, also based on continuations.
Criticisms
* Compared to other
web framework
A web framework (WF) or web application framework (WAF) is a software framework that is designed to support the development of web applications including web services, web resources, and web APIs. Web frameworks provide a standard way to build a ...
s, Seaside is memory intensive. One
session could accumulate several hundred kilobytes of RAM. A later release, version 2.8, significantly reduces this size (e.g., a formerly typical 200 KB size becomes 50 KB).
* Seaside does not follow
representational state transfer
REST (Representational State Transfer) is a software architectural style that was created to describe the design and guide the development of the architecture for the World Wide Web. REST defines a set of constraints for how the architecture of ...
(REST) by default. Instead,
Uniform Resource Locator
A uniform resource locator (URL), colloquially known as an address on the World Wide Web, Web, is a reference to a web resource, resource that specifies its location on a computer network and a mechanism for retrieving it. A URL is a specific t ...
s (URLs) hold session key information, and meaningful URLs must be generated explicitly.
Open-source projects using it
Many open-source projects use Seaside, some of which are:
* Magritte – a meta-description framework with a tight integration into Seaside
* Pier – a
content management system
A content management system (CMS) is computer software used to manage the creation and modification of digital content ( content management).''Managing Enterprise Content: A Unified Content Strategy''. Ann Rockley, Pamela Kostur, Steve Manning. New ...
and high level application framework for Seaside
* ADK Project
Proprietary projects using it
Many proprietary projects use Seaside, some of which are:
* Dabble DB – web-based database application
Jon Udell article in InfoWorld
* Cmsbox – a content management system
A content management system (CMS) is computer software used to manage the creation and modification of digital content ( content management).''Managing Enterprise Content: A Unified Content Strategy''. Ann Rockley, Pamela Kostur, Steve Manning. New ...
(CMS) made available by netstyle.ch for the Swiss market.
See also
* Solution stack
In computing, a solution stack or software stack is a set of software subsystems or components needed to create a complete platform such that no additional software is needed to support applications. Applications are said to "run on" or "run on ...
, GLASS
* List of content management systems
* Comparison of web frameworks
References
External links
*
*
*
{{Web frameworks
Smalltalk programming language family
Web frameworks
Software using the MIT license