JuliaIO / HDF5.jl

Save and load data in the HDF5 file format from Julia
https://juliaio.github.io/HDF5.jl
MIT License
386 stars 140 forks source link

Always load even if deps aren't satisfied #1051

Closed jpsamaroo closed 1 year ago

jpsamaroo commented 1 year ago

In my opinion, it's bad practice to have a package fail to load just because some binary dependencies aren't available or correctly built, because it causes all downstream users of the package to fail to load, even if they don't ever rely on the functionality in HDF5.

I ran into this while trying to load ProxAL.jl so that I could open a file generated by Julia's serializer; because HDF5 refused to load (due to being unable to find libhdf5_hl in the build step), it caused ProxAL to fail to load, which was infuriating because I didn't actually need HDF5 at all for what I was doing.

As a similar example, AMDGPU.jl (one of the packages I maintain) also had this behavior, and would fail to load for any number of reasons relating to binary dependencies (even those pulled in via JLL). That behavior caused a massive lack of uptake in the ecosystem because AMDGPU would "poison" packages which had it as a dependency, making life miserable for users who might not even have an AMD GPU (or didn't desire to use it). Fixing that required some careful tracking of binary dependencies, but it was overall a very positive move.

mkitti commented 1 year ago

It's interesting that this is not seem to break any of the tests. I wonder if we need further messaging when people try to invoke other functions in HDF5.jl.