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]
