Upgrading Guava baseline dependency for Jackson 2.10, from Guava 18.0 to.... ?

22 views
Skip to first unread message

Tatu Saloranta

unread,
Jun 28, 2018, 12:57:08 PM6/28/18
to jacks...@googlegroups.com, jackson-user
Quick note: as per:

https://github.com/FasterXML/jackson-datatypes-collections/issues/23

there is desire to

(a) Extend range of allowed Guava versions to include 23, and
(b) Update minimum version supported from 18 to something later

both for Jackson 3.x (less of a concern since it'll be out at earliest
by end of 2018), and
for 2.10 (more concern).

I know Guava has traditionally been quite aggressive in deprecating
and removing functionality so I hesitate to simply change version deps
and hope for the best.
But at the same time we do need to try to balance needs of users
relying on newer versions with those of stability.

So.... if anyone has time and interest to investigate what kind of
dependency upgrade would be good trade-off, that would be good. :)

For what it is worth, Jackson 3.x currently upgrades dependency from
18.0 to 20.0, so perhaps that would be the starting hypothesis -- we
would try to make Guava module of Jackson 2.10 to work with Guava
versions [20.0 ... 23.0]?

-+ Tatu +-

Ville Koskela

unread,
Jan 16, 2019, 11:53:38 PM1/16/19
to jackson-user
Hi Tatu,

We depend on Jackson and Guava and regularly update both. The longer it takes to achieve version compatibility across the two the more difficult it is for us to remain up to date with bug fixes and features.

In fact, we have recently upgraded to Guava version 25 as version 23 is already over a year old. I assume it's not possible to guarantee compatibility across a large range due to the changes in Guava itself. Alternatively, would it be possible to support two variants of this library?

For example, one for "stable" and one for "edge"? The update policy for Guava would differentiate the two; say "edge" is updated within 3 months and "stable" is only updated every year or two depending on the make-up of your user base.

Ville

Tatu Saloranta

unread,
Jul 27, 2020, 5:01:50 PM7/27/20
to jacks...@googlegroups.com, jackson-user
Fast-forward to Coronarific 2020, situation is such that Jackson 2.10
and 2.11 require Guava v20 as baseline.
They may or may not work with older versions (does anyone have
information? I can probably test this relatively easily),
maybe down to v18 or even v16, but guaranteed for v20 wrt automated testing.
Jackson 3.0 uses baseline of v25 but since that is not about to be
released in near future, that is probably less relevant.

Baseline for Jackson 2.12 is not yet determined. I could leave it at
v20, but there is a new interesting PR:

https://github.com/FasterXML/jackson-datatypes-collections/pull/69

which seems to require v23. Now, based on my work outside of Jackson I
know that Guava version dependencies
are tricky due to its wide usage and Guava maintainers aggressive
deprecation of old features: libraries tend to work
with some range of Guava versions, and in case of Jackson we need to
balance needs of those using latest versions
(which typically work ok with Jackson, fortunately) with those who
have dependencies to things that only work with
older Guava versions.

I think 2 main options would be to:

1. Keep v20 minimum
2. Upgrade minimum to v23 (which v25 is bit more widely used it seems
there is some value in conservative updates)

Does anyone know of practical consequences of version upgrades; any
well-known limitations that might favor use of
specific Guava version (as I recall, v19/v20 tended to be reasonably
good versions wrt compatibility for things that need
older Guava)?
Or have opinions, suggestions?

-+ Tatu +-
Reply all
Reply to author
Forward
0 new messages