Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

1.4.4 breaks downstream consumers #186

Open
makkes opened this issue Jan 24, 2025 · 5 comments
Open

1.4.4 breaks downstream consumers #186

makkes opened this issue Jan 24, 2025 · 5 comments

Comments

@makkes
Copy link

makkes commented Jan 24, 2025

The latest release 1.4.4 bumps Jena to v5 which breaks consumers downstream because of removed classes in Jena. It is very unfortunate that a patch release of this library contains such a huge change for consumers and I would appreciate rolling that back and instead follow proper semver semantics and publish 2.0.0 to clearly indicate that it contains breaking changes.

@afs
Copy link
Contributor

afs commented Jan 24, 2025

@makkes -- Jena classes? Which ones?

@makkes
Copy link
Author

makkes commented Jan 24, 2025

One example is SimpleSelector.

@ashleycaselli ashleycaselli added bug and removed bug labels Jan 31, 2025
@ashleycaselli
Copy link
Collaborator

@makkes the Jena update v4 -> v5 doesn't change how the TopBraid SHACL API is used thus this doesn't affect the consumers. SemVer claims that an increment of the "MAJOR version when you make incompatible API changes" which is not the case.

In case, the consumers are using the tool as Maven/Gradle dependency and are relying on Jena v4 as a transitive dependency then this update does break their code. However, this is a wrong dependencies management since it is good practice to specify dependencies and not rely on transitive ones.

From Maven docs:

"Although transitive dependencies can implicitly include desired dependencies, it is a good practice to explicitly specify the dependencies your source code uses directly. This best practice proves its value especially when the dependencies of your project change their dependencies."

@afs
Copy link
Contributor

afs commented Feb 4, 2025

SimpleSelector was deprecated in Jena 4.10.0 but maybe @makkes was making a bigger jump than 1.4.3 to 1.4.4.

@makkes
Copy link
Author

makkes commented Feb 4, 2025

@makkes the Jena update v4 -> v5 doesn't change how the TopBraid SHACL API is used thus this doesn't affect the consumers. SemVer claims that an increment of the "MAJOR version when you make incompatible API changes" which is not the case.

In case, the consumers are using the tool as Maven/Gradle dependency and are relying on Jena v4 as a transitive dependency then this update does break their code. However, this is a wrong dependencies management since it is good practice to specify dependencies and not rely on transitive ones.

Point taken! I'm adding explicit deps for the Jena libs. However, this only works in cases where the SHACL lib still works with these old versions. If SHACL would depend on a certain feature in the Jena v5 libs, then this wouldn't work as my application wouldn't compile.

That's why I've been raising this issue in the first place: A major bump, even in a transitive dep, can lead to an incompatible change. Thus, a patch version bump as happened here with 1.4.3 => 1.4.4 doesn't reflect the breaking change properly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants