Mungo

Welcome to the Mungo project. This is an "anti-framework" to make programming web pages under mod_perl as accessible as php.

What is Mungo?

To understand what Mungo is, you must first understand the difference between mod_php and mod_perl. PHP is for serving PHP-enabled web pages, whereas mod_perl hooks into Apache and dictates the behavior of the server when different URIs are accessed. In short, mod_perl is much more powerful than mod_php, but mod_php is extremely simple and the barrier to entry is low.

Mungo aims to dramatically lower the barrier to entry when writing web pages with embedded perl code. There is a wonderful project called Apache::ASP that brings the object model of ASP to perl and makes it very simple to write perl-enabled web pages. Apache::ASP is grand, but some may have issues with (1) its GPL licensing and (2) its myriad of CPAN dependencies. Mungo tries to solve less than Apache::ASP by avoiding a lot of the complicated features and leaving those to the user to implement more appropriately for their application.

What Mungo does:

  • Allows perl to be embedded in web pages with <% %> tags.
  • Provides simplistic access to various aspects of the client request via a Mungo::Request object.
  • Provides simplistic manipulation of the response via a Mungo::Response object.
  • Handles query strings, post forms (urlencoded and multipart) as well as cookies.

What Mungo does not do:

  • Manages sessions (this may change in the future).
    • Most apps are multi-server/clustered now and are using:
      • a filesystem backing store for session data, which is just bad practice,
      • a database, but that (in its simplest form) is a bottleneck,
      • memcached, a good idea, but its purpose isn't perfectly matched for that,
      • a cookie, which is perfect (the world's largest distributed database), but sometimes data just doesn't fit.
  • XML/XSLT/etc. It's perl, do it yourself.

Implementation Goals

While Mungo is very simple and has a very small fetureset, the object APIs it does implement adhere closely to those present in Apache::ASP. So, assuming you are not using sessions or the XML features, you should find few obstacles in making your application run under Mungo (it could be as simple as setting PerlHandler Mungo in your httpd.conf file).

Download

License

Mungo is released under a new BSD license. See our license for details.