Skip to content


Subversion checkout URL

You can clone with
Download ZIP
ABANDONED - an old web framework for Perl 6
Perl Shell Perl6
Fetching latest commit...
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
doc Updated to newest spec, moved to 'doc', removed custom Make…


ww6: Web Application Framework and CMS Library-set for Perl 6

Status: It works, but depending on features you use, can be pretty slow.
        The dynamic module loading can have some strange side effects if
        you are mixing pre-compiled libraries with plain .pm ones.
        I recommend compiling everything first, if you use 'panda' or one
        of the other Perl 6 package managers to install it, the compilation 
        will be done for you. That is highly recommended.

=== Story ===

In the beginning was Webtoo Websight, and it was good.
Based on the Perlite libraries it was, and they were good.

Both had reached a mighty version number of 5, but both had also
reached a point where a complete rewrite was in order.

It could have been done in Perl 5, as both were already written in
said language. It could have been done with magical tools such as
Moose, to make it stronger and easier to debug.

But then, the Great Architect said, "no."

And proceeded to rewrite the whole thing, in Perl 6.

This is the result.

=== Features ===

 * Supports Dispatch based configurations, where all URLs are matched
   and dispatched to the correct module.

 * Supports a custom website content management system, which looks for
   pages in a specific format, and parses them with plugins.

 * Supports web applications with dynamically dispatched controllers,
   similar to CodeIgniter from PHP.

 * Has a simple script 'ww6' to create new sites/apps with:
   $ ww6 --create webapp --dir new-app
   To get a list of available templates, type 'ww6 --list'.

 * The templates come with an example daemon.pl6 script (the default
   uses SCGI on port 8118) which is really simple to use:
   Then connect an SCGI mount to port 8118 to see your app.

=== Dependencies ===

 = Requirements =

- Rakudo Perl 6
  A version of Perl 6 for the Parrot Virtual Machine.

- The Hash::Has, HashConfig and WebRequest libraries
  Used by the core, these used to be in a single library collection
  called Perlite, but where separated out into their own projects.

- The SCGI library for Perl 6
  This library was written specifically because I was frustrated testing
  ww6 as a CGI script, where the performance was abysmal.
- The Exemel and Flower libraries
  Used by both the CMS libraries, and the Lighter web application library.

- The JSON::Tiny library
  Required by the HashConfig library, this is used for configuration
  files and Metadata (as well as a few other places in examples.)

- The Temporal Utils library collection
  Not used by the core, but it is used by a few of the
  CMS plugins (including Headers) and by Flower::Utils::Date which can be
  loaded by the Flower plugin (see the modifiers option in the Flower plugin.)

- If you want to run the SCGI process on a computer behind NAT,
  and have the publically accessible web server forward requests
  to it, you can look into the reverse proxy functionality of OpenSSH.
  The 'extra/' and 'extra/svc/example.cfg' files show how I had 
  it set up to run on my home computer, and forward to my VPS.

=== Future Plans ===

This project is still under construction, and does not include all of the
functionality from Webtoo Websight 5 yet.

See the docs/TODO.txt for specific details on future plans.

Author: Timothy M. Totten

Something went wrong with that request. Please try again.