Gentoo Archives: gentoo-dev

From: Ulrich Mueller <ulm@g.o>
To: gentoo-dev@l.g.o
Subject: [gentoo-dev] GLEP 83: EAPI deprecation
Date: Mon, 11 Jul 2022 19:26:37
Message-Id: uo7xv78pa@gentoo.org
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/.

Attachments

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

Replies

Subject Author
Re: [gentoo-dev] GLEP 83: EAPI deprecation Ulrich Mueller <ulm@g.o>
Re: [gentoo-dev] GLEP 83: EAPI deprecation Ulrich Mueller <ulm@g.o>