Gentoo Archives: gentoo-dev

From: Ulrich Mueller <ulm@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] GLEP 83: EAPI deprecation
Date: Sun, 31 Jul 2022 17:27:26
Message-Id: ufsihtcpa@gentoo.org
In Reply to: [gentoo-dev] GLEP 83: EAPI deprecation by Ulrich Mueller
1 New version, with following changes:
2
3 - Use a list for the deprecation criteria
4 - CSV table converted into simple table, for better readability of the
5 source code
6 - Updated EAPI 6 data, slightly different method for fitting it
7
8
9 ---
10 GLEP: 83
11 Title: EAPI deprecation
12 Author: Ulrich Müller <ulm@g.o>
13 Type: Informational
14 Status: Draft
15 Version: 1
16 Created: 2022-06-30
17 Last-Modified: 2022-07-31
18 Post-History: 2022-07-11, 2022-07-31
19 Content-Type: text/x-rst
20 ---
21
22
23 Abstract
24 ========
25
26 Introduce standardized criteria for deprecation and banning of EAPIs.
27
28
29 Motivation
30 ==========
31
32 So far, old EAPIs were deprecated by the Gentoo Council in an ad-hoc
33 manner. No fixed criteria were used, resulting in very different
34 deprecation times after approval of newer EAPIs. Standardized
35 criteria for deprecation and banning will make the life cycle of EAPIs
36 more predictable.
37
38
39 Specification
40 =============
41
42 A *deprecated EAPI* is no longer required for the upgrade path of
43 users' systems. Its use is discouraged, and tools like pkgcheck will
44 warn about this [#COUNCIL-20130409]_.
45
46 A *banned EAPI* must no longer be used, neither for new ebuilds, nor
47 for updating of existing ebuilds [#COUNCIL-20140311]_.
48
49 The Gentoo Council will deprecate an EAPI when
50
51 * two newer Council-approved EAPIs are supported by the stable version
52 of Portage, and
53 * one of them has been supported for 24 months.
54
55 The Gentoo Council will ban a deprecated EAPI when
56
57 * 24 months have passed since its deprecation, and
58 * it is used by less than 5 % of ebuilds in the Gentoo repository.
59
60 EAPIs used in profiles are outside the scope of this GLEP.
61
62
63 Rationale
64 =========
65
66 Timing of EAPI deprecation is a trade-off between different factors.
67 On the one hand, the total number of EAPIs in active use should be
68 limited; this will prevent the learning curve for new developers and
69 contributors from becoming too steep and will help to reduce code
70 complexity, e.g. in eclasses.
71
72 On the other hand, an upgrade path to a stable system is guaranteed
73 for one year, plus limited support for systems that are outdated more
74 than a year [#COUNCIL-20091109]_. Therefore, previous EAPIs are still
75 required during that time. A period of 24 months before deprecation
76 has been chosen, which is more than the required minimum and will
77 allow projects to support a longer upgrade path.
78
79 Requiring two newer EAPIs before deprecation will allow ebuilds that
80 are otherwise seldom updated to be bumped to the next but one EAPI
81 immediately.
82
83 A delay of 24 months between deprecation and ban will give ebuild
84 authors enough time to update. This is especially relevant for
85 overlays and downstream distributions. Since a banned EAPI is
86 sufficient reason for updating an ebuild, an additional threshold of
87 5 % is required, in order to keep the number of such updates (and bug
88 reports requesting them) manageable.
89
90
91 Backwards Compatibility
92 =======================
93
94 The following table compares the actual dates of deprecations and bans
95 [#PMS-PROJECT]_ with the dates that would have resulted from the
96 criteria proposed in this GLEP ("new date").
97
98 ==== ========== =========== =========== ========== ====== =========== ========== ======
99 EAPI Portage Gentoo repo deprecated diff. banned diff.
100 ---- ---------- ----------- ----------------------- ------ ----------------------- ------
101 \ stable usage < 5 % actual date new date months actual date new date months
102 ==== ========== =========== =========== ========== ====== =========== ========== ======
103 0 2005-12-26 2017-02-28 2014-02-25 2009-12-11 -50 2016-01-10 2017-02-28 +14
104 1 2007-12-11 2009-10-25 2013-04-09 2011-01-08 -27 2014-03-11 2013-01-08 -14
105 2 2009-01-08 2015-03-27 2013-04-09 2012-03-08 -13 2014-03-11 2015-03-27 +12
106 3 2010-03-08 2015-01-16 2014-02-25 2013-03-17 -11 2016-01-10 2015-03-17 -10
107 4 2011-03-17 2018-01-11 2015-10-11 2016-01-17 +3 2018-04-08 2018-01-17 -3
108 5 2012-12-11 2021-06-15 2018-05-13 2018-06-27 +1 2021-08-08 2021-06-15 -2
109 6 2016-01-17 2022-11-06 2021-07-11 2021-07-05 0 2023-07-05
110 [*]_
111 7 2018-06-27
112 8 2021-07-05
113 ==== ========== =========== =========== ========== ====== =========== ========== ======
114
115 .. [*] Extrapolated date, obtained by fitting data between 2021-01-01
116 and 2022-07-31 with an exponential function.
117
118
119 References
120 ==========
121
122 .. [#COUNCIL-20130409] "EAPI deprecation",
123 Gentoo Council meeting summary 2013-04-09
124 (https://projects.gentoo.org/council/meeting-logs/20130409-summary.txt).
125 Note: The original quote says "Repoman" instead of "pkgcheck".
126
127 .. [#COUNCIL-20140311] "Ban on EAPI 1 and 2 should extend to updating
128 EAPI in existing ebuilds", Gentoo Council meeting summary 2014-03-11
129 (https://projects.gentoo.org/council/meeting-logs/20140311-summary.txt)
130
131 .. [#COUNCIL-20091109] "Upgrade path for old systems",
132 Gentoo Council meeting summary 2009-11-09
133 (https://projects.gentoo.org/council/meeting-logs/20091109-summary.txt)
134
135 .. [#PMS-PROJECT] Gentoo Package Manager Specification project
136 (https://wiki.gentoo.org/wiki/Project:Package_Manager_Specification#EAPI_life_cycle)
137
138
139 Copyright
140 =========
141
142 This work is licensed under the Creative Commons Attribution-ShareAlike 4.0
143 International License. To view a copy of this license, visit
144 https://creativecommons.org/licenses/by-sa/4.0/.

Attachments

File name MIME type
signature.asc application/pgp-signature

Replies

Subject Author
Re: [gentoo-dev] GLEP 83: EAPI deprecation Thomas Bracht Laumann Jespersen <t@×××××××.xyz>
[gentoo-dev] GLEP 83 [v3]: EAPI deprecation Ulrich Mueller <ulm@g.o>