Seaside (software)
   HOME

TheInfoList



OR:

Seaside, an acronym that stands for “Squeak Enterprise Aubergines Server with Integrated Development Environment,” is computer
software Software is a set of computer programs and associated software documentation, documentation and data (computing), data. This is in contrast to Computer hardware, hardware, from which the system is built and which actually performs the work. ...
, 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 and ...
to develop
web application A web application (or web app) is application software that is accessed using a web browser. Web applications are delivered on the World Wide Web to users with an active network connection. History In earlier computing models like client-serv ...
s in the programming language Smalltalk. It is distributed as free and open-source software under an
MIT License The MIT License is a permissive free software license originating at the Massachusetts Institute of Technology (MIT) in the late 1980s. As a permissive license, it puts only very limited restriction on reuse and has, therefore, high license comp ...
. Seaside provides a component architecture in which web pages are built as
trees In botany, a tree is a perennial plant with an elongated stem, or trunk, usually supporting branches and leaves. In some usages, the definition of a tree may be narrower, including only woody plants with secondary growth, plants that are u ...
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 computati ...
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.


Key features

Although subsequent improvement of state handling in web browser
JavaScript JavaScript (), often abbreviated as JS, is a programming language that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2022, 98% of websites use JavaScript on the client side for webpage behavior, of ...
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 computati ...
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 occuring 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 software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of at least a source code editor, build automation tools ...
(IDE). A Seaside application is a set of interacting components. Each one stores state across page views and can ''render'' itself to the
HTML The HyperText Markup Language or HTML is the standard markup language for documents designed to be displayed in a web browser. It can be assisted by technologies such as Cascading Style Sheets (CSS) and scripting languages such as JavaSc ...
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)). 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), by the ancient Gree ...
through integration with script.aculo.us and
jQuery jQuery is a JavaScript library designed to simplify HTML DOM tree traversal and manipulation, as well as event handling, CSS animation, and Ajax. It is free, open-source software using the permissive MIT License. As of Aug 2022, jQuery is u ...
. Seaside also supports
Comet A comet is an icy, small Solar System body that, when passing close to the Sun, warms and begins to release gases, a process that is called outgassing. This produces a visible atmosphere or coma, and sometimes also a tail. These phenomena ...
-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 Pharo is an open source, cross-platform implementation of the classic Smalltalk-80 programming language and runtime. It's based on the OpenSmalltalk virtual machine called Cog (VM), which evaluates a dynamic, reflective, and object-orient ...
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 Imagineering, ...
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 Dolphin Smalltalk, or "Dolphin" for short, is an implementation of the Smalltalk programming language for Microsoft Windows. The Dolphin 7 version release coincided with the project going open-source using the MIT License The MIT License is ...
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, multi-paradigm programming language and a multi-platform distribution that includes the Racket language, compiler, large standard library, IDE, development tools, and a set of additional languages including Typed R ...
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 and ...
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) by default. Instead,
Uniform Resource Locator A Uniform Resource Locator (URL), colloquially termed as a web address, is a reference to a web resource that specifies its location on a computer network and a mechanism for retrieving it. A URL is a specific type of Uniform Resource Identifi ...
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 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 applicationJon Udell article in InfoWorld
* Cmsbox – a content management system (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 t ...
, GLASS * Nagare (web framework) *
List of content management systems Content management systems (CMS) are used to organize and facilitate collaborative content creation. Many of them are built on top of separate content management frameworks. The list is limited to notable services. Open source software :''T ...
* Comparison of web frameworks


References


External links

* * * {{Web frameworks Smalltalk programming language family Web frameworks Software using the MIT license