View on
MetaCPAN is shutting down
For details read Perl NOC. After June 25th this page will redirect to
Brent Royal-Gordon > WWW-Kontent-0.02 > WWW::Kontent


Annotate this POD

View/Report Bugs


WWW::Kontent - Highly extensible Perl 6 CMS


Kontent is a web content management system written in Perl 6. It is currently executable in Pugs installations with Parrot available; the storage subsystem included in this installation also requires the Perl 5 interop feature, but an alternate system could be written.

Kontent's basic principle is separation of concerns: whenever possible, the system is separated into swappable components. The webmaster chooses a "supervisor" to interface with their web server and a "store" to hold all pages in the system; individual pages have different "classes" implementing different behaviors; and each page can be displayed with any of several "renderers".

Kontent is simple enough to need only a small amount of configuration, and flexible enough to meet the needs of almost any site. It takes care of the niggling details of web design--tasks like revision control, site templating, and user contributions--leaving only the task of plugging in your own content.


Currently only the CGI supervisor is written, and the only useful store is NarrowDBI. This somewhat simplifies the task of configuring Kontent.

Configuring Kontent takes four steps:

Some day there should be a set of CGI scripts to automate all of this.

About the Module

WWW::Kontent first loads several core Kontent modules, including WWW::Kontent::Foundation, WWW::Kontent::Exceptions, WWW::Kontent::Request, and WWW::Kontent::Skeleton. It then reads Kontent's configuration file, kontent-config.yaml, from the same directory the supervisor is in. It loads all the modules specified in the modules configuration group, then curries the specified store's make_root and get_root functions to receive the store configuration, storing the resulting functions in WWW::Kontent::make_root and WWW::Kontent::get_root.

It also contains two functions, register_class and register_renderer, and the corresponding hashes %classes and %renderers. These are used to register and locate classes and renderers, respectively. Both functions take a string containing the class or renderer's name (like 'kiki') and the class that name refers to.


Plenty, no doubt; this is an early alpha of an incomplete system written in an experimental language with a constantly-changing interpreter. In particular, be on the lookout for intermittent bugs in Perl 5 interop; these usually manifest as an inability to find DBI methods like execute or fetchrow_arrayref.

Basically, you'd be nuts to try to use this for real right now.


A special thanks to Google and The Perl Foundation for funding and managing this project, and to the Perl 6, Pugs and Parrot teams for their work on the software that made it possible.


This module and all modules and scripts distributed with it are copyright (C) 2005 Brent Royal-Gordon.

This distribution is free software, and may be used, modified and distributed under the same terms as the official Perl 6 distribution if they have been decided, or Perl 5 otherwise.

syntax highlighting: