Kaifeng Huang created AMQ-7430:
----------------------------------

             Summary: Inconsistent library versions notice.
                 Key: AMQ-7430
                 URL: https://issues.apache.org/jira/browse/AMQ-7430
             Project: ActiveMQ
          Issue Type: Improvement
            Reporter: Kaifeng Huang
         Attachments: apache activemq.pdf

Hi. I have implemented a tool to detect library version inconsistencies. Your 
project have 2 inconsistent libraries and 2 false consistent libraries.

Take org.osgi:org.osgi.compendium for example, this library is declared as 
version 4.3.1 in activemq-leveldb-store, 5.0.0 in activemq-cf and etc... Such 
version inconsistencies may cause unnecessary maintenance effort in the long 
run. For example, if two modules become inter-dependent, library version 
conflict may happen. It has already become a common issue and hinders 
development progress. Thus a version harmonization is necessary.

Provided we applied a version harmonization, I calculated the cost it may have 
to harmonize to all upper versions including an up-to-date one. The cost refers 
to POM config changes and API invocation changes. Take 
org.osgi:org.osgi.compendium for example, if we harmonize all the library 
versions into 5.0.0. The concern is, how much should the project code adapt to 
the newer library version. We list an effort table to quantify the 
harmonization cost.

The effort table shows the overall harmonization cost on APIs. It seems your 
project have no API invokes on this library, which could be safely upgrade to 
5.0.0
|Index|Module|NA(NAC)|NDA(NDAC)|NMA(NMAC)|
|-|-|-|-|-|
|1|activemq-leveldb-store|0(0)|0(0)|0(0)|
|2|activemq-cf|0(0)|0(0)|0(0)|
|3|activemq-osgi|0(0)|0(0)|0(0)|
|4|..|..|..|..|

Also we provided another table to show the potential files that may be affected 
due to library API change, which could help to spot the concerned API usage and 
rerun the test cases.

As for false consistency, take commons-lang commons-lang jar for example. The 
library is declared in version 2.6 in all modules. However they are declared 
differently. As components are developed in parallel, if one single library 
version is updated, which could become inconsistent as mentioned above, may 
cause above-mentioned inconsistency issues

If you are interested, you can have a more complete and detailed report in the 
attached PDF file.

 



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

Reply via email to