You know I finally had some time to review current trunk and I fear we
have too many modules: we removed protocols, imap and mailets but
still we have 43 modules. 43!
Many modules counting less than 4 classes.

Here is a choice of current modules and the number of classes they contains:

- mail-file(3)
- mail-jcr(1)
- mail-jdbc(3)
- user-jpa(4)
- user-file(2)
- user-jcr(2)
- user-jdbc(4)
- domainlist-jpa(2)
- domainlist-xml(1)
I only see benefits and no drawbacks in consolidating the 9 modules
above to the following 4 modules:
  persistence-jpa(6) = user-jpa(4)+domainlist-jpa(2)
  persistence-file(6) = user-file(2)+mail-file(3)+domainlist-xml(1)
  persistence-jcr(3) = user-jcr(2)+mail-jcr(1)
  persistence-jdbc(7) = user-jdbc(4)+mail-jdbc(3)

- mail-library(1)
- domainlist-library(2)
- user-library(9)
We could consolidate them into a persistence-library module (from 3 to
1 module).
  persistence-library(12) =
mail-library(1)+domainlist-library(2)+user-library(9)

- queue-library(2)
- queue-jms(5)
We could merge queue-library to queue-jms (a library module makes
sense when we do something useful.. if it is trivial stuff it can be
duplicated or moved to the api layer).
  queue-jms(7) = queue-jms(5)+queue-library(2)

The 3 steps above would reduce the number of modules of 8.

The main advantages of using modules is being able to isolate
dependencies, so I consolidated modules sharing the same dependencies.
To understand what "module" is implemented by each persistence adaptor
one can easily look at the packages inside the module.

If people will one day contribute mail-jpa code or domainlist-jcr or
domainlist-jdbc we don't have to add 3 new modules but simply really
few new classes to their respective persistence functions. If we had
the 3 missing implementations we could bring this "consolidation" also
to the configuration side: while I see cases where mixed persistence
is used, in my opinion most users will simply stick to a single
persistence type for everthing. So it would be convenient to simply
let the user choose the persistence method (file, jdbc, jcr, jpa) and
then automatically choose the 3 right service implementations.

Stefano

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to