Is semver followed diligently in libraries and tools? #4480
-
Can I safely do minor upgrades of the rewrite-maven-plugin without worrying about it breaking anything? Is that generally the case for rewrite libraries? For example, we have a few recipes that compile against rewrite-bom:8.x. We are currently using rewrite-maven-plugin:5.39.2, which compiled against rewrite-bom:8.34.0. I'm wondering if we can safely upgrade rewrite-maven-plugin:5.x minor releases and continue to use them with all recipes that were built against rewrite-bom:8.x. Understand that mistakes can always happen. I'm just trying to understand versioning policy. I did search end user docs for 'semver':) |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 7 replies
-
Hi @crankydillo ; Thanks for reaching out. In general I can say we only recommend/support using versions as aligned through out rewrite-recipe-bom releases: https://github.com/openrewrite/rewrite-recipe-bom/releases As an example we recently switched from using internal nullability annotations to JSpecify, which meant the core of OpenRewrite, the plugins, and all recipe modules are affected. Folks can either still use older versions of each, or exclusively use newer versions, but not use a mix a older and newer versions. Had we classified this as a semver breaking change, and then would have had to release new major versions of everything, whereas in reality this is an implementation detail that folks using aligned versions would not even notice. Were we to strictly semver everything then we'd be in the triple digits for major versions, which isn't particularly reflective of the work put into each release. As such you're best to use the aligned versions as listed through I hope that helps clarify what to do, and what to expect! |
Beta Was this translation helpful? Give feedback.
Hi @crankydillo ; Thanks for reaching out. In general I can say we only recommend/support using versions as aligned through out rewrite-recipe-bom releases: https://github.com/openrewrite/rewrite-recipe-bom/releases
Any release there will list which versions of openrewrite/rewrite work well with which plugins and recipe modules; typically the latest of each at the time of release. Using mismatched versions could result in unexpected failures, which semantic versioning wouldn't necessarily guard against well, as you'd still need to update each to the latest release anyway, or risk getting left behind.
As an example we recently switched from using internal nullability annotations to JSpecify,…