1 |
Please find below the first draft of GLEP 83 "EAPI deprecation". |
2 |
This tries to define criteria for deprecation and for banning of EAPIs |
3 |
by the Council. |
4 |
|
5 |
I have tried to model it in a way that the actual dates for at least |
6 |
EAPIs 4 and 5 are reproduced within a few months. To this end, the |
7 |
criteria depend on three parameters: |
8 |
|
9 |
- time between EAPI n+1 support by stable Portage and deprecation |
10 |
of EAPI n (24 months) |
11 |
- time between deprecation and ban (24 months) |
12 |
- fraction of ebuilds in the tree when banning (< 5 %, at present |
13 |
corresponding to about 1500 ebuilds) |
14 |
|
15 |
The first two parameters can be varied within a relatively wide range, |
16 |
without much influence on the timing for EAPIs 4 and 5. Combinations |
17 |
like 30/24 months, 30/18 months, 24/18 months, or even 36/12 months |
18 |
would work as well. I guess the question there is if we prefer a longer |
19 |
upgrade path and transition times, or a smaller number of EAPIs in the |
20 |
tree. |
21 |
|
22 |
A rendered version (which especially makes the backwards compatibility |
23 |
table readable) can be found here: |
24 |
https://github.com/ulm/glep/blob/glep-eapi-deprecation/glep-0083.rst |
25 |
|
26 |
Comments please. |
27 |
|
28 |
Ulrich |
29 |
|
30 |
|
31 |
--- |
32 |
GLEP: 83 |
33 |
Title: EAPI deprecation |
34 |
Author: Ulrich Müller <ulm@g.o> |
35 |
Type: Informational |
36 |
Status: Draft |
37 |
Version: 1 |
38 |
Created: 2022-06-30 |
39 |
Last-Modified: 2022-07-11 |
40 |
Post-History: 2022-07-11 |
41 |
Content-Type: text/x-rst |
42 |
--- |
43 |
|
44 |
|
45 |
Abstract |
46 |
======== |
47 |
|
48 |
Introduce standardized criteria for deprecation and banning of EAPIs. |
49 |
|
50 |
|
51 |
Motivation |
52 |
========== |
53 |
|
54 |
So far, old EAPIs were deprecated by the Gentoo Council in an ad-hoc |
55 |
manner. No fixed criteria were used, resulting in very different |
56 |
deprecation times after approval of newer EAPIs. Standardized criteria |
57 |
for deprecation and banning will make the life cycle of EAPIs more |
58 |
predictable. |
59 |
|
60 |
|
61 |
Specification |
62 |
============= |
63 |
|
64 |
A *deprecated EAPI* is no longer required for the upgrade path of |
65 |
users' systems. Its use is discouraged, and tools like pkgcheck will |
66 |
warn about this [#COUNCIL-20130409]_. |
67 |
|
68 |
A *banned EAPI* must no longer be used, neither for new ebuilds, nor |
69 |
for updating of existing ebuilds [#COUNCIL-20140311]_. |
70 |
|
71 |
The Gentoo Council will deprecate an EAPI when two newer EAPIs are |
72 |
supported by the stable version of Portage, and one of them has been |
73 |
supported for 24 months. |
74 |
|
75 |
The Gentoo Council will ban a deprecated EAPI when it is used by less |
76 |
than 5 % of ebuilds in the Gentoo repository, but no sooner than 24 |
77 |
months after its deprecation. |
78 |
|
79 |
EAPIs used in profiles are outside the scope of this GLEP. |
80 |
|
81 |
|
82 |
Rationale |
83 |
========= |
84 |
|
85 |
Timing of EAPI deprecation is a trade-off between different factors. |
86 |
On the one hand, the total number of EAPIs in active use should be |
87 |
limited; this will prevent the learning curve for new developers and |
88 |
contributors from becoming too steep and will help to reduce code |
89 |
complexity, e.g. in eclasses. |
90 |
|
91 |
On the other hand, an upgrade path to a stable system is guaranteed |
92 |
for one year, plus limited support for systems that are outdated more |
93 |
than a year [#COUNCIL-20091109]_. Therefore, previous EAPIs are still |
94 |
required during that time. A period of 24 months before deprecation |
95 |
has been chosen, which is more than the required minimum and will |
96 |
allow projects to support a longer upgrade path. |
97 |
|
98 |
Requiring two newer EAPIs before deprecation will allow ebuilds that |
99 |
are otherwise seldom updated to be bumped to the next but one EAPI |
100 |
immediately. |
101 |
|
102 |
A delay of 24 months between deprecation and ban will give ebuild |
103 |
authors enough time to update. This is especially relevant for |
104 |
overlays and downstream distributions. Since a banned EAPI is |
105 |
sufficient reason for updating an ebuild, an additional threshold of |
106 |
5 % is required, in order to keep the number of such updates (and bug |
107 |
reports requesting them) manageable. |
108 |
|
109 |
|
110 |
Backwards Compatibility |
111 |
======================= |
112 |
|
113 |
The following table compares the actual dates of deprecations and bans |
114 |
[#PMS-PROJECT]_ with the dates that would have resulted from the |
115 |
criteria proposed in this GLEP ("new date"). |
116 |
|
117 |
.. csv-table:: |
118 |
:header-rows: 2 |
119 |
:stub-columns: 1 |
120 |
:widths: auto |
121 |
:align: right |
122 |
|
123 |
EAPI,Portage,Gentoo repo,deprecated,deprecated,diff.,banned,banned,diff. |
124 |
,stable,usage < 5 %,actual date,new date,months,actual date,new date,months |
125 |
0,2005-12-26,2017-02-28,2014-02-25,2009-12-11,-50,2016-01-10,2017-02-28,+14 |
126 |
1,2007-12-11,2009-10-25,2013-04-09,2011-01-08,-27,2014-03-11,2013-01-08,-14 |
127 |
2,2009-01-08,2015-03-27,2013-04-09,2012-03-08,-13,2014-03-11,2015-03-27,+12 |
128 |
3,2010-03-08,2015-01-16,2014-02-25,2013-03-17,-11,2016-01-10,2015-03-17,-10 |
129 |
4,2011-03-17,2018-01-11,2015-10-11,2016-01-17,+3,2018-04-08,2018-01-17,-3 |
130 |
5,2012-12-11,2021-06-15,2018-05-13,2018-06-27,+1,2021-08-08,2021-06-15,-2 |
131 |
6,2016-01-17,2022-11-22 [*]_,2021-07-11,2021-07-05,0,,2023-07-05, |
132 |
7,2018-06-27,,,,,,, |
133 |
8,2021-07-05,,,,,,, |
134 |
|
135 |
.. [*] Extrapolated date, obtained by fitting data between 2021-01-01 |
136 |
and 2022-07-11 with an exponential function. |
137 |
|
138 |
|
139 |
References |
140 |
========== |
141 |
|
142 |
.. [#COUNCIL-20130409] "EAPI deprecation", |
143 |
Gentoo Council meeting summary 2013-04-09 |
144 |
(https://projects.gentoo.org/council/meeting-logs/20130409-summary.txt). |
145 |
Note: The original quote says "Repoman" instead of "pkgcheck". |
146 |
|
147 |
.. [#COUNCIL-20140311] "Ban on EAPI 1 and 2 should extend to updating |
148 |
EAPI in existing ebuilds", Gentoo Council meeting summary 2014-03-11 |
149 |
(https://projects.gentoo.org/council/meeting-logs/20140311-summary.txt) |
150 |
|
151 |
.. [#COUNCIL-20091109] "Upgrade path for old systems", |
152 |
Gentoo Council meeting summary 2009-11-09 |
153 |
(https://projects.gentoo.org/council/meeting-logs/20091109-summary.txt) |
154 |
|
155 |
.. [#PMS-PROJECT] Gentoo Package Manager Specification project |
156 |
(https://wiki.gentoo.org/wiki/Project:Package_Manager_Specification#EAPI_life_cycle) |
157 |
|
158 |
|
159 |
Copyright |
160 |
========= |
161 |
|
162 |
This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 |
163 |
International License. To view a copy of this license, visit |
164 |
https://creativecommons.org/licenses/by-sa/4.0/. |