[
https://issues.apache.org/jira/browse/JAMES-1362?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13183172#comment-13183172
]
Stefano Bagnara commented on JAMES-1362:
----------------------------------------
Call me "limited"/"rigid" but I am against any grouping with circular/twisted
dependencies.
Even ignoring the dependency issue I don't find it "useful", e.g:
- I can't imagine anyone using only the dns group outside james
- mailetcontainer and mailets have nothing to do each other. mailets contains
very james specific classes, instead mailetcontainer is a more generic library.
- If we identify functional some group that "makes sense" then we should try to
remove dependencies from other groups and move them to separate products (like
protocols, mailbox, jspf, etc). So after you extract the "generic library" a
group like "queue" would only contain 3-4 adapter classes. So the grouping
doesn't correctly react to refactoring.
- Now that we extracted imap/protocols/mailets, james-server (escluding tests)
is 2.4MB of java sources, less than 400 files. IMO it is not "so big" to
require more organization (so I would embrace grouping only if I see a lot of
value in it). You referenced Hadoop in another thread: hadoop has 4 base java
modules and each one big as the whole james-server (core, mapred, hdfs, contrib
modules are between 2 and 3MB java sources each one).
- I think our api modules are not "well-thought" (I'm guilt for this, too) but
instead they are the results of fast dependency analysis and code refactorings
(e.g: filesystem api is 1 class, lifecycle 4 class, dns-api 3 classes,
queue-api 5 classes, mailetcontainer-api 7 classes). So I expect api modules to
change, to see some merge between them and maybe some completely different
aggregation on the api layer. This grouping would make a similar refactoring an
harder task. At the current state I would prefer to have a single api module
(we already have packages to separate concerns and most modules depends on more
than half of that api modules).
- IMO James-server needs some more care/organization on the java architecture
before we organize *current* java files even more than we already did.
That said I'm not active on the code, so I just wanted to give explanations on
my thoughts and now I will better leave the decision to active committers (if I
find some time I will try to create an updated dependency graph of the current
modules as what I wrote is based on what we had in trunk 1 year ago and I may
have missed some major changes).
For easier historical navigation I add a link to an older issue:
https://issues.apache.org/jira/browse/JAMES-1184?focusedCommentId=12983893&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-12983893
> Nest server modules
> -------------------
>
> Key: JAMES-1362
> URL: https://issues.apache.org/jira/browse/JAMES-1362
> Project: JAMES Server
> Issue Type: Improvement
> Components: Build System
> Affects Versions: Trunk
> Reporter: Eric Charles
>
> Group server module by function based on proposal found on
> https://issues.apache.org/jira/browse/JAMES-1184?focusedCommentId=12983893&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-12983893
> I will publish here the resulting nesting before committing.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]