HTML::Mason (generally referred to simply as Mason) is an open source Perl-based platform for creating, serving, and managing Web sites. Originally developed for CMP Media (a publisher of technology magazines), Mason was designed to overcome some of the limitations of the Web's common gateway interface (CGI), a mechanism that allows a user's Web page request to be passed to a program to select and process the Web page to return to the user. Mason establishes a system that makes it relatively easy to develop and manage large volumes of Web pages that encompass both shared and distinct template elements. Although it began as a supplemental set of improvements to the CGI model, Mason became more fully featured as developers adopted and improved it. In 1998, the first version of HTML::Mason was released under the Perl Artistic License.
Mason is structured around reusable components, which consist of HTML, Perl code, and Mason commands. An entire Web page is considered a top level component, and typically contains several smaller embedded components. This object-based architecture means that when a shared component is changed, that change is automatically reflected in dependent pages not only within the same site but also across any other sites sharing the component. The component approach also makes it possible for developers to separate a Web page's programming elements from its design, so that content managers -- who are not usually programmers -- can work on the design aspects of a page without having to deal with the more technically demanding aspects.
Other features of Mason include: the ability to cache components for reuse; easy template creation for applying common features to pages within a directory or hierarchy; and a previewing proxy utility that allows users to see their pages as they would be seen in various situations (such as a different browser, for example). Mason is optimized for use with the Apache Web server and mod_perl (an Apache plug-in used to embed the Perl interpreter -- also called perl, but spelled with a lower case "p" -- into the server to increase performance and flexibility). However, the program can also be used with CGI or as a standalone tool.
Vignette is a similar product.