Conversation
4eb3add to
d35b03e
Compare
|
FTR, #7209 (comment) |
|
Thank you, it does. Can I open a larger can of worms and ask for rationale behind the policy?
|
|
Let me ping @Mikolaj and @ulysses4ever . I believe this is the right place to codify what is shared knowledge, but of course ideas on how to make the policy better are welcome. |
|
Yes, give me this weekend to comment. I have opinions!.. |
|
Sure, we are in no rush! |
This is my first and biggest consern: it's excruciatingly painful to compute the latest major version of GHC that we support, and we have to do it on a weekly basis in my experience. I think much nicer would be to express backward compat in terms of number of major GHC releases (optionally, we could use the notion of GHC LTS). Whether 5 years (worth of GHC releases) is too aggressive or not for the library: I don't have an opinion. I think it's not bad. There's also something I don't understand here:
Why are you concerned about boot libraries but not the actual matter of the support window: the ability to build newer Cabal with older GHCs? Imagine someone is stuck with old GHC but wants to build a package that uses relatively new cabal spec. If we don't support building newer Cabal with that old GHC, they will be stuck completely. I'm sure I'm missing something in your reasoning... The second concern I have about our spec for the support window is that we don't specify guarantees that cabal-install gives about driving GHC rather than compiling with GHC. I think we should add something about it. As a starter, 5 years would be fine, perhaps. Maybe 7, to show that out drive-compat is better than our build-compat. Recently, Oleg mentioned another interesting way to define the window, particularly for driving (which should be the most conservative): support all GHCs that are "easily available", e.g., through GHCup. Although I dislike how informal it is, I think it's an interesting direction of thought, and I'm curious what others think about it. I do tend to think that, formalities apart, it's a good idea to strive for the ability to drive extending as far as the oldest GHCs that are available, say, from GHCup. |
|
IMHO, years vs GHC releases decouples us from the GHC release cadence changes, which is good. "Last 3 GHC LTS releases" would be better than "last 5 major releases" if you are strongly in favour of ditching the old method. Re length of the window, I hope it's clear we are open to exceptions. Given that, I'd keep the long window rather than shorten it, so that we get more signal by processing the exception requests. So far, I think the window does not cause too much pain. Unless people just suffer in silence, but if so, that's a bigger social problem. Maybe, while we are amending the text, it would make sense to clearly state that if users or developers make a convincing case for a breaking change, any of the windows can be shortened by the maintainers, with suitable announcements given in release changelogs (for the benefit of users and developers that, in turn, depend on the windows). |
OK, it's clear from the discussion above that there are no commonly recognized principles behind the policy and it simply codifies a historical tradition. That's fine (I mean it), we can discuss whether there is interest to develop such underlying principles separately.
If that's the case, I'd expect the policy to define exactly what makes a convincing case for an exception. Otherwise you are just encouraging people to be loud enough and annoying enough to push whatever they want. |
I don't get it. Could you perhaps describe a particular scenario when it can bite us? Here's maybe an example. Take GHC 8.10. There has been many major releases since 810, but it was so solid that it can still be relevant. In this case the astronomic time may serve the goal of supporting a good old release better. In contrast, think of an old bad release (9.0 for instance) we'd like to stop supporting it earlier rather than later, perhaps. For that goal, the release-based measure probably works better (provided release stream is steady) because new releases will hopefully follow earlier than usual. Ultimately, my main argument for the new method would be: The whole ecosystem moves in concert with GHC releases, so thinking in (major) releases rather than years makes a lot more sense to me. That's on top of the utter inconvenience of the current approach. |
b183784 to
2e548a8
Compare
If GHC devs decide to pull a Firefox and release frequently, “last three major releases” could mean something quite different from what it means now. Years and months are not coupled to such decisions. Of course the change would not get unnoticed by cabal maintainers, and we could update the relevant policy. |
|
Ah, I see, thank you, @ffaf1. Yeah, the utter inconvenience of the current method still pushes me in the camp let's worry about the bad thing only whne/if it arises... |
That's correct.
I wouldn't mind people being loud about cabal and certainly I'd encourage communication about their needs. So far, with this particular rule, we lack feedback, not complain about noise. This is what I meant by "signal" when I said a longer window makes it more likely we get one. |
Sure. E.g., we declare we support 10 last major releases (== 5 years of half-year releases) and tomorrow GHC HQ decides to make releases take 1 year (or 1 quarter). |
0f91f8f to
5a5f54d
Compare
|
Could you please open an issue for this? I've seen a couple of comments about GHCJS support not being maintained and would like to see an issue for that too so that we're explicit about its support window. The default branch, the |
Sorry, who is this aimed at? |
|
we never had formal guarantees for suporting ghcjs, and I don't think this should change as it's a dying technology |
@ffaf1 as the PR author.
I was asking for a GHC support window issue first so that I could follow up with one about GHCJS. |
Done! If we do not agree on specifics, we can merge what has consensus and leave the rest for another PR. |
|
Yes, this has been dragging for too long. It doesn't look like the switch from years to major releases in the definition of support window collected enough support. So I'm fine with merging it with years. Another issue I was thinking of is that Contributing.md isn't very discoverable. I think some of these windows (the ability to drive, at least) would be interesting for general public. So maybe we should find a way to refer to this section of contributor's guide from some place more visible, e. g. Readme? Moving it to readme altogether would seem even nicer to me but I think people had reservations about that in the past. |
|
Maybe we need a |
same. I think @Mikolaj suggested to put it there.
What do other people do? It'd be good to not invent new approaches... |
|
To be honest, none of the things I have checked out have it anywhere, including various build tools and such which would be most likely to have it. I think it's usually on a web page or a support/documentation wiki. |
I'm very much in favor of |
GHC has it in their wiki. |
|
I moved support-window bits to If the wording is clear and the position is correct, we can merge this as a description of what we do now, and then open a new ticket to quarrel on what we really should be doing. |
E.g. the PR only touches documentation or tests, does refactorings, etc.
Include the following checklist in your PR:
[] Is this a PR that fixes CI? If so, it will need to be backported to older cabal release branches (ask maintainers for directions).Close #11608