![]() |
P5EE - Perl 5 Enterprise Environment |
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.
Variants
Each P5EE Variant is supported by a P5EE Group, who are documenting, developing, and supporting the Variant.
The following P5EE Variants exist.
| 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. |
P5EE/App-Context |
| 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 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 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 |
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