-
Notifications
You must be signed in to change notification settings - Fork 120
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add additional arbitrary instances #372
base: master
Are you sure you want to change the base?
Conversation
This breaks contract with I'm not a fan. |
Well, It does make sense to have a compatibility packages for things not in base. It makes no sense to have one for things in base. |
@nick8325 thoughts? |
I think that IIRC, the reason why So it's not as simple as "the type is in But I do think it's unfortunate that these instances don't live in QuickCheck just for the sake of some rather old GHC version and it would be really nice to fix that. One option would be to (1) move the |
What is "for a while"? I have added instances to First adding to
That's actually a non-argument. The dependencies are very well cached by build tools and CIs. My opinion is that perfectly Then But that puts pressure on you to work on I think that all intermediate solutions between that and current extreme approaches sub-optimal and "arbitrary". Another not so bad solution is to require to use GHC-8+ version if the compiler is GHC, i.e. But this approach is less clear, not "continuous". At some point in the future you'd want to bump the lower bound again. (FWIW GHC-9.0 and possible future GHC-10.0 are very arbitrary. It just happens that in |
My take on this is that Those users are currently hurt by this policy (as evidenced by multiple open issues that have been around for over a year) and we would be right to fix that. Now the choice is just where we put the awkwardness. I don't mind putting it in If having these things in two different places is a problem I suggest moving the compatibility shim and the main packages into the same repo - that way there won't be any issues around communication and synchronisation to worry about. |
Again, that is not a valid argument in 2024. |
Fine, longer build times then. |
Considering we released a new version of QuickCheck a while ago and @nick8325 and @UlfNorell can we try to figure out a way to either move |
@MaximilianAlgehed QuickCheck-2.15 was released 3 weeks ago. GHC-9.10.1 last weekend. I was deliberately waiting for the latter. (And cannot do things any faster ATM, as GHC-9.10.1 is not supported by all If about month is not acceptable latency in catching up in support, then our maintenance philosophy disagrees so fundamentally, our co-operation won't be fruitful. Previously, the reasonable latency haven't been any problem. What had changed recently? Remember, most people in Hackage ecosystem maintain libraries on their free time, maybe partly (hardly ever fully) sponsored by their employer. Be reasonable in your expectations. |
I take issue with the idea that someone complains about changes here breaking things downstream, then don't accept help downstream. QuickCheck has been functionally neglected for some time. I'm trying to make sure that isn't the case any more. The point I was making is that the three week delay is unnecessary and an artifact of having two different repositories. It would not be necessary. |
If you don't have the time to support a library, and you don't want help. Then I ask you to be reasonable about the expectations you put on others to take your input seriously. We've been delaying resolving this PR for some time due to your comments about "breaking constract" with quickcheck-instances. But if you want to impose constraints like that upstream I would suggest you either:
I want to resolve this in a way that doesn't require keeping things in synch across multiple different repositories with a maintainer who doesn't communicate. |
Yes, I don't want things to change unnecessarily. I also don't need help in bumping bounds. That's trivial change, I'll do it eventually. But I don't want to be doing trivial changes every other week either.
If
That is tricky to explain. On the other hand this is trivial, on the other hand I need to trust the person I'd give them commit and upload rights.
My work on |
My PR was not blocked on this. And you don't have to trust me to review the PR - you just need to be able to read code. |
@MaximilianAlgehed your PR stricltly isn't. But as I said, i don't want to do trivial stuff every other week, so when I'll be able to do GHC-9.10.1 compatible release of |
Fine. Getting back to the PR at hand. Clearly adding missing instances from And evidently having two different repoa for these two packages is also terrible DX (as evidenced by it causing such extreme disagreement between the two of us). So..? We need some solution to this. I propose having one repo with two packages (to decrease migration burden downstream) and putting the instances for |
You are free to add instances from to I'd kindly ask that you'd then depend on compatiblity packages in I have written a blog post about compatibility packages https://oleg.fi/gists/posts/2019-06-03-compat-packages.html, but it's a bit dated. Luckily, IIRC, only |
There are a bunch of types that have been added to
base
in recent years. The goal here is to bringTest.QuickCheck.Arbitrary
up to speed with these new types.closes #347
closes #360