P5EE - Perl 5 Enterprise Environment

P5EE - Perl 5 Enterprise Environment

Web P5EE
Mailing List perl.org
Project: [ Project Status | FAQ | CVSWeb | CVS Activity | Download | Mailing List | Discussion Archive | Votes ]
P5EE: [ Official | Mission | Advocacy | Organization | Definitions | Components | Platforms | Applications ]
P5EE Variants: [ App-Context ]
P5EE Sub-Projects: [ App-Context | App-Repository | App-Widget | Devel-Metadata | Devel-Perldocs ]
Background: [ J2EE | J2EE Security ]


The mission of the P5EE project is to promote the development, deployment, and acceptance of Enterprise Systems written in Perl.


As a project in itself, the P5EE Project is completed (or possibly dormant). The conclusions are these: The rest of this website may be written as though the project is still active, but I rarely update it any more.
I recently answered a set of questions posed regarding Enterprise Software Development in Perl. I turned the answers into a FAQ.


The P5EE Project is a community of Perl professionals who understand the issues of Enterprise Development.
We are collaborating to achieve the Mission of promoting Perl as a language for development of Enterprise Systems.

In order to achieve the mission of the P5EE Project, an extended set of high-level architectural requirements are defined, stated as the Attributes of Enterprise Systems.
Developers with experience or ambition to develop Enterprise Systems in Perl are encouraged to describe their Software Architecture and support it as a P5EE Variant.

The P5EE (Perl 5 Enterprise Environment) is not a single "official" system, framework, or set of modules.
Rather, separate P5EE Variants exist, supported by their various groups of supporters within the P5EE community.
As these variants are better defined and developed, some variants may stand out from the others.
However, at this time, we are encouraging more experts to participate in defining additional variants rather than trying to choose a winner yet.
The P5EE project has recently refocused on this approach of competition among diverse solutions.


Each P5EE Variant is supported by a P5EE Group, who are documenting, developing, and supporting the Variant. The following P5EE Variants exist. Please note that a P5EE Variant is composed of the following.


The P5EE project has a CVS source code repository which is used to host the development of various sub-projects. These sub-projects are all instrumental to one or more of the P5EE Variants. Some of these projects might might be redundant or even contradictory to the modules that other P5EE Variants use.

Sub-Project Description Variants
App-Context App-Context defines a software backplane for a variety of interchangeable core services to plug into: configuration, session management, authentication, authorization, remote procedure calling, message passing, data caching and sharing, process synchronization. P5EE/App-Context
App-Repository App-Repository adds a Repository service to those already supported by App-Context. Simply, a Repository is an abstract way to access data stored in any of a number of forms including in a relational database. It provides a logical access layer which can be configured to map to the physical storage medium.
[Future Features]: It also adds multi-repository distributed transactions, fine-grained permissions management, remote repository access, repository replication.
App-Widget App-Widget adds a Widget service (user interface widgets) to the services already supported by App-Context. A Widget is SessionObject (defined in App-Context) which has a visible browser-viewable (i.e. HTML) form. Whole applications can be built simply by configuring the Widgets in the existing Widget library without writing a line of code. When you do write new Widgets or enhance existing ones, the Widget architecture maximizes flexibility and reuse. Widgets can be Repository-aware or they can be used independently from the App-Repository sub-project. Widgets can incorporate templates driven by a variety of TemplateEngines to alter the screen layout. They also facilitate internationalization using a label dictionary. P5EE/App-Context
Devel-Metadata Devel-Metadata is a module which is able to report on metadata about the Perl code which is installed on the system: Distributions, Module Groups, Modules, and Functions/Methods. It does this by scanning source code and specially-formatted comments. P5EE/App-Context
Devel-Perldocs Devel-Perldocs is a module which reads metadata from Devel-Metadata and creates highly cross-referenced code documentation similar to the output of javadoc. P5EE/App-Context

How to Get Involved

If you like the idea of an enterprise-quality platform for systems developed in Perl and want to get involved, try one of the following ways.


Perl Modules on CPAN are flexible, supporting many different system designs.
CPAN supports many redundant modules.
In fact, the slogan in Perl is "there's more than one way to do it" (TMTOWTDI).

Developing an Enterprise System is different.
It requires many consistent design choices.
It requires the successful integration of numerous perl modules.
The slogan in P5EE is "this is one great way to do it".

The fact is that there are many great ways to do it.
As a result, the P5EE project supports multiple P5EE Variants.
Multiple versions of "one great way to do Enterprise Development in Perl" are expressed through these Variants.
Whether or not we ever reach a single expression of "one great way to do it" remains to be seen and would be subject to the future, near-universal acceptance of one of the Variants.

(See also my original write-up.)

History, Background, Prior Discussions, Prior Work