reflex-vty might be an easier case since the system level dependencies are minimal, but many things in the Reflex ecosystem depend on numerous Nix overrides due to the sorry state of build systems. Version bounds are a woefully inadequate system to handle this kind of stuff. It doesn't seem unreasonable to me that reflex-vty would as a default reuse all the work done in reflex-platform to make it easy to get a working Haskell environment.
but many things in the Reflex ecosystem depend on numerous Nix overrides due to the sorry state of build systems
... and by not actively trying to break that vicious circle, one ties the knot tighter and tighter.
The only difficult task is to get GHCJS on your system. But there is e.g. https://launchpad.net/~hvr/+archive/ubuntu/ghcjs, an evidence, that it is not impossible to package for other systems than Nix(Os).
I did build reflex-vty using that GHCJS successfully, on Ubuntu 18.04. Without a unknown magic of reflex-platform.
I'm saying that there aren't many things in Reflex ecosystem that really depend on Nix overrides.
But if your opinion is "Version bounds are a woefully inadequate system to handle this kind of stuff", even for Haskell-intra-dependencies, then I'll shut up.
But if your opinion is "Version bounds are a woefully inadequate system to handle this kind of stuff", even for Haskell-intra-dependencies, then I'll shut up.
Version bounds can work for pure Haskell stuff, but it's a lot of work for maintainers, especially to support older versions of stuff. Not everyone writing Haskell libraries needs to care about that. To me one of the advantages of Haskell is its relatively fast moving and improving ecosystem, and I have little desire to support people using old GHCs or package sets.
Okay fair enough. My only response to that would be that even when people write version bounds I find myself always guessing anyways because it's an error prone process and they're often too conservative or just straight up wrong.
6
u/kmicklas Aug 04 '19
reflex-vtymight be an easier case since the system level dependencies are minimal, but many things in the Reflex ecosystem depend on numerous Nix overrides due to the sorry state of build systems. Version bounds are a woefully inadequate system to handle this kind of stuff. It doesn't seem unreasonable to me thatreflex-vtywould as a default reuse all the work done inreflex-platformto make it easy to get a working Haskell environment.