Packages blocking each other - strange case with DataFrames and PlotlyJS

On a fresh 1.12.7 install, I am seeing this:

  • If I add DataFrames first and then PlotlyJS, I get DataFrames 1.8.2 and PlotlyJS 0.15.0 (which is not up-to-date)
  • If I add PlotlyJS and then DataFrames, I get PlotlyJS 0.18.18 and DataFrames 1.8.2, both up-to-date

My understanding is that DataFrames adds OrderedCollections v2.0.1, while the most recent PlotlyJS wants OrderedCollections v1.8.2. I (sort of) understand that incompatibilities can arise, after reading some documentation and this blog post by Bogumił Kamiński, but what I don’t understand is:

  • Why would an older version of PlotlyJS “tolerate” a more recent version of OrderedCollections, while that version is not OK for the most up-to-date PlotlyJS?
  • After adding DataFrames and then PlotlyJS, which is stuck at 0.15.0, I can force the installation of PlotlyJS 0.18.18. This downgrades OrderedCollections to 1.8.2 and results in exactly the same Manifest.toml file as the one resulting from installing PlotlyJS first. Why isn’t the Package Manager trying to do that by itself?