[ 
https://issues.apache.org/jira/browse/JAMES-3259?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17140416#comment-17140416
 ] 

Ioan Eugen Stan commented on JAMES-3259:
----------------------------------------

Hi [~matthieu],

Thank you for opening this issue. 
I'm also for re-organizing the code so you have my support.

Since we are considering a lot of changes, can we defer this re-organization 
after we know about the gradle migration - to avoid havok ? 
Until then we can talk and discuss about the merits of each solution. 

I propose we organize the code more around products / business features / 
functionality (the agents described in 
https://en.wikipedia.org/wiki/Email_agent_(infrastructure) ). 

We can probably find better names, but these are the generic names for the 
final "products" that we can build from James components. 
Gradle with composite builds can take care of shared projects. 

```
    Mail user agent (MUA)[4][5][6]
    Mail submission agent (MSA)[7]
    Mail transfer agent (MTA)[8][9][10][11]
    Mail delivery agent (MDA)[8][12][13][14]
    Mail retrieval agent (MRA)[15][16]
```


> Reorganize source code
> ----------------------
>
>                 Key: JAMES-3259
>                 URL: https://issues.apache.org/jira/browse/JAMES-3259
>             Project: James Server
>          Issue Type: Improvement
>    Affects Versions: 3.5.0
>            Reporter: Matthieu Baechler
>            Priority: Major
>
> I want to suggest a new organization of the source-code (I won't handle every 
> concerns but some important ones I have about the current state).
> I would like the first level to be:
> {code}
> core (domain code)
> data (that we should rename)
> docs
> extensions (containing mdn and third-party for example)
> infrastructure (containing backends-common, event-sourcing, json, metrics)
> mailbox
> mailet
> products (containing server/container/cli 
> server/container/guice/cassandra-rabbitmq-guice)
> protocols
> server
> testing (containing mpt)
> {code}
> I'm not sure it's the best organization but:
> * it allows to see easily what james most important concepts are
> * put technical details into a common sub-tree
> * have products a top level thing instead of a hidden one
> * group what we think are extensions somewhere
> * put functional testing sources somewhere that is easy to find (because a 
> lot of people starts by reading functional tests)
> What do you think?



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
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