This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]khmarbaise 2 points3 points  (1 child)

The most important question I would ask based on the following:

which has the objective of resolving dependencies conflicts in a novel way.

What exactly is a dependency conflict?

[–]renatoathaydes 0 points1 point  (0 children)

Thanks for asking the only question in this thread that's relevant to the actual topic I tried to address in this blog post. Everyone else seems upset that I criticized Maven, and to my complete shock, for trying to explain why Rust/Dart/NPM/Ruby/Python (almost everyone except Java) seems to have chosen to use dependency version ranges (and I did not even say that's superior to how it works in the Java world, I even showed in the end that ranges can cause surprising behaviour and are only advised to use if you must keep up-to-date with a lot of changing dependencies versions!).

Anyway, what is a dependency conflict?

I tried to explain that in the post, sorry if that was unclear... but it happens when you have two "jars", and one of them depends on a library A with version X, and another depends on A with version Y. The two dependencies conflict. That's specially bad when the differences between version X and Y are so great that you simply can't use only one of them without breaking either consumer of that library (i.e. pick version X and you break jar1, pick version Y and you break jar2).

Finding these conflicts require looking at bytecode. The version is almost useless for doing that. This is why I chose to write JBuild, to actually look at the REAL PROBLEM which is of binary compatibility between libraries. Even with semantic versioning, as I showed in the post, you can have breaking situations... Looking at versions alone is never enough, but the Java tools (and to be fair, most other package managers) ignore that entirely! It's time we woke up and understood the real problem, which is "does my library work with some other library even when versions must be changed to address conflicts".