Danny,

I agree a ton could be done to make mailets easier to develop.  I like 
the idea of an SDK as testing mailets is very challenging.  Maybe a 
test-kit might be nice... create a slew of messages, and provide a 
framework that tests a given mailet or matcher.  What I am intending to 
do to make mailet development easier was enhance classloading so you 
could have a /classes directory and load mailets from jars in the lib 
directory in the apps/james dir.  Then in theory support reloading 
without rebooting, and you have something approaching servlet containers.

As for the servlet-design thoughts, I think one of the biggest mistakes 
of the original servlet designers was believing they could design an API 
that could be used by multiple protocols.  I started using the first 
preview of this spec 5 years ago, and 5 years later, the servlet API 
still hasn't found a second protocol that it can handle.  Anyway, my 
point is I think newslets would be a great idea, but trying to make 
mailets able to handle both isn't really feasible.

I think the directions of Paul's email only underscore my point.  I 
think the mailet API could stand to use some additions, like providing 
what this mail server's local users and hostnames are, and otherwise 
remove dependencies to Avalon that we have in core mailets and matchers. 
  These kinds of additions to the API would tie mailets to an SMTP 
processing environment.

I kind of like the mail concept of ".war"... I'd suggest we call it 
"mar" (mail application archive), but with Avalon we've already got sar 
and bar, and do we really need another ?ar filetype. :)

Anyway, and to your final points... isn't the mailet API already 
separated from James code?  It's compiled to separate JARs.  The two 
(minor) changes I have on tap for the next version of the mailet API are 
adding attributes to Mail objects, and log-levels to the logging. 
Renaming matchers to interceptors certainly makes it sound more comp-sci 
like, and that might help people used to looking at APIs understand what 
we're doing.  Like I said above, we could stand to add other key 
concepts to the mailet context to support notions in SMTP processing.

I know there's been yet another discussion of tying matchers to mailets, 
but I still don't like the results.  First, most approaches tie us more 
to Avalon, which I'm against.  Second, most approaches also tie a single 
matcher to a single mailet.  Granted we've been unable to provide 
anything beyond this, I'm reluctant to have the API enforce this 
relationship because I think there are alternate ways to accomplish the 
integration betwen mailets and matchers without this tie.

There are my 2 cents for the night, sparked by drinking too much 
Mountain Dew during the NBA game.
-- 
Serge Knystautas
Loki Technologies - Unstoppable Websites
http://www.lokitech.com/

Danny Angus wrote:
> Paul wrote, (in re. Mailets..)
> 
> "Interestingly, this overlaps with some pattern/design issues.  I'll
> discuss them, but perhaps it is all pointless as you have a published
> API and you are supporting a user community. [snip] perhaps for Maillet2
> API."
> 
> 
> Its funny that you should mention this.. as you know I'm looking at
> developing a mailet sdk version of James, basically a mailet developer
> friendly distribution.
> 
> I've also got the idea in the back of my head that mailets should be
> servlets, not http servlets (obviously) but as the servlet API is designed
> to support any protocol I thought mailets could, and probably should, be
> built on the servlet API, and extended to include "newslet" functionality to
> allow identical handling of mail and news messages.
> 
> In addition I'd thought that we should do four other things which point
> towards a version 2 of the mailet API,
> a) rename matchers as "interceptors" because it is a better description of
> their role
> 
> b) build a standalone mailet container that developers can easily include in
> their own products (but I'm a complete no-hoper when it comes to
> classloaders) such that app developers could use it to process mail
> generated by their apps before it is sent, or mail delvered to their app by
> any means, particularly other than by built-in SMTP reception.
> This would support at least, dynamic re-configuration of processors and
> mailets, and when complete could be used to add mailet
> 
> c) use mail headers, or some other method which doesn't depend upon anything
> other than the mailet API, to allow the attachment of serialisable
> attributes to mails, after all thats what X- headers are for.
> 
> d) create a wholly encapsulated method of deploying mailet applications
> (a-la .war files), such that it would include its own mailet processor
> configuration(s) and the only config needed in James would be to specify an
> entry-point, using "to processor"
> 
> (slightly OT I also wondered if we should support ajp13 to allow other
> applications to insert mail into the spool, and to allow mail to request
> stuff from other ajp apps. but I've not looked at the ajp spec to see if its
> suitable for this role)
> 
> I don't expect I'll have time to do much of this, or any of it very fast,
> but I do believe we should ..
> 
> 1/ think about separating the mailet API from the James code
> 2/ discuss the shape of mailet API version 2
> 
> 
> d.


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to