https://bz.apache.org/bugzilla/show_bug.cgi?id=62355

--- Comment #8 from Andreas Beeker <kiwiwi...@apache.org> ---
TL;DR: thank you for the comments; why we should prepare for Java 9 usage; why
I think the one-big-jar approach is not good


First of all I want to thank you for your comments. Although this kind of
discussion is recuring over time, I think it is often necessary to gather the
current opinions and not anticipate what everyone could think. Think of it, as
a kind of test balloon like we had it with Java 8.


(In reply to Nick Burch from comment #5)
> This does seem to have a lot of breaking changes for users...

As I have the impression, that you might be overwhelmed by the amount of
changed classes, I'd like to give you a short overview of what has changed.

I've tried to minimize the effects, so it's mainly an organize imports in user
code - which the usual IDE is able to do, which we can explain in therelease
notes and which might be not so suprising for a new major version

If you look at the package moves there are the following notable changes:
- extractor and converter classes:
  - There were some cross references between hwpf and hssf -> now in common
  - Ooxml, Main, Scratchpad related extractors were in the same package.
    In other places we separate those - why should we put all of them in the
same "pot"?
- POIXML* classes:
  search for "org.apache.poi.POIXML" replace with "org.apache.poi.ooxml.POIXML"
... a no-brainer


> ... for something, which I'm not sure many people are using (and which has 
> had a very mixed
> response at best)

... but more and more will use, and as soon as you added a module-info.java to
the Java 9 user module, my IDE doesn't compile anymore because of the split
packages.

So we effectively block developers to use the module-info.
I don't understand why we wouldn't clean-up the packages on one hand, but on
the other hand try to stay compatible with Java 10+, i.e. the commons compress
change.
If the user code is also a library and even wouldn't use module-info, the
add-opens need to be passed to their users.


> and which either needs us to move everything to Java 9, or potentially breaks 
> loads of tools including Android ones

With automatic modules we don't need to move everything now. If we want to stay
(?) or become Android compatible, we need to check anyway for the feature set
(https://developer.android.com/studio/write/java8-support)


> What if we just produced one additional jar, poi-all-java9 ... ?

If we (would) have the three options ...
- keep the packaging
- have format specific modules
- "the-one-to-rule-them-all" :)

... is this really the prefered option for the future?

I'd like to aim for format specific modules + extras and try to minimize or
straighten the package dependencies in future releases - as far as I
understand, this is also the goal of Jigsaw, i.e. to have a stronger
encapsulation and better maintainability. Providing the one big jar is a step
back for me - so for the time being, I would rather keep the packaging than
introducing another artifact. So last time we argued about format-specific
modules, one argument was, that it is already so confusing to have main,
scratchpad, poi-ooxml, poi-ooxml-schemas. So I would say, introducing an
additional package doesn't make it better.



> We'd then just need to make a smaller number of changes for ... Java 9/10 
> fixes ...

I think we probably don't go the way of multi release jars, so as far as the
changes are compatible with the choosen Java version, we will be ok ...
otherwise we need to decide about upgrading.


> Given how many people we see on the mailing list and on stackoverflow using
> very old versions of POI, just the move from 3.x to 4.x is going to put off
> some people upgrading, and a whole bunch of broken imports is probably going 
> to
> mean loads of users don't upgrade.

Actually my hope is, the 4 in front might wake up a few of those lingering on
3.9. As we saw on the stackoverflow posts, mostly the 3.9 users don't even try
to use a newer version first. They don't complain about incompatible changes
... they simply don't try it ...
If I compare the problems of fixing the imports vs. the inability to use POI in
jigsaw user project, I rather would like to help the second group.


(In reply to Mark Murphy from comment #6)
> If we provide a single jar for Java 9 in 4.0, how will that affect our 
> ability to provide a proper module in the future?

I guess we can change that from major to major version. But there was a reason
for jigsaw as mentioned above, and I don't want to work against it.

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@poi.apache.org
For additional commands, e-mail: dev-h...@poi.apache.org

Reply via email to