Hi David,

Thank you for keeping up with that topic.

We somehow already analyzed that topic in the past and this is what we came
to :

1. James is a mail server that can integrate your business logic
2. James is a mail framework : you can build you application and specific
needs into James
3. James is a set of libraries: you can take parts of James and build
something that is not a mail server with it

So to answer to what you propose, I really think we did a mistake at trying
to do these 3 things. Everytime I open a web page that say very general
things about a software that try to do too much, I just go away.

It think James should be promoted as a flexible Mail Server. Other usages
will emerge if we reach that goal.

It's why I prefer "Mail Server".

Another point is "Enterprise": I think that any "Enterprise" software is
suspicious at best. Free Software should empower anybody. So I would
propose to drop that word.

Finally, I think that Java is not a selling point any longer, the JVM is.
So I would rather propose "JVM Mail Server".

Coming back to the documentation: James is pointless without (at least)
Mailets. I would focus the documentation mainly on the Mail Server target
and would promote customization as a top-level concept of it.

My 2 cents

Cheers,

-- 
Matthieu


On Fri, May 22, 2020 at 11:16 PM David Leangen <apa...@leangen.net> wrote:

>
> Hi!
>
> Based on things that Benoit has been explaining to me (in threads such as
> [1], [2]), I have been thinking about the top-level description of James.
>
> [1] https://www.mail-archive.com/server-dev@james.apache.org/msg65858.html
> <https://www.mail-archive.com/server-dev@james.apache.org/msg65858.html>
> [2] https://www.mail-archive.com/server-dev@james.apache.org/msg65814.html
> <https://www.mail-archive.com/server-dev@james.apache.org/msg65814.html>
>
> Currently, James is said to mean “JAva Mail Enterprise Server”.
>
> However, it seems to me that it ought to be “JAva Mail Enterprise
> Solution”.
>
> It has been mentioned a few times recently that James is “like a toolkit”.
> If an enterprise has a “problem” they wish to solve with regards to emails,
> they could use James as a “solution” to that problem in one of 3 ways:
>
>  1. Out-of-the-box
>  2. Assembled
>  3. Customized
>
> Out-of-the-box
> ---------------------------
>
> The first way of using James is by using a pre-assembled, generic
> “solution” (or “product” — will bring this topic up again in thread [3]).
>
> As already discussed ([4]), there are currently 3 ready-made products:
>
> * James Distributed Mail Server
> * James Advanced Mail Server
> * James Basic Mail Server
>
> [3] https://www.mail-archive.com/server-dev@james.apache.org/msg65720.html
> <https://www.mail-archive.com/server-dev@james.apache.org/msg65720.html>
> [4] https://www.mail-archive.com/server-dev@james.apache.org/msg65653.html
> <https://www.mail-archive.com/server-dev@james.apache.org/msg65653.html>
>
> These were just assembled by the James team as described below as a
> convenience for those who want a “common” solution for emails. These common
> solutions probably match a large majority of cases. (Just guessing. I have
> no data whatsoever.)
>
> Other than a serious lack of documentation, this way of using James is
> quite stable and works well. If the documentation were improved, then it is
> possible that adoption of James could potentially grow by those who require
> a “common” enterprise solution for emails.
>
> It is possible to start out with a Basic Server, then migrate as necessary
> to an Advanced, then eventually a Distributed Server. (Would be good to
> make the migration path clear, maybe?)
>
> Additionally, as the needs of a user of an out-of-the-box solution evolve,
> they could eventually grow into an assembled solution.
>
> All this means that by choosing James, one can start small, and scale as
> required (both up and down).
>
>
> Assembled
> ---------------------------
>
> If an out-of-the-box product is not sufficient, then a more appropriate
> solution to one’s current needs can be assembled using the “Java Mail
> Enterprise Solution”.
>
> James provides a number of components that can be assembled into a
> product. Given the number of components and their implementations, there is
> a large number of possible combinations, so a large number of potential
> products that could be assembled without any need for customization.
>
> However, although this is the goal, currently not all components are
> well-formed, and it is not evident how to do this type of assembly. It is a
> long-term objective of the James Project to provide a “toolkit” that makes
> this type of assembly easy.
>
>
> Customized
> ---------------------------
>
> If an assembled solution is still not enough, James provides numerous
> customization points.
>
> The main mechanism (but not the only one) by which the server can be
> customized is the Mailet.
>
>
>
> In addition to these 3 ways of building a James-based product, James
> provides a comprehensive API that allows fine-grained management of all
> aspects of the system. Thanks to the API and the Mailet technology, James
> provides a high level of integration with other systems or applications.
>
> (By the way, I think the API and the Mailets are incredibly powerful.
> These are what attracted me to James in the first place. If more people
> understood how these could be used to provide useful solutions to problems,
> perhaps that could also help with adoption. Is there any list about how
> people are using these to solve their problems?)
>
>
>
> Does this sound about right? This “type of solution” approach moves away
> from the current documentation, which separates more by “type of user”.
>
> Currently, the doc is structured like this:
>
> * User Manual
> * Operator Manual
> * Administration Guid
> * Developer Resources
>
> If we make the change I describe in this email, it would change to
> something more like:
>
> * James Concepts
>    —> Describes the core domain concepts
> * James Server Products
>    —> Describes the out-of-the-box pre-assembled server products
> * James Toolkit
>    —> Describes how to assemble a product with the James "toolkit"
> * James Customization
>    —> Describes how to use Mailet (and whatever else) to customize
> behaviour
>
> I wonder… with a system like Antora, perhaps an assembled James product
> should also include an assembled user manual. So each of the ready-made
> servers would include its own user manual appropriate for that assembly.
> For that to work, each component has to be very well defined and documented.
>
>
> Does this go in the right direction?
>
>
> Cheers,
> =David
>
>
>
>
>

Reply via email to