Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask

P5EE ... get involved!

by rob_au (Abbot)
on Feb 03, 2002 at 05:32 UTC ( #143028=perlmeditation: print w/replies, xml ) Need Help??

Its now been roughly two to three months since the Perl 5 Enterprise Project was announced and following its reference in a node recently, I decided to check on the development to date - For those unaware of the goals of the P5EE project, they are described in depth at the project homepage. To do this, I checked out the latest CVS copy of the P5EE source tree and had a read through the core package modules developed to late.

I must say however, that I was quite put off early into this process, when I found the following in the core P5EEx::Blue::P5EE module:

# eliminate warnings about uninitialized values $SIG{__WARN__} = sub { warn @_ unless $_[0] =~ /Use of uninitialized v +alue/};

This line, trapping the __WARN__ signal and preventing the output of warnings where undefined variables are being used, seems in direct contrast the the concept of developing proven and complete code for the enterprise environment. Furthermore, the use of this code is mentioned in the P5EE perlstyle.pod, but gives no explanation for its use. eg.

Warnings and Strict All code must compile and run cleanly with "use strict" enabled and the perl "-w" (warnings) option on. If you must do something that -w or strict complains about, there are workarounds, but the chances that you really need to do it that way are remote. The one exception is the "Use of uninitialized variable" warnings. We have those disabled in, so by including "use P5EE" you are disabling that warning in your code, too, and you don't need to worry about them.

To my mind such errors represent poor initiation of code variables or failed trapping of return values from functions - Aspects of coding which should not be ignored, especially within a production environment.

Further to this, many of the modules in place within the P5EEx development tree are only placeholders at this stage, outlining what it is hoped that they will eventually perform, but with little in the way of firm code.

Please don't misinterpret this review as an attack on the P5EE project - I think this is an excellent direction for development and have subscribed to the mailing list to get up to date with the development. However at this point in time, this project is still quite embryonic and there are style and development issues which still need to be addressed. Perhaps, it can be said that the ulterior purpose behind this node, besides that stated to comment on P5EE progress, is to encourage other monks to contribute on this project - There is much which needs to be done and much that we can do to contribute.


perl -e 's&&[@.]/&&s&.com.&_&&&print'

Replies are listed 'Best First'.
Re (tilly) 1: P5EE ... get involved!
by tilly (Archbishop) on Feb 03, 2002 at 18:53 UTC
    I don't mean to rain on anyone's parade, but when this came up in chatter I had some thoughts that people thought should be put into a post.

    I read the previous announcement. I read this one. I looked at a couple of pages, and I decided not to be involved. I have more than a few reasons for this, this is just meant to give some of them.

      Extremely insightful and helpful post. I'd give you a half-dozen well-deserved ++'s, but alas, PM won't let me.

      As an aside, the email link's server is refusing connections.

Re: P5EE ... get involved!
by trs80 (Priest) on Feb 03, 2002 at 15:51 UTC
    A recent posting by Stephen to the P5EE mailing list had a current status list of his development tree P5Eex::Blue. Stephen has been a driving force in getting P5EE started and his posting should give an idea as to the layout of the project. It is not however set in stone and should be viewed as an attempt to consolidate, organize and create a consistent interface to dozens of existing CPAN modules along with new ones. P5EE has also set the minimum Perl version to 5.005_03 in realization that not systems can easily upgrade to the 5.6.x or beyond which will hopefully increase the available install base.

    P5EE is attempting to bring together the power of Perl under a more consistent and stable umbrella. Previous discussion on the P5EE mailing list lead us to the conclusion that Perl is not being pushed because there are too many ways to do things and this is confusing to developers that may not have fallen deeply in love with Perl. So in order to combat that P5EE hopes to combine numerous CPAN modules at a particular version number and only allow for adding newer versions once regression testing has been done. Consistency, easier interface, set release points and stricter code testing are just some the things I hope P5EE will provide the Perl community.

    P5EE will hopefully become somewhat of an easy to install addition to Perl that provides developers, administrators, etc. a stable set of Enterprise ready tools to interact with a plethora of current technologies.

    The list:

    ## File: $Id: TODO,v 1.2 2002/01/24 04:17:01 spadkins Exp $
    = TODO   (x=done, :=inprogress, o=notdone)
    Initial Working System
     x P5EE              Top level context/config factory methods, and utilities
     x Exceptions        Exception hierarchy for P5EE
     x Context           Encapsulates the runtime context and dispatches events
     x Context::CGI            - the CGI runtime context
     x Config            Finds serialized config info from some source
     x Config::File            - from a file
     x Serializer        Transforms text to perl structure and back
     x Serializer::Ini         - from .ini file format
     x Serializer::Properties  - from Java .properties format
     x Serializer::Storable    - from Perl Storable
     x Serializer::XMLSimple   - from XML using no validation
     x Reference         Base class implementing multi-level get and set
     x Service           Base class for any pluggable service, base on an
     : Repository        A service that reads and writes data to a persistent
     : Repository::DBI         - from a relational database via a DBI driver
     o Repository::File        - from flat text files
     o Session           Maintains session variables across events/requests
     o Session::HTMLHidden     - in an HTML hidden variable
     o Session::ApacheSessionX - using Apache::SessionX
     o Security          Provides authentication and authorization services
     o Security::Htpasswd      - authen/authz from .htpasswd and .htgroup files
     o Security::DBI           - authen/authz from tables in a DBI database
     o Security::Repository    - authen/authz from tables in a Repository
     o Widget            A persistent, stateful object, takes care of life cycle
     o Widget::Entity          - a business entity object, stored in a Repository
     o Widget::HTML            - a visual HTML object, stored in a Session
     o Template          Processor for HTML files, augmented w/ dynamic elements
     o Template::CGIFastTemplate - uses the CGI::FastTemplate processor
     o Template::TemplateToolkit - uses the Template::Toolkit processor
    Initial Versions of Advanced Features
     o LogChannel        Supports logging to file or external log systems
     o LogChannel::LogDispatch   - uses Log::Dispatch
     o Messaging         Support for asynchronous (and sync) message passing
     o Messaging::SOAP           - using SOAP (via e-mail)
     o Procedure         Support procedure calls (sync only) which may be remote
     o Procedure::SOAP           - using SOAP (via HTTP)
    Extending the System to Alternative Implementations
     o Context::ModPerl          - the mod_perl runtime context
     o Context::ModPerlRegistry  - the mod_perl Apache::Registry context
     o Context::SOAP             - the SOAP server context
     o Repository::BerkeleyDB    - from a transactioned Berkeley DB store
     o Repository::HTML          - from a formatted HTML page
     o Repository::SOAP          - from a remote repository
     o Context::Cmd              - the command-line runtime context
     o Context::Daemon           - a stand-alone daemon runtime context
     o Context::FCGI             - the Fast CGI runtime context
     o Context::Gtk              - the GTK runtime context (an X application)
     o Context::POE              - POE runtime context (event-dispatch daemon)
     o Context::PPerl            - PPerl runtime context
     o Context::WxPerl           - WxPerl runtime context (a Win32 application)
     o Serializer::XML           - from XML with validation
     o Serializer::RDF           - from XML/RDF with validation
     o Session::ApacheSession    - using Apache::Session
     o Repository::LDAP          - from an LDAP store
     o Security::DCE             - authen/authz from DCE
     o Security::Kerberos        - authen/authz from Kerberos
     o Security::LDAP            - authen/authz from LDAP
     o Security::Passwd          - authen/authz from /etc/passwd, /etc/group
     o Security::Radius          - authen/authz from Radius
     o Security::SMB             - authen/authz from SMB
     o Security::SSL             - authen/authz from SSL
     o Template::ASP             - uses the Apache::ASP processor
     o Template::AxKit           - uses the AxKit processor
     o Template::Embperl         - uses the Embperl processor
     o Template::HTMLTemplate    - uses the HTML::Template processor
     o Template::Mason           - uses the HTML::Mason processor
     o Template::TextTemplate    - uses the Text::Template processor
     o Widget::Curses            - a visual Curses object, stored in a session
     o Widget::Gtk               - a visual GTK object, stored in a session
     o Widget::Wxperl            - a visual WxPerl object, stored in a session
     o Widget::SOAP              - a business entity object, running remotely
     o LogChannel::NetDaemon     - uses logging in Net::Daemon
     o LogChannel::Tivoli        - interfaces to Tivoli
     o Messaging::Jabber         - uses Jabber
     o Messaging::Mail           - uses e-mail (Mail::Box)
     o Messaging::Spread         - uses the "Spread" library
     o Messaging::Stem           - uses the "Stem" library
     o Procedure::Local          - uses a local procedure call
     o Procedure::Messaging      - uses any available asynch messaging method
     o Procedure::PlRPC          - uses PlRPC
Re: P5EE ... get involved!
by coreolyn (Parson) on Feb 03, 2002 at 14:47 UTC

    I want to 2nd rob_au's call for involvement, by pointing out that p5ee (Stephen Adkins p5ee pages) represents removal of important obstacles to corporate adoption. It capitalizes on the education that J2EE has given IT managers and provides for a uniformity that overcomes many problems associated with a managers poor skillset pool.

    If your a monk frustrated with the lack of Perl job opportunities this is a project that could open new avenues for yourself and future monks

      While p5ee and j2ee both have two letter "E"s in them, there really isn't any similarity. when you use j2ee you get a significant amount of functionality for free and without any development cost. j2ee has full transaction support... distributed even. The j2ee automatic persistence model (CMP) is powerful and basically a walk in the park to use. When CMP isn't enough, it's just as trivial to create your own persistence model (BMP). I had hope p5ee would be this, but it seems to be heading in a different direction. I wish the p5ee project would take note of this. Otherwise, in the end, p5ee makes it into corporate use (thanks to unintelligent man agers perhaps) merely based on j2ee's good name.

        I'm still holding out that there will be a larger scope to the project than what these very early scope pages incorporate.

Re: P5EE ... get involved!
by gav^ (Curate) on Feb 03, 2002 at 07:07 UTC

    I had a quick look at this before and it seemed promising. Is there a list of the P5EE modules somewhere and what they do? It would be nice to find out what these cryptically named things like Black and Beige are :)


      The mailing list for P5EE can be subscribed to here. As for the documentation, well that too is fairly lacking at this point (excepting a few PODs) - I suspect that much of the discussion of development directions is taking place on the mailing list and so will be watching it over the next few weeks before posting to it.

      The different colours for code within the P5EEx development tree is intended for the separation of different development threads - Currently, there only seems to have been any real activity within the Blue and Orange thread.


      perl -e 's&&[@.]/&&s&.com.&_&&&print'

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlmeditation [id://143028]
Approved by root
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (5)
As of 2017-01-17 15:48 GMT
Find Nodes?
    Voting Booth?
    Do you watch meteor showers?

    Results (157 votes). Check out past polls.