You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Refine GHC deprecation policy
* Update docs/support/ghc-version-support.md
Co-authored-by: Michael Peyton Jones <[email protected]>
* Update docs/support/ghc-version-support.md
Co-authored-by: Michael Peyton Jones <[email protected]>
* Reword to support status, as this is mentioned above
* Include ghcup recommended version in support discussion
* reword
* Reword
---------
Co-authored-by: Michael Peyton Jones <[email protected]>
Co-authored-by: Fendor <[email protected]>
Co-authored-by: soulomoon <[email protected]>
Copy file name to clipboardExpand all lines: docs/support/ghc-version-support.md
+45-18
Original file line number
Diff line number
Diff line change
@@ -75,26 +75,62 @@ Major versions of GHC which are not supported by HLS on master are extremely unl
75
75
76
76
## GHC version deprecation policy
77
77
78
-
### Major versions
78
+
### Base policy
79
79
80
-
A major GHC version is a "legacy" version if it is 3 or more major versions behind the latest GHC version that is
80
+
This is the static part of the policy that can be checked by a machine.
81
81
82
-
1. Fully supported by HLS
83
-
2. Used in the a Stackage LTS
82
+
#### Major versions
84
83
85
-
For example, if 9.2 is the latest major version fully supported by HLS and used in a Stackage LTS, then the 8.8 major version and older will be legacy.
84
+
HLS will support major versions of GHC until they are older than _both_
86
85
87
-
HLS will support all non-legacy major versions of GHC.
86
+
1. The major version of GHC used in the current Stackage LTS; and
87
+
2. The major version of GHC recommended by GHCup
88
88
89
-
### Minor versions
89
+
For example, if
90
+
91
+
1. Stackage LTS uses GHC 9.2; and
92
+
2. GHCUp recommends GHC 9.4
93
+
94
+
then HLS will support back to GHC 9.2.
95
+
96
+
#### Minor versions
90
97
91
98
For the latest supported major GHC version we will support at least 2 minor versions.
92
99
93
100
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).
94
101
95
-
### Announcements
102
+
### Extended policy
103
+
104
+
This is the part of the policy that needs evaluation by a human and possibly followed
105
+
by a discussion.
106
+
107
+
#### Ecosystem factors
108
+
109
+
To establish and apply the policy we take the following ecosystem factors into account:
110
+
111
+
- Support status of HLS
112
+
- The most recent [stackage](https://www.stackage.org/) LTS snapshot
113
+
- The GHC version recommended by GHCup
114
+
- The GHC versions used in the most popular [linux distributions](https://repology.org/project/ghc/versions)
115
+
- The reliability of different ghc versions on the major operating systems (Linux, Windows, MacOS)
116
+
- The [Haskell Survey results](https://taylor.fausak.me/2022/11/18/haskell-survey-results/#s2q4)
96
117
97
-
We will warn users about the upcoming deprecation of a GHC version in the notes of the release *prior* to the deprecation itself.
118
+
### Supporting a GHC version beyond normal deprecation time
119
+
120
+
In cases where the base policy demands a deprecation, but ecosystem factors
121
+
suggest that it's still widely used (e.g. last [Haskell Survey results](https://taylor.fausak.me/2022/11/18/haskell-survey-results/#s2q4)),
122
+
the deprecation should be suspended for the next release and the situation be re-evaluated for the release after that.
123
+
124
+
When we decide to keep on an old version, we should track it as follows:
125
+
126
+
1. open a ticket on HLS issue tracker wrt discussing to deprecate said GHC version
127
+
- explain the reason the GHC version wasn't deprecated (context)
128
+
- explain the maintenance burden it causes (reason)
129
+
- evaluate whether it impacts the next HLS release (impact)
130
+
2. discuss whether ecosystem factors changed
131
+
- e.g. if Haskell Survey results show that 25% or more of users are still on the GHC version in question, then dropping should be avoided
132
+
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
133
+
4. if no help or funding was received within 2 releases (say, e.g. 3-6 months), then drop the version regardless
98
134
99
135
### Why deprecate older versions of GHC?
100
136
@@ -107,12 +143,3 @@ We will warn users about the upcoming deprecation of a GHC version in the notes
107
143
So we need to limit the GHC support to save maintainers and contributors time and reduce CI resources.
108
144
109
145
At same time we aim to support the right balance of GHC versions to minimize the impact on users.
110
-
111
-
### What factors do we take into account when deprecating a version?
112
-
113
-
To establish and apply the policy we take into account:
114
-
115
-
- Completeness: support includes all plugins and features
116
-
- The most recent [stackage](https://www.stackage.org/) LTS snapshot
117
-
- The GHC versions used in the most popular [linux distributions](https://repology.org/project/ghc/versions)
118
-
- The reliability of different ghc versions on the major operating systems (Linux, Windows, MacOS)
0 commit comments