Re: New module - (session/authentication) seeking a name

2004-05-16 Thread david nicol
On Sat, 2004-05-15 at 15:35, Lincoln A. Baxter wrote:
 And what does AIS stand for?  Or did I miss that.
 
 Lincoln

Authenticated Identity Service.  I started working on it
in response to press releases about Microsoft Passport, and
gave a presentation on my design at YAPC - St. Louis.  It has been
improving a lot in 2004 as I have written several systems that refer
to it and have tested it on boa as well as apache.




-- 
david nicol
this message was sent from a filtering e-mail address.
Until I add you to my friends list, to get by Big Emet
the cowboy doorman your reply must include a listed
magic phrase such as cat and buttered toast 



Re: Application framework namespaces

2004-05-16 Thread Lincoln A. Baxter
On Tue, 2004-05-11 at 14:29, Michael A Nachbaur wrote:
 I'm working on a web application that is almost 100% perl (the styling is 
 handled in XSL).  The entire application's test and installation procedure is 
 managed with a Makefile.PL, and the entire package is very CPAN-ish.  I 
 wanted to know if there was some place on CPAN that I can publish it so other 
 people can deploy my application if they choose?
 
 I'm using the namespace Nacho::AppName for my modules (Nacho being my IRC 
 nick), but if there was an App::Foo namespace that could be used, I'd be 
 willing to upload this to CPAN when I'm finished.
 
 Does anyone see having this sort of code in CPAN as being useful?

I have been work on this for several months... this makes time to say
something:  This email, made be realize that it might be worth getting
our ideas (on a top level namespace) on the table.

This is a long email.  It is long because I need to describe what we have
in order to setup some context for the discussion. 

We (I and a team off 4 other folks) have implemented -- over a period
of 3 years -- a commericial grade perl server suite which is providing
application integration services today for a number of customer 
facing applications at a major financial services company. 

Several of us are now doing a clean rewrite of this independent of our
employer) with the intention making it available on CPAN.  This is a
suite of object oriented modules which implements a Generic Application
Integration Framework or Platform.  (Here after referred to (in this
email) as Framwork.

Our Framework allows for the implementation of perl servers and scripts
that can manage file, socket, MQSeries, or even email or database based
interfaces in polymorphic way, and have standard error handling, logging,
event notification, and configuration.  This Framework will support the
following:

   - Easy Extensibility
   - Easy Configuration (internal and by various file formats)
  - YAML
  - Perl Hash Ref
  - XML
  - Dot notated hierarchy
  - ini file
   - Consistent easy to use Exception handling
   - Separable components usable in standalone scripts
   - Polymorphism between request interface types:
  - MQSeries
  - sockets
  - files
  - Databases
   - Multiple Message Formats 
  - request and response can be in different formats
  - XML (various flavors)
  - tag value
  - CSV
  - Fixed Format
   - Server templates
 - single client/multiple clients
 - singleton/forked/threaded
 - managed
   - Apache integration 
  - FastCGI
  - mod_perl
   - Cron harness
   - Object persistence/caching, maintaining client session state
   - Inter-process communication 
  - Unix domain sockets
  - fifo
  - file ipc
  - db ipc
  - semaphores
   - Clear Distinction between notification of events and logging
  - Polymorphic event notification between various monitoring systems: 
 - Openview
 - Syslog
 - Tivoli
 - BMC
  - Logging various loggers can be configured:
 - Log4Perl
 - stdout
 - file
   - Regression test environment for testing server specific functionality


In thinking about this repackaging we have done a review of the Modules
List and searched CPAN, looking for an appropriate TLNS into which our
suite/framework might fit.

We found many 'Server' packages buried in namespaces dedicated to specific
technologies, techniques, and environments.  Examples include:

   VoiceXML::Server
   NNML::Server
   Net::Server
   NetServer::Generic
   VBTK::Server
   SOAP::Transport::HTTP::Server
   RPC::XML::Server
   Apache::RPC::Server
   Net::SMTP::Server
   Net::SNPP::Server
   Net::TCP::Server
   etc...

Our Frame work is more generic than any of these, and does not fit in any of
these names spaces.  And then there is:

   POE
   Wombat
   POEST
   NetServer
   Event
   etc
   
Lets talk about POE.  With POE we have a suite of packages whose scope
and breath is not unlike what we have put together with GIP.

Infact when we started originially, we looked at POE.  At that point
we considered it not quite what we were looking for.  On reviewing it
again recently, we find it's now got GREAT documentation, an impressive
following, and much more maturity, but its still not suitable for some
of the things we have been doing.  For instance, core to the POE module
at least for implementing servers is the interfaces must support unix
select().  We needed MQSeries.

Our Framework can be used to solve many the same kinds of problems
that POE solves, but it is more generic in its use of interfaces.
POE services assume that request interfaces implement IP socket
semantics, supporting the use for the unix select() function.
Our Framework can be used to implement servers whose request interfaces
include propriety transports like MQSeries or Databases.  Infact, MQSeries
is what most of our current production servers use.  Our