WOMP - Web Object Model for Perl

Related Sites

CPAN

Welcome to the WOMP Home Page

I have searched high and low for a true framework to assist in the development of web applications. I find lots of great pieces, but nothing to hold it together.  I search the free CGI script archives and find some nice scripts. But it seems like extending them is extremely difficult and integrating one script with another is next to impossible. This is because they have addressed the tough issues of web application development such as authentication, state management, and persistence in ways which are incompatible. Furthermore, there was little thought to entensibility of the module by other developers.

This has led me over the last two years to conceive of and begin development of WOMP (Web Object Model for Perl). I was about to submit a request for a spot on CPAN, when I read that it should probably be discussed in a public forum to see if there is any interest first.

What follows is my current vision for WOMP.

  • Any reactions?
  • Would anyone be interested in using this if it were developed?
  • Would anyone be interested in helping develop this?
  • Is this reinventing the wheel?
  • Should I be looking at something someone else has done?
  • Should I be talking to someone you know so that we collaborate?

Stephen Adkins
spadkins@internetdynamics.com

P.S.  This message was posted on comp.lang.perl.modules on May 28, 1999 for comment.


WOMP

WOMP (Web Object Model for Perl) is a set of perl modules which facilitates the development of full-scale web applications, integrated in a unified web desktop.   WOMP is conceived to scale from an installation on a hobbyist's cgi-bin directory at his ISP to an enterprise computing platform.

It is under initial construction, prior to full release, so many of the features are conceptualized and not yet developed.

The core objects deal with all the really difficult parts of web application development:

  • authentication and security
  • persistence
  • session/thread state management
  • user interface management (windows, frames, tables, color schemes, user preferences, complex controls, integration of JavaScript and Java, browser compatibility)
  • multi-user synchronization and resource locking
  • change procedural to event-driven programming model
  • site localization (directory locations, development/test/production environments)
  • separation of presentation/application-logic/storage mechanisms

The core objects include just the most basic implementation of each abstraction so that WOMP delivers on its functional promise. Underneath, the well-planned abstractions, any number of implementations of derived classes may arise and be configured into an existing system.

Current Object Model

WOMP::Object           Parent class of all classes - handles caching/persistence
WOMP::MU::Lock         Base class for cooperative resource locks
WOMP::MU::FileLock     Implements WOMP::MU::Lock as a lockfile
WOMP::DB::BaseRep      Base class for repositories of data (key/value pairs)
WOMP::DB::FileRep      Implements WOMP::DB::BaseRep on a file system
WOMP::DB::DBIRep       Implements WOMP::DB::BaseRep on a DBI-based RDBMS
WOMP::DB::TiedHashRep  Implements WOMP::DB::BaseRep on a tied hash (i.e. DB_File)
WOMP::SEC::Session     Authentication info and session-wide state info
WOMP::SEC::Thread      Info for individual application thread of execution
WOMP::SEC::User        User information
WOMP::SEC::Group       Groups to which Users may belong
WOMP::SEC::Resource    Resources on which Users or Groups may have permissions
WOMP::UI::Base         Base class for user interfaces
WOMP::UI::Web          Implements WOMP::UI::Base for a browser (+ FastCGI support)
WOMP::UI::Tk           Implements WOMP::UI::Base for X-Windows
WOMP::UI::Cmd          Implements WOMP::UI::Base for the command line
WOMP::UI::Curses       Implements WOMP::UI::Base for a terminal screen

Copyright 1999, Internet Dynamics (USA) Corporation
All Rights Reserved