-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

OK, I'm just going to go through all the bad stuff I see in Blue, because 
that's what I'm good at. Sorry if that seems harsh.

Overall
=======

Overall I would say P5EEx::Blue's biggest problem is that it is entirely 
designed from the perspective of web development, and I think it suffers 
because of that. Generally it's great that this has got off the ground, but 
now a lot more work needs to be done - this isn't even ready to be 0.01 yet - 
if we released this to the world at large the J2EE community would laugh at 
us.

Config
======

 o get_branch should return a new Config object, not a hashref.
 o There is no reload() method.
 o There are no setters.

Context
=======

 o Context knows *way* too much about widgets. It shouldn't know anything at 
all about them. Put that stuff in a subclass if you have to.
 o There seems to be a lot of "convenience" methods in there. I think this is 
confusing right now.
 o There's both debugging and logging. Why separate the two? Why are they even 
in this class?

LogChannel
==========

 o There is only a single log level. This is fatal. See Log::Dispatch (and 
Log::Dispatch::Config) for a better design.

Messaging
=========

 o I don't know enough about messaging APIs to really comment on this. I get 
the feeling that the API is naive, but it's merely a gut feeling.

Procedure
=========

 o Do we need this class? I'm not convinced we do. It seems again like a naive 
design - I'd like to see what j2ee does in this space.

Repository
==========

 o This seems to be yet another DBI abstraction layer. It seems quite tied to 
the concept of relational databases (or at least - relational data). What are 
the rules for the $params option? If that's subclass dependant it seems kinda 
pointless.

Security
========

Seems unstarted, which is a shame as this is one of the nuts-and-bolts parts 
of an enterprise environment.

Serializer (ugh, american spelling ;-)
==========

 o We need a facility to serialize directly to a filehandle (even if it's 
implemented as a serialize to string and then writing to a file), and 
directly to callbacks.

Session
=======

 o html() method *must* die.
 o This seems like a place where p5ee could be really strong, but it's not. 
Sessions require facilities like timeouts, getters/setters, and a few more 
bits.

SharedDatastore
===============

 o "A SharedDatastore service represents a single hash in which scalars or 
deep references may be stored. (They are automatically serialized using 
Storable for storage.)" - Why are they not serialized using Serializer? Or is 
this a doc bug?
 o How do we define where the shared data is, what the limits are, and what 
timeouts exist?

SharedResourceSet
=================

 o Looks good. No complaints ;-)

TemplateEngine
==============

 o I'm not sure I like this, or even think it should be in p5ee. Templating 
often works extremely differently depending on the environment you're in, and 
the templating system in use. One of the biggest plusses for XSLT (for 
example) is that the result of an XSLT transformation is a new XML DOM tree, 
not a string, as you have it in your API. I'd say leave this out of p5ee.

Widgets
=======

Ah, the widgets...

I have a feeling that this is where you spent most of the development effort. 
I've spent a lot of time studying and trying different techniques of doing 
cross-environment widgets, and it just plain don't work. Right now all you 
have is Widget::HTML::*. When you get to trying to do Widget::Gtk, or 
supporting some of the Gtk features in HTML, and trying to be a transparent 
layer between Gtk and Tk, you'll see it just doesn't and can't work. These 
different layers are so fundamentally different that no layer over the top of 
them can just make them work.

While I think the Widgets stuff is an excellent separate project, I think it 
has no place in p5ee, unless everyone thinks that p5ee should be focussing on 
web development?

Docs
====

The docs are nice (albeit lacking detail). Good work on those.

Conclusions
===========

I hope I haven't been too harsh. All in all I'm +1 to make P5EEx::Blue the 
start of P5EE (bet you weren't expecting that!). The reason being that we 
need to start somewhere, and Stephen obviously has a lot of energy for this 
project where the rest of us don't. But I think it's going to need major 
surgery, and a serious effort from more than just Stephen (and no, that's not 
me volunteering ;-)

- -- 
<:->get a SMart net</:->
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.7 (GNU/Linux)

iD8DBQE84hg0VBc71ct6OywRAqg2AKDQjzoJD/oL5IaJZL4zeICS+2yypQCgiS6P
zckeIhTFnCylAzYR4eXaOcs=
=M0mf
-----END PGP SIGNATURE-----

Reply via email to