Hello David,

This picture is 100% about project structure, and presents James
sub-projects.

It do not describe the actual "James Server" architecture.

Behind that images lies the concept that the JAMES project is not just
about building mail servers but providing tools to the java mail eco-system.

Thus:
 - Mailbox aims at offering an API for mail storage
 - Mailets APIs for mail processing
 - Protocols offers transport agnostic mail protocol applicative logic
 - Server wraps that up to offer a running mail server.
 - MPT offers utility for testing mail application and is likely used
just by James.

Many of the above mentionned objectives might actually need to be
re-challenged.

Are mailets used outside of James? Is the mailbox used outside of James?
etc...

For instance today directory structure is flat, but I wonder if they
deserve to exist as a sub-project at all. Maybe moving it as sub-parts
of the server would make sense:

/server
 \_____ mailbox
 \_____ mailet
 \_____ queue
 \_____ protocols
....

Moving in that direction actually started with the fusion of
repositories of MAILBOX, MAILET, SERVER, PROTOCOLS, MPT (2016 if I'm not
wrong). We kept libraries ( MIME4J, JSIEVE, JSPF, JDKIM) on separate
reposiotries. I think that's what the "Central project circle" outlines,
as well as the linked projects/core projects.

Link aims at showing dependency between projects: server code can depend
on mailbox code, but not the reverse. And there's likely some violations
of this concept in the code (server-util being used in mailbox is an
example).

I don't really understand the "layer" part of the picture.

Did I made it clearer?

Regards,

Benoit

On 04/06/2020 12:26, David Leangen wrote:
> 
> Hello!
> 
> I have a question about this image:
> 
>    https://james.apache.org/images/james-schema-subprojects.png
> 
> 
> At first glance, I have a good impression of this image. However, when I 
> think more deeply, I get the impression that it is conflating two different 
> concepts:
> 
>  * System architecture
>  * Project structure
> 
> When I get this idea into my head, then I am no longer sure about what the 
> image is trying to express and I get a confused.
> 
> Does it express how the projects are related? If so, then what are all the 
> lines and circles for? What is the difference between a “core” project, a 
> “linked” project, and a “dependency” project? Why should I care about the 
> relationship between the projects?
> 
> Or is it trying to relate to how the architecture is chopped up into 
> different projects? Does this have any relation to components? What is this 
> trying to tell me if it’s not about the concept or the architecture? It’s not 
> like I need to administer the different projects and need to know the 
> structure.
> 
> 
> Those are just some of the thoughts that come to me. So many other questions 
> also pop into my (overly active) mind.
> 
> 
> Thoughts?
> 
> Cheers,
> =David
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
> For additional commands, e-mail: server-dev-h...@james.apache.org
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to