diff options
| author | Andreas Enge <andreas@enge.fr> | 2026-05-05 18:11:51 +0200 |
|---|---|---|
| committer | Andreas Enge <andreas@enge.fr> | 2026-06-05 09:44:43 +0200 |
| commit | a591df482f2d7e226566a419649fdf8d4333a4d1 (patch) | |
| tree | e9743c1f506e4fef67e1b718d105f0be9671daa7 | |
| parent | dc38db3c2d9775a04fcc12008d7ac1ca00269335 (diff) | |
doc: Transcribe GCD 006.
* doc/contributing.texi (Deprecation Policy): Update according to GCD 006.
Change-Id: If48d74c8ed94f5040d842de03150a3ee673f841d
| -rw-r--r-- | doc/contributing.texi | 105 |
1 files changed, 74 insertions, 31 deletions
diff --git a/doc/contributing.texi b/doc/contributing.texi index 6ad271cf432..0da29d4c68b 100644 --- a/doc/contributing.texi +++ b/doc/contributing.texi | |||
| @@ -3216,7 +3216,10 @@ user survey before enacting a plan. | |||
| 3216 | @cindex package deprecation | 3216 | @cindex package deprecation |
| 3217 | @item Package name changes | 3217 | @item Package name changes |
| 3218 | When a package name changes, it must remain available under its old name | 3218 | When a package name changes, it must remain available under its old name |
| 3219 | for @b{at least one year}. For example, @code{go-ipfs} was renamed to | 3219 | for @b{at least six months}; the deprecation date should be stated in |
| 3220 | a comment in the code to ease the final removal. | ||
| 3221 | |||
| 3222 | For example, @code{go-ipfs} was renamed to | ||
| 3220 | @code{kubo} following a decision made upstream; to communicate the name | 3223 | @code{kubo} following a decision made upstream; to communicate the name |
| 3221 | change to users, the package module provided this definition: | 3224 | change to users, the package module provided this definition: |
| 3222 | 3225 | ||
| @@ -3240,44 +3243,84 @@ package name as deprecated. | |||
| 3240 | @cindex package removal policy | 3243 | @cindex package removal policy |
| 3241 | @anchor{package-removal-policy} | 3244 | @anchor{package-removal-policy} |
| 3242 | @item Package removal | 3245 | @item Package removal |
| 3243 | Packages whose upstream developers have declared as having reached ``end | ||
| 3244 | of life'' or being unmaintained may be removed; likewise, packages that | ||
| 3245 | have been @b{failing to build for two months or more} may be removed. | ||
| 3246 | 3246 | ||
| 3247 | There is no formal deprecation mechanism for this case, unless a | 3247 | How packages may be removed depends on their build status and on their |
| 3248 | replacement exists, in which case the @code{define-deprecated-package} | 3248 | position in the package graph. |
| 3249 | macro mentioned above can be used. | 3249 | @itemize |
| 3250 | @item Removal of packages that do not build | ||
| 3251 | |||
| 3252 | A package that does not build becomes a removal candidate immediately. | ||
| 3253 | A pull request removing such a package should be filed on Codeberg | ||
| 3254 | with the @samp{deprecation} label. Additional justification for the | ||
| 3255 | (non-)importance, obsolescence etc. of the package is welcome, but not | ||
| 3256 | required. | ||
| 3257 | Such a pull request may be merged @b{at least three weeks} later if there | ||
| 3258 | is no opposition to the removal or if nobody has volunteered to repair the | ||
| 3259 | affected packages. | ||
| 3260 | |||
| 3261 | @item Removal of building packages | ||
| 3262 | |||
| 3263 | There are various reasons why packages may become removal candidates | ||
| 3264 | although they still build: For instance we may have a newer version of | ||
| 3265 | the same package in Guix, maintenance has stopped upstream, or the package | ||
| 3266 | is not adequately maintained in Guix. | ||
| 3267 | |||
| 3268 | @table @asis | ||
| 3269 | @item | ||
| 3270 | Removal candidates that are building leaf packages | ||
| 3271 | |||
| 3272 | Leaf packages may be removed following the above process, assuming that | ||
| 3273 | there is no opposition to the removal or that consensus for the removal | ||
| 3274 | has been reached. | ||
| 3275 | Leaf packages that are typically installed into user profiles (for | ||
| 3276 | instance applications, but also packages used in a service) should | ||
| 3277 | not be removed unless there are particularly good reasons, such as | ||
| 3278 | security implications. | ||
| 3279 | |||
| 3280 | @item | ||
| 3281 | Removal candidates that are building packages with dependents | ||
| 3282 | |||
| 3283 | Removing building packages on which other packages depend causes more | ||
| 3284 | disruption than removing leaf packages, since at the same time all | ||
| 3285 | dependent packages need to be removed. This may still be desirable for | ||
| 3286 | overarching reasons. For instance, we want to remove older versions of | ||
| 3287 | packages for which newer versions are already packaged, remove packages | ||
| 3288 | that are unmaintained or have reached end of life upstream, or that suffer | ||
| 3289 | from security vulnerabilities. | ||
| 3290 | |||
| 3291 | In this case, the removal candidate may be removed together with all | ||
| 3292 | packages depending on it following the above procedure. If the removal | ||
| 3293 | candidate falls into the realm of a team, this team must be notified, | ||
| 3294 | and consensus shall be sought about the removal in particular with this | ||
| 3295 | team. Reasonable efforts shall be made beforehand to update or otherwise | ||
| 3296 | preserve dependent packages. | ||
| 3250 | 3297 | ||
| 3251 | If the package being removed is a ``leaf'' (no other packages depend on | 3298 | @end table |
| 3252 | it), it may be removed after a @b{one-month review period} of the patch | 3299 | @end itemize |
| 3253 | removing it (this applies even when the removal has additional | ||
| 3254 | motivations such as security problems affecting the package). | ||
| 3255 | 3300 | ||
| 3256 | @quotation Note | 3301 | @quotation Note |
| 3257 | Learn about pending package removals by checking | 3302 | Learn about pending package removals by checking |
| 3258 | @uref{https://codeberg.org/guix/guix/issues?labels=445131, issues and | 3303 | @uref{https://codeberg.org/guix/guix/pulls?labels=445131, |
| 3259 | pull requests with the @samp{deprecation} label}. | 3304 | pull requests with the @samp{deprecation} label}. |
| 3260 | @end quotation | 3305 | @end quotation |
| 3261 | 3306 | ||
| 3262 | If the package has many dependent packages---as is the case for example with | 3307 | @item Moving packages between modules |
| 3263 | Python version@tie{}2---the relevant team must propose a deprecation | 3308 | |
| 3264 | removal agenda and seek consensus with other packagers for @b{at least | 3309 | When a package is moved from one module to another one, the corresponding |
| 3265 | one month}. It may also invite feedback from the broader user | 3310 | variable @var{name} should be marked as deprecated in the old location |
| 3266 | community, for example through a survey. Removal of all impacted | 3311 | for @b{at least six months}, for instance by adding |
| 3267 | packages may be gradual, spanning multiple months, to accommodate all | 3312 | @findex define-deprecated/public-alias |
| 3268 | use cases. | 3313 | @lisp |
| 3269 | 3314 | (define-deprecated/public-alias @var{name} | |
| 3270 | When the package being removed is considered popular, whether or not it | 3315 | (@@ (gnu packages @var{new-module} @var{name})) |
| 3271 | is a leaf, its deprecation must be announced as an entry in | 3316 | @end lisp |
| 3272 | @code{etc/news.scm}. | 3317 | in @var{gnu/packages/old-module.scm}. |
| 3273 | 3318 | ||
| 3274 | @item Package upgrade | 3319 | @item Package additions |
| 3275 | In the case of packages with many dependents and/or many users, an | 3320 | |
| 3276 | upgrade may be treated like the @emph{removal} of the previous version. | 3321 | Packages submitted for inclusion must not fulfill the criteria to become |
| 3277 | 3322 | a removal candidate immediately after addition. | |
| 3278 | Examples include major version upgrades of programming language | 3323 | |
| 3279 | implementations, as we've seen above with Python, and major upgrades of | ||
| 3280 | ``big'' libraries such as Qt or GTK. | ||
| 3281 | 3324 | ||
| 3282 | @cindex service deprecation | 3325 | @cindex service deprecation |
| 3283 | @item Services | 3326 | @item Services |
