Skip to content
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

Refine GHC deprecation policy #3438

Merged
merged 8 commits into from
Jun 15, 2024
Merged

Conversation

hasufell
Copy link
Member

@hasufell hasufell commented Jan 4, 2023

@hasufell
Copy link
Member Author

hasufell commented Jan 4, 2023

The existing policy already demands to consider ecosystem factors, so adding the Haskell Survey as an input seems like a no-brainer (because it's one of the largest indicators for ecosystem questions).

Additionally, it seems it wasn't very clear that there are two different parts of the policy: one that can be statically checked and one that can't. And that both parts need to be considered. As such, I tried to make that clearer by sectioning them.

Copy link
Collaborator

@fendor fendor left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This addition to the deprecation policy seems sensible to me.

@hasufell
Copy link
Member Author

hasufell commented Jan 7, 2023

@michaelpj any opinions?

Copy link
Collaborator

@michaelpj michaelpj left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fine, just some prose suggestions.


For the latest supported major GHC version we will support at least 2 minor versions.

For the rest of the supported major GHC versions, we will support at least the latest minor version in Stackage LTS (so 1 minor version).

### Extended policy
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the base/extended distinction is confusing and you could just drop these headers. It's fairly clear that the later sections talk about exceptions to the rules.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm, I think we're having a slightly different perception.

I'm not seeing it as an exception rule that can be applied if someone speaks up about it.

Someone actually updating the supported GHC versions is required to check/consided both.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay, yes, I agree with that. Then maybe we just want to add after line 81: "HLS may continue to support legacy GHC versions, see the section below on 'Supporting legacy GHC versions'" or something?


To establish and apply the policy we also take into account:

- Completeness: support includes all plugins and features
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is already included above

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't understand this comment

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Included where?

Do you mean

Support status (see the support policy below for more details):

  • "initial support": support for this GHC version is underway, but it is not ready to be released yet
  • "basic support": this GHC version is currently actively supported, and all tier 1 plugins work
  • "full support": this GHC version is currently actively supported, and most tier 2 plugins work
  • "deprecated": this GHC version was supported in the past, but is now deprecated

?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I rephrased this to make sure it is clear we are referring to the HLS support status.

Also, I made clear that we aim to list all factors.

To establish and apply the policy we also take into account:

- Completeness: support includes all plugins and features
- The most recent [stackage](https://www.stackage.org/) LTS snapshot
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ditto

- The most recent [stackage](https://www.stackage.org/) LTS snapshot
- The GHC versions used in the most popular [linux distributions](https://repology.org/project/ghc/versions)
- The reliability of different ghc versions on the major operating systems (Linux, Windows, MacOS)
- The [Haskell Survey results](https://taylor.fausak.me/2022/11/18/haskell-survey-results/#s2q4)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think these three points are the interesting ones. I'd move them into the next section where they're used.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I also don't understand this suggestion. This is the section about Ecosystem factors. Why would that go into the next section, which explains the process of supporting older GHCs?

Comment on lines 106 to 107
In cases where the base policy demands a deprecation, but ecosystem factors
suggest that it's still widely used (e.g. last [Haskell Survey results](https://taylor.fausak.me/2022/11/18/haskell-survey-results/#s2q4)), the deprecation should be suspended for the next release and the situation be re-evaluated for the release after that.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
In cases where the base policy demands a deprecation, but ecosystem factors
suggest that it's still widely used (e.g. last [Haskell Survey results](https://taylor.fausak.me/2022/11/18/haskell-survey-results/#s2q4)), the deprecation should be suspended for the next release and the situation be re-evaluated for the release after that.
Sometimes the policy suggests that we should deprecate a version of GHC, but doing so would be particularly harmful for our users because it remains very widely used. In cases like this we can decide to keep supporting that GHC version, but this decision should be revisited each time we do a release.
To determine whether we should keep supporting a GHC version we can use
- The GHC versions used in the most popular [linux distributions](https://repology.org/project/ghc/versions)
- The [Haskell Survey results](https://taylor.fausak.me/2022/11/18/haskell-survey-results/#s2q4)
- Anecdotal evidence about he reliability of different GHC versions on the major operating systems (Linux, Windows, MacOS), e.g. noting the presence of serious bugs

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is mixing up things. Ecosystem factors should be its own section and be referenced from this section explaining the process (not criteria) of supporting an older GHC version.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree and think this separation helps the reader understanding what is going on.

docs/support/ghc-version-support.md Outdated Show resolved Hide resolved
docs/support/ghc-version-support.md Outdated Show resolved Hide resolved
Comment on lines +117 to +129
3. if dropping is still undesired, but maintenance burden is also high, then set out a call-for-help and contact HF for additional funding to support this GHC version
4. if no help or funding was received within 2 releases (say, e.g. 3-6 months), then drop the version regardless
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm fine with this but we could also leave it out and just experiment with various ways of asking for help before we write it down

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

True

@hasufell
Copy link
Member Author

@michaelpj I think I'm not quite getting what you're proposing. I feel the sections are fine. The wording can definitely improved, but it's a running document.

@fendor
Copy link
Collaborator

fendor commented Feb 11, 2023

@michaelpj is there still some open discussion here?

@fendor
Copy link
Collaborator

fendor commented Jun 14, 2024

@michaelpj I think the wording and policy is fine and we should merge this.

Would you mind reading through one more time?

@fendor fendor requested a review from soulomoon June 15, 2024 09:04
Copy link
Collaborator

@soulomoon soulomoon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I reword it a bit more. But I think we should still wait for @michaelpj to confirm

@michaelpj
Copy link
Collaborator

I reworded it some more. I also removed the section about announcements, since we haven't been doing that, and I think it seems in practice to not be that big a deal.

@michaelpj michaelpj enabled auto-merge (squash) June 15, 2024 10:54
@michaelpj michaelpj merged commit da3d7f2 into haskell:master Jun 15, 2024
21 checks passed
dsaenztagarro added a commit to dsaenztagarro/haskell-language-server that referenced this pull request Jun 26, 2024
* master: (36 commits)
  Migrate indexHieFile progress notification to ProgressReporting API (haskell#4205)
  Remove final allow-newer for 9.10 (haskell#4329)
  Remove unused exactprint dep
  More stylish
  Use newer cabal-fmt, partially lift ghc version restriction
  stylish
  Cleanup CI configs and cabal files
  More no-op code cleanup
  Remove no-longer-needed compat code, remove unused stuff
  Remove pre-multi component junk for GHC <= 9.2
  Fix stylish
  Fix a few things
  Remove from CI
  Update docs
  Fix loss of 9.2 GHC version
  More CPP
  WIP evaluate CPP
  Prepare release 2.9.0.0 (haskell#4319)
  Add completion for import fields in cabal files (haskell#4305)
  Refine GHC deprecation policy (haskell#3438)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants