poi-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Murphy, Mark" <murphym...@metalexmfg.com>
Subject RE: POI-3.15: Commons-Collections-4 vs. Jasper Reports' dependency on Commons-Collections-3
Date Wed, 26 Oct 2016 11:29:23 GMT
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
Minor version is 15 – This changes when features are added, but no breaking changes are
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:andreas@manticore-projects.com]
Sent: Wednesday, October 26, 2016 5:13 AM
To: user@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

Thank you again for kind support, cheers.
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message