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/. |