4 ms·
My only problem with git-annex is Haskell. I don't hate the language itself, but the sheer number of dependencies it has to install is staggering. Many of those
by goku12 1y ago
My only problem with git-annex is Haskell. I don't hate the language itself, but the sheer number of dependencies it has to install is staggering. Many of those dependencies are not used by anything else, or may be incompatible versions when more than one application uses it. The pain is when you install them using the system package manager. Just two Haskell applications - annex and pandoc - are enough to fill your daily updates with may be a dozen little Haskell packages. God forbid you're on a distro that installs from source!
It's quite safe to just statically link most, if not all of them directly into the application, even when some of them are shared by other applications. I have seen this complaint repeated a few times. The reply from the Haskelliers seem to be that this is for the fine grained modularity of the library ecosystem. But why do they treat it like everything starts and ends with Haskell? Sometimes, there are other priorities like system administration. None of the other compiled languages have this problem - Rust, Go, Zig, ... Even plain old C and C++ aren't this frustrating with dependencies.
I need to clarify that I'm not hostile towards the Haskell language, its ecosystem and its users. It's something I plan to learn myself. But why does this problem exist? And is there a solution?
- aragilar 1y agoWhich package manager are you using? I've not seen any issues with apt-based systems with Haskell?
- goku12 1y agoI used to have issues on Arch/pacman. Now on ebuilds/Gentoo.
- IsTom 1y ago> It's quite safe to just statically link most, if not all of them directly into the application If you're talking about distro's repos, isn't this a matter of distro and package manager policy?
- goku12 1y agoVery likely. But then, why is this an issue with Haskell alone?
- zeendo 1y agoAs a full time Haskell developer, I have a similar aversion to Haskell-based distro packages which aren't statically linked. There ARE statically linked Haskell packages in the AUR so it's at least feasible. I haven't even dug into the conversations around why packagers are insisting on dynamic linking of distro packages - I just avoid them for the same reasons you mention. I can't really speak confidently to why it is exactly - I can only guess. Clearly dynamic linking makes sense in a lot of cases for internal application distribution - which is where Haskell is often used - so maybe people are incorrectly projecting that onto distro packages?
- wonger_ 1y agoYes! Every time I `pacman -Syu`, half of the updates are Haskell packages. I think from pandoc and shellcheck iirc?
- goku12 1y agoPandoc and git-annex in my case. Basically any substantial application written in Haskell.
- GZGavinZhao 1y agoThe Haskell tooling already supports statically linking in the dependencies, I maintain the Haskell stack for Solus and for pandoc we just have a single binary that only depends on libc, all other Haskell dependencies are statically linked inside the binary just like how Rust dependencies work. So it's definitely doable. I think it's more of the distro's maintainers' choice. For Solus the amount of dependencies was just too much for me to handle so we resorted to static linking.
- goku12 1y agoWhy do some distro maintainers choose otherwise? I have seen some users complaint about this before, without any correction being done. So my guess is that there is something that forces those distro maintainers to make that choice.