Replies: 9 comments 14 replies
-
|
Thank you @sdeleuze ! Ok, one thing I am not sure wrt above is this: would there ONLY be 2.x releases of Second: dropping of patch from 2.x versions is in itself quite disruptive: it will break common use case of defining just a single Maven/Gradle Third: if we only release new So maybe an example of planned/suggested release flow would make sense? EDIT: I think I got it, after re-reading proposal by @sdeleuze, will summarize my understanding in a new comment. |
Beta Was this translation helpful? Give feedback.
-
|
Ok, so, if I understand proposal correctly, suggestion is to:
This adds minor complexity of "why does
|
Beta Was this translation helpful? Give feedback.
-
|
@pjfanning @JooHyukKim @k163377 @yawkat WDYT? |
Beta Was this translation helpful? Give feedback.
-
|
Thanks for considering this, @cowtowncoder I've been discussing this with @sdeleuze from a Spring Boot perspective as we're trying to figure out how to handle our Jackson 2 -> Jackson 3 migration. We're anticipating users having apps that need both versions of Jackson while the ecosystem completes its migration, hence the interest in being able to use both versions at the same time without disagreement over the version of We use Jackson's bom and would continue to do so (using both Jackson 2's and Jackson 3's boms) so dropping the patch level from the version of |
Beta Was this translation helpful? Give feedback.
-
|
Ok: I think this is enough consensus for me, even if this is a huge chance. I will go ahead and update https://github.com/FasterXML/jackson-future-ideas/wiki/JSTEP-1 to reflect change; file an issues to:
and go from there. |
Beta Was this translation helpful? Give feedback.
-
|
Ok turns out there were indeed couple of incompatibilities (things added in 3.0 but not in 2.x). So I had not maintained parity diligently. Or perhaps more accurately, compatibility was one-way: Jackson 2.x could use 3.x What this means in practical terms is that we need 2.19.2 release before 3.0.0-rc6, to get compatible |
Beta Was this translation helpful? Give feedback.
-
|
@jjohannes I realized this might be challenge to Gradle version alignment and in particular for gmm (gradle module metadata). WDYT? Basically changes are:
I am planning to get 3.0.0-rc6 released quite soon, but hope to resolve Gradle issues, if any, before that. |
Beta Was this translation helpful? Give feedback.
-
|
Here's a concrete example of a problem that occurs with jackson-databind 3.0.0-rc-5 and jackson-annotations 2.19.1: I guess this is one of the incompatibilities that you mentioned above, @cowtowncoder. |
Beta Was this translation helpful? Give feedback.
-
|
Changed, |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
As we progress in adding Jackson 3 support accross the Spring portfolio, I would like to raise what is probably my main remaining big concern. JSTEP-1 does a fairly good job in describing why the decision has been made to keep the Jackson 2 package and groupId of
jackson-annotations, I understand the intent even if it introduces challenges.My concern is about the choice that has been made to have distinct Jackson 2 and Jackson 3
jackson-annotationswhich are almost the same, but not exactly, and to publish different versions for these 2 variants. I think that's creates uncessary confusion when there is a need to mix Jackson 2 and Jackson 3 "engines" in Frameworks (Spring Boot for example), in the community ecosystem, in end-users projects or at the scale of organizations that are usingjackson-annotationsto annotate the domain model and where the various microservices or applications will not migrate to Jackson 3 at the same time.In practice, this creates a very uncomfortable and IMO uncessary choice dilemma: when using side by side Jackson 2 and 3, which variant of
jackson-annotationsshould be used (2.x or 3.x)? How close are those 2 variants today? How close will they be in a couple of years? What are the differences (mainly deprecations and Java 17 baseline I think)? How can we be sure that at the scale of the Jackson ecosystem (Jackson core projects, Jackson modules, community extensions and end users project) that both variants are and remain compatible with Jackson 2 and 3.Even worse, the fact there are 2.x and 3.x variants of Jackson
jackson-annotationsmakes it impossible to use side by side Jackson 2 and Jackson 3 BOMS as they will define different versions for this dependency. And even for projects not using BOMs, it is not obvious which variants they should use.Even JTEP-1 ackownledge this confusion by saying "essentially, difference in versioning may seem confusing to users"!
My proposal to solve this serious flaw is to fully embrace the fact that there will be a single
jackson-annotationsshared between Jackson 2 and Jackson 3 instead of the current situation:jackson-annotationswould keep using versions 2.x in addition to keep its groupId and packagejackson-annotationswould be 2.20, 2.21, 2.22, etc.jackson-annotationsshould be done only when there are some annotation changes, otherwise new releases ofjackson-databindkeep using the same version ofjackson-annotationsjackson-annotationsis needed for either Jackson 2.x or 3.x need, that would trigger a coordinated release of both Jackson 2 and 3 in order to avoid version mismatches in the BOMS and ensure proper testing.IMO the end results would be very satisfying, as it would make the compatibility story between Jackson 2 and 3 even stronger, allow first class side by side usages of Jackson 2 and 3 (at the scale of an organization, it will happen very frequently), it fixes the currently broken dependency management story, and even conceptually I think it is much cleaner to fully embrace the fact there is effectively a single dependency version shared by Jackson 2 and 3.
Any thoughts?
Beta Was this translation helpful? Give feedback.
All reactions