This should have gone to dev, but I was replying to a user thread, so I have 
moved it over to the dev list.

-----Original Message-----
From: Murphy, Mark [mailto:murphym...@metalexmfg.com] 
Sent: Wednesday, October 26, 2016 7:29 AM
To: 'POI Users List' <u...@poi.apache.org>
Subject: RE: POI-3.15: Commons-Collections-4 vs. Jasper Reports' dependency on 
Commons-Collections-3

This issue seems to have worked out well for Andreas, but I am wondering, if 
Jasper Reports depends on POI, can a user upgrade POI without breaking 
dependencies such as Jasper Reports? Can a user run with two versions of POI in 
their classpath? I don’t think so. While it is good to remove deprecations, I 
believe we need to do so in an orderly manner. I have brought this up before, 
but semantic versioning could help solve that problem by putting some rules 
around when breaking changes happen.

Semantic version numbers look something like POI 3.15.1 Major version is 3 – 
This changes when breaking changes or major functional changes are made Minor 
version is 15 – This changes when features are added, but no breaking changes 
are allowed Patch version is 1 – This changes for bug fixes that do not involve 
breaking changes

If we were to adopt semantic versioning, we could also put the major version in 
the namespace so that incompatible versions of POI could remain in the 
classpath together. It would also let us apply a bug fix to an older version 
while still developing a newer version. That improves stability of the project 
for everyone using it. Folks don’t have to refactor their code just to get bug 
fixes. On the other side, we would be able to deliver bug fixes to a branch 
other than the current production branch. As it stands now, users are stuck 
with upgrading to the latest-greatest, maybe breaking version if they want any 
bug fix. And we are quick on the draw at removing deprecated features.

A lot of projects are moving to semantic versioning for just these reasons. 
Maybe it is time for us to do so as well. Even tools like Maven provide a 
richer experience for packages that use semantic versioning by letting you 
specify a Major version, or Major and Minor version, and then retrieving the 
latest minor or patch version. With our current scheme of versioning, the user 
has to specify the specific version they want to use, and there are no patches 
forthcoming without the pain of breaking changes.

From: Andreas Reichel [mailto:andr...@manticore-projects.com]
Sent: Wednesday, October 26, 2016 5:13 AM
To: u...@poi.apache.org
Subject: Re: POI-3.15: Commons-Collections-4 vs. Jasper Reports' dependency on 
Commons-Collections-3


On Wed, 2016-10-26 at 01:40 -0700, Javen O'Neal wrote:
The Commons collection project has namespaced their library so that
collections3 and collections4 can run side by side.[1]

Javen, thank you a lot. This saved my day!
We put both libraries commons-collections-3.2.1.jar and 
commons-collections4-4.1.jar into the classpath and were able to build a Jasper 
Report, but also to export data into an Excel File.

Thank you again for kind support, cheers.

Reply via email to