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.