Thank you benoit for clarifying the goals you are reaching for, it's very
clear for me now
I agree with the goal, the plan and the first step :D

regards,
Jean


On Wed, Jun 9, 2021 at 7:15 AM btell...@apache.org <btell...@apache.org>
wrote:

> Hello Jean!
>
> On 08/06/2021 17:21, Jean Helou wrote:
> > Hi benoit !
> >
> > On my crusade to reorganize James code related to Guice apps (and
> >> promote their adoption), I come to the next item of the tick list (after
> >> ZIP packaging, JIB packaging to enable distribution).
> >>
> > These were great improvements
> >
> >
> >> I would like to make those application easier to find in the source
> tree.
> >>
> > and this one promises to be too !
> >
> >
> >> Here would be the principles I would like to enforce:
> >>  - All server applications should be collocated under the same directory
> >>  - Server application modules should be clearly separated from guice
> >> module declarations
> >>
> >> I do not intend to fully reorder James directories just now but rather
> >> take small steps in a globally consensual direction. As such I propose
> >> the following directory layout as a first step:
> >>
> > This first step would be nice and at least would make it easy to add a
> link
> > to all the provided james-server builds in the readme, The instructions
> for
> > running each provided build could then go in the readme of each build and
> > reduce the clutter in the primary readme, I'm all for it :D
> >
> > But if you have a `first step` then you must also have a goal, it would
> be
> > easier to assess the usefulness of the first step if we shared the vision
> > of the goal.
> The goal would be that the directory structure :
>  - reflects the project goals
>
>  - is honest toward the progress toward these goal
>
>  - allow easily understanding the project architecture
>
>  - and allow to easily find the project deliveries, tests, etc...
>
>  - [add your goals here]
>
> I am starting with this last one, likely the easiest and less
> controversial to start with.
>
> >
> > I am partly aware of the history of the project and that some of the top
> > level directories are projects which used to live in different
> repositories
> > and have been merged back. so james git is essentially a mono-repo and
> > that's fine
> >
> > According to the website (which seems to have lost part of its colorful
> > landing page by the way) the primary components are :
> > - Server
> +1
> > - Mailets
>
> +1, intended to be a generic API just like servlets are. Their use was
> intended outside of James. (source Dany Angus at ACEU 2019)
>
> This goal and its results could be re-assessed but I am not wishing to
> do this.
>
> > - Mailbox
>
> Regarding that one I do think mailbox do not make sense without a server
> to use it. I would be in favor to move it in the /server directory. A
> topic for another day.
>
> This module is tightly coupled with the protocols consuming it,
> underwent heavy changes during the JMAP implementations, and overall is
> a critical server component we need full control upon (eg performance).
>
> > - Protocols
> I do think protocols without a hard dependency on mailbox or server
> could be considered top level, but protocols like IMAP with a hard
> dependency on mailbox likely can't.
> > - MPT
> MPT is a weird thing. It mixes a set of tools along side with a test
> suite exercising other components. I think mpt/impl would deserve to be
> relocated.
>
> Maybe to /server/protocols/imap-tests /server/protocols/smtp-tests &
> /server/protocols/managesive-tests ?
>
> >
> > So I would expect these to be the top level directories in the project,
> > along with a couple supporting directories such as
> > - docs
> > - shared-libraries
> > maybe
> > - examples
> >
> > I included shared-libraries  because I assume a reason for some of the
> > directories being top level is that they are used by multiple top level
> > modules :
> > my *guess* would be
> > - json
> > - core
> > - metrics
> > - testing/base
> >
> > Others sound like they should be reintegrated in the server directory
> tree
> > (guesstimate again) :
> > - backends-common
> Project with this dependency would also need to be in the server
> directory tree.
>
> This match the move of mailbox into server.
> > - event-bus
> > - event-sourcing
> > - benchmarks
> > - dockerfiles
> With the exception that it now mostly contains project related docker
> (compilation environment, websites) thus it can stands at "top level" in
> my opinion.
> > - grafana-reporting
> - third-party
> >
> > I have not taken the time to do a proper dependency analysis, this is
> just
> > how I expect to find the dependencies so I may be wrong :D
> We pretty much agree.
> >
> > If this organization is close to what you have in mind then the first
> step
> > is indeed the best.
> >
> > However If the goal is to push server in the spotlight  then we should
> move
> > the apps directory to the top level and move mpt, mailets, mailbox,
> > protocols and mpt etc inside server
> >
> > Note that this doesn't prevent documenting them, nor publishing the
> > artifacts nor enforcing proper dependencies
> >
> > jean
> Benoit
>
>
> ---------------------------------------------------------------------
> 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