# Package manager: what are "explicit requirements"?

**URL:** <https://discourse.julialang.org/t/package-manager-what-are-explicit-requirements/18616>\
**Category:** General Usage\
**Tags:** pkg\
**Created:** [December 13, 2018, 12:16am UTC](https://discourse.julialang.org/t/package-manager-what-are-explicit-requirements/18616 "2018-12-13T00:16:40Z")\
**Posts on this page:** 5\
**Page:** 2

<div class="post-metadata">

**Author:** ![tkf](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tkf/32/17635_2.png) [@tkf](https://discourse.julialang.org/u/tkf)\
**Post date:** [April 24, 2019, 8:26am UTC](https://discourse.julialang.org/t/package-manager-what-are-explicit-requirements/18616/21 "2019-04-24T08:26:26Z")

</div>

@kristoffer.carlsson Yes, I was replying to you. And I thought [your previous comment](https://discourse.julialang.org/t/package-manager-what-are-explicit-requirements/18616/15) was a reply to me.

---

<div class="post-metadata">

**Author:** ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)\
**Post date:** [April 24, 2019, 8:34am UTC](https://discourse.julialang.org/t/package-manager-what-are-explicit-requirements/18616/22 "2019-04-24T08:34:06Z")

</div>

So the core of your post was this then?

> [@tkf](#):
>
> I believe the correct behavior is to let it be installed even though the test may fail

I don’t think that is the “correct” behavior. Changing [package does not install when another package needs to downgrade · Issue #110 · JuliaLang/Pkg.jl · GitHub](https://github.com/JuliaLang/Pkg.jl/issues/110) seems better to me.

---

<div class="post-metadata">

**Author:** ![tkf](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tkf/32/17635_2.png) [@tkf](https://discourse.julialang.org/u/tkf)\
**Post date:** [April 24, 2019, 9:17pm UTC](https://discourse.julialang.org/t/package-manager-what-are-explicit-requirements/18616/23 "2019-04-24T21:17:41Z")

</div>

My argument is that introducing upper bounds in `General` when there is no such declaration in the original `REQUIRE` files (and not updating them) is wrong.

The sentence you quoted is misleading without the preceding part:

> [@tkf](#):
>
> Since [StatsPlots does not claim any compat information for StatsBase](https://github.com/JuliaPlots/StatsPlots.jl/blob/32a3f7dd82fbed6dfb69cf2dcdb0546c12ccacdd/REQUIRE#L5)

---

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [April 25, 2019, 1:42am UTC](https://discourse.julialang.org/t/package-manager-what-are-explicit-requirements/18616/24 "2019-04-25T01:42:56Z")

</div>

Counterpoint: claiming compatibility with breaking version that doesn’t exist yet is wrong.

---

<div class="post-metadata">

**Author:** ![tkf](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tkf/32/17635_2.png) [@tkf](https://discourse.julialang.org/u/tkf)\
**Post date:** [April 25, 2019, 4:57am UTC](https://discourse.julialang.org/t/package-manager-what-are-explicit-requirements/18616/25 "2019-04-25T04:57:30Z")

</div>

First of all, I’m not claiming that loose compatibility declaration is the best software practice. I’m talking about the specification of the `REQUIRE`/`Project.toml` format and the correctness of the implementation.

Let me ask a genuine question. The [documentation of Pkg](https://github.com/JuliaLang/Pkg.jl/blob/v1.1.3/docs/src/compatibility.md) says

> If the compatibility for a dependency is not given, the project is assumed to be compatible with all versions of that dependency.

Does this mean “maximally “semver”-compatible version of the version existed at the time of the registration?” What about the `>=` specifier? If that’s the case, I think it is better to clarify as such in the documentation.

If that’s not the case, i.e., there is a facility to express “compatible with all versions”, I don’t understand why the information in `REQUIRE` files is not faithfully translated.

Having said that, I do 100%-agree with

> [@StefanKarpinski](#):
>
> claiming compatibility with breaking version that doesn’t exist yet is wrong

for post-1.0 semver-compatible software. I’m ambivalent about it for pre-1.0.

[Previous page](https://discourse.julialang.org/t/package-manager-what-are-explicit-requirements/18616.md?page=1)
