/[gentoo]/xml/htdocs/proj/en/glep/glep-0049.txt
Gentoo

Diff of /xml/htdocs/proj/en/glep/glep-0049.txt

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.1 Revision 1.4
1GLEP: 49 1GLEP: 49
2Title: Alternative Package Manager requirements 2Title: Alternative Package Manager requirements
3Version: $Revision: 1.1 $ 3Version: $Revision: 1.4 $
4Last-Modified: $Date: 2006/05/20 12:51:08 $ 4Last-Modified: $Date: 2006/09/05 20:54:30 $
5Author: Paul de Vrieze <pauldv@gentoo.org>, 5Author: Paul de Vrieze <pauldv@gentoo.org>,
6Status: Draft 6Status: Rejected
7Type: Standards Track 7Type: Standards Track
8Content-Type: text/x-rst 8Content-Type: text/x-rst
9Created: 18-May-2006 9Created: 18-May-2006
10Post-History: 20-May-2006 10Post-History: 19-May-2006, 6-Sep-2006
11
12Status
13======
14
15The council rejected this GLEP in favor of starting from a package manager
16API and requiring Gentoo package managers in the tree to support that
17API. (That API is still pending, however.)
11 18
12 19
13Abstract 20Abstract
14======== 21========
15 22
18 25
19 26
20Motivation 27Motivation
21========== 28==========
22 29
23To set a standard that package managers that seek gentoo project approval and 30To set a standard that package managers that seek Gentoo project approval and
24support should adhere to. 31support should adhere to.
25 32
26 33
27Rationale 34Rationale
28========= 35=========
29 36
30Currently portage is showing its age. The code of portage does not seem to be 37Currently Portage is showing its age. The code of Portage does not seem to be
31salvageable for new versions. There are two known alternative package managers 38salvageable for new versions. As of the date of publication, there are two known
32that claim a level of portage compatibility. These alternatives are `paludis`_ 39alternative package managers that claim a level of Portage compatibility. These
33and `pkgcore`_. Before these alternatives are developed further, a set of rules 40alternatives are `paludis`_ and `pkgcore`_. Before these alternatives are
34should be created to level the playing field and ensuring that decisions can be 41developed further, a set of rules should be created to level the playing field
35made clearly. 42and ensuring that decisions can be made clearly.
36 43
37 44
38Backwards Compatibility 45Backwards Compatibility
39======================= 46=======================
40 47
49transition from one category to another, it can not be in two categories at the 56transition from one category to another, it can not be in two categories at the
50same time. It can be in a state of transition though. 57same time. It can be in a state of transition though.
51 58
52*Primary Package Manager* 59*Primary Package Manager*
53 There is one primary package manager. Currently this position is held by 60 There is one primary package manager. Currently this position is held by
54 portage. The primary package manager is assigned by the council and all 61 Portage. The primary package manager is assigned by the council and all
55 packages in the official tree must be installable by a useable version of the 62 packages in the official tree must be installable by a usable version of the
56 primary package manager. 63 primary package manager.
57 64
58*Candidate Primary Package Managers* 65*Candidate Primary Package Managers*
59 A candidate Primary Package Manager does aim, or show an aim, at replacing 66 A candidate Primary Package Manager does aim, or show an aim, at replacing
60 the current primary package manager. At a point where the package manager is 67 the current primary package manager. At a point where the package manager is
61 deemed stable a decision must be made whether this package manager should 68 deemed stable a decision must be made whether this package manager should
62 become the new primary package manager. At that point the `primary package 69 become the new primary package manager. At that point the `Primary package
63 manager transition phase`_ starts. 70 manager transition phase`_ starts.
64 71
65*Secondary Package Managers* 72*Secondary Package Managers*
66 A secondary package manager is a package manager that coexists with the 73 A secondary package manager is a package manager that coexists with the
67 primary package manager, while not aiming to replace it. Package managers 74 primary package manager, while not aiming to replace it. Examples of package
68 that would fall into this category are: 75 managers that would fall into this category are:
69 76
70 - Experimental package managers. Package managers whose purpose it is to try 77 - Experimental package managers. Package managers whose purpose it is to try
71 out new features. 78 out new features.
72 79
73 - Focussed package managers. For example a package manager that allows the 80 - Focused package managers. For example a package manager that allows the
74 use of rpm formatted binary packages would be an example. 81 use of RPM formatted binary packages would be an example.
82
83 - Alternate package managers. Package managers that aim to coexist with the
84 primary package manager. They might for example offer a nicer user
85 interface than the primary package manager (e.g. show a cow instead of
86 compilation messages).
75 87
76 88
77*Third Party Package Managers* 89*Third Party Package Managers*
78 A third party package manager is any package manager that lacks recognition 90 A third party package manager is any package manager that lacks recognition
79 from gentoo as being in any other category. A third party package manager may 91 from Gentoo as being in any other category. A third party package manager may
80 or may not have a gentoo package, but is not supported beyond that. 92 or may not have a Gentoo package, but is not supported beyond that.
81 93
82 94
83Package manager requirements 95Package manager requirements
84============================ 96============================
85 97
86As a package manager is in a state of higher support there are higher 98As a package manager is in a state of higher support there are higher
87requirements to it. The purpose of these requirements is to ensure the unity of 99requirements to it. The purpose of these requirements is to ensure the unity of
88the distribution and the package tree. For this purpose it is needed that there 100the distribution and the package tree. For this purpose it is needed that there
89is only one primary package manager. 101is only one primary package manager. This is from gentoo's perspective. From a
102user perspective it is perfectly possible to use another package
103manager. Candidate primary package managers and secondary package managers are
104also supported in regards to bugs etc.
90 105
91 106
92primary package manager requirements 107Primary package manager requirements
93------------------------------------ 108------------------------------------
94 109
95The primary package manager is the package manager that sets the standards for 110The primary package manager is the package manager that sets the standards for
96the tree. All ebuilds in the tree must function with the primary package 111the tree. All ebuilds in the tree must function with the primary package
97manager. As the primary package manager sets the standard it does not have to 112manager. As the primary package manager sets the standard it does not have to
98maintain compatibility with other package managers. 113maintain compatibility with other package managers. This does not mean that the
114actual implementation is the standard, but that the maintainers have the ability
115to define new standards, together with the other involved gentoo projects.
99 116
100The primary package manager does however have the responsibility that it must be 117The primary package manager does however have the responsibility that it must be
101very stable. The primary package manager must maintain compatibility with old 118very stable. The primary package manager must maintain compatibility with old
102versions of itself for extended periods of time. This compatibilty time is set 119versions of itself for extended periods of time. This compatibility time is set
103by the council. The suggested time would be one year from the point that there 120by the council. The suggested time would be one year from the point that there
104is a compatible stable version for all supported architectures. 121is a compatible stable version for all supported architectures.
105 122
106Another compatibilty requirement for the primary package manager is a limited 123Another compatibility requirement for the primary package manager is a limited
107forward compatibility. It must always be possible to transition from the 124forward compatibility. It must always be possible to transition from the
108unstable version of the primary package manager to a stable version. This may be 125unstable version of the primary package manager to a stable version. This may be
109done either by first introducing reading compatibility for a new format and only 126done either by first introducing reading compatibility for a new format and only
110having write support later. Another way would be the provision of a conversion 127having write support later. Another way would be the provision of a conversion
111tool that ensures that the on disk information maintained by the package manager 128tool that ensures that the on disk information maintained by the package manager
112is supported by the stable package manager. 129is supported by the stable package manager.
113 130
131The primary package manager maintainers further have the responsibility to allow
132competition. This means that reasonable patches from the maintainers of
133secondary or candidate primary package managers must be applied, given that
134these patches are as independent of that package manager as possible.
135
114The primary package manager is maintained on official gentoo infrastructure, 136The primary package manager is maintained on official Gentoo infrastructure,
115under control of gentoo developers. 137under control of Gentoo developers.
116 138
117 139
118candidate primary package manager requirements 140Candidate primary package manager requirements
119------------------------------------------------ 141------------------------------------------------
120 142
121A candidate primary package manager aims to replace the primary package 143A candidate primary package manager aims to replace the primary package
122manager. The council is responsible for deciding whether this is done. The 144manager. The council is responsible for deciding whether this is done. The
123requirements are there to ensure that it is actually possible to transition a 145requirements are there to ensure that it is actually possible to transition a
128usable by) the candidate primary package manager. 150usable by) the candidate primary package manager.
129 151
130Second, there must be a test path. It must be possible for the developers to 152Second, there must be a test path. It must be possible for the developers to
131test out the candidate primary package manager on their working systems. This 153test out the candidate primary package manager on their working systems. This
132means that the transition path must exist. This also means that there are no 154means that the transition path must exist. This also means that there are no
133serious obstacles for reverting to the current primary package manager. 155serious obstacles for reverting to the current primary package manager. This
156reverting must also be usable when it is decided that the candidate will not
157become primary package manager, for example because serious design flaws or bugs
158were found. Ideally, the Candidate Primary Package Manager and the Primary
159Package Manager can be installed simultaneously. If not, clear instructions must
160be provided for both ways of transitioning.
134 161
135Third, there must exist an ebuild test path. It must be possible for package 162Third, there must exist an ebuild test path. It must be possible for package
136managers to test ebuilds in one tree for both the primary as well as the 163managers to test ebuilds in one tree for both the primary as well as the
137candidate primary package manager. It is not an issue if this requires a special 164candidate primary package manager. It is not an issue if this requires a special
138mode for the candidate primary package manager. It is not an issue either if 165mode for the candidate primary package manager. It is not an issue either if
139compatibilty can be achieved by unmerging the package in the candidate primary 166compatibility can be achieved by having the candidate primary package manager
140package manager. 167unmerge the package.
141 168
142Fourth, there must be support. This means that the package manager is actively 169Fourth, there must be support. This means that the package manager is actively
143maintained under control of gentoo. If it is not maintained on gentoo 170maintained under control of Gentoo. If it is not maintained on Gentoo
144infrastructure, the means must be there to move the package manager, with its 171infrastructure, the means must be there to move the package manager, with its
145change history, to gentoo infrastructure. This means that it must be maintained 172change history, to Gentoo infrastructure. This means that it must be maintained
146on a gentoo supported versioning system, or on a version system whose history 173on a Gentoo supported versioning system, or on a version system whose history
147can be converted to a gentoo supported versioning system. 174can be converted to a Gentoo supported versioning system.
148 175
176Fifth, release capabilities. There must exist automated tools that use the
177candidate primary package manager to create release media that have similar
178capabilities as those released using the old primary package manager. The exact
179requirements are determined by the Release Engineering project, but should not
180be significantly beyond what is currently implemented using the primary package
181manager.
149 182
183
150secondary package manager requirements 184Secondary package manager requirements
151-------------------------------------- 185--------------------------------------
152 186
153A secondary package manager is a package manager that instead of directly aiming 187A secondary package manager is a package manager that instead of directly aiming
188at replacing the current primary package manager as primary package manager aims
154at replacing portage as primary package manager. As such a secondary package 189to cooperate with the primary package manager. As such a secondary package
155manager does not set the standard on the tree, but follows the standard set by 190manager does not set the standard on the tree, but follows the standard set by
156the primary package manager. 191the primary package manager.
157 192
158There are two kinds of secondary package managers. The first kind is formed by 193There are two kinds of secondary package managers. The first kind is formed by
159those that do not maintain their own installed package database, but work with 194those that do not maintain their own installed package database, but work with
163and deinstallation by the primary package manager must remain functional. 198and deinstallation by the primary package manager must remain functional.
164 199
165The second kind is formed by those package managers that maintain their own 200The second kind is formed by those package managers that maintain their own
166package database, or a package database incompatible with the primary package 201package database, or a package database incompatible with the primary package
167manager. To ensure the secondary role of these package managers the support in 202manager. To ensure the secondary role of these package managers the support in
168the tree for these package manager is provided along with restrictions. 203the tree for these package managers is provided along with restrictions.
169 204
170The first restriction is that no packages in the tree must rely on the secondary 205The first restriction is that no packages in the tree must rely on the secondary
171package manager. While packages may provide a level of support (while being 206package manager. While packages may provide a level of support (while being
172compatible with the primary package manager) this may not result in a 207compatible with the primary package manager) this may not result in a
173significant increase of features. If this were allowed, this would mean that 208significant increase of features. If this were allowed, this would mean that
174while they technically work with the primary package manager, there would be 209while they technically work with the primary package manager, there would be
175significant incentive to use the secondary package manager. As the use of this 210significant incentive to use the secondary package manager. As the use of this
176secondary package manager disallows the paralel use of the primary package 211secondary package manager disallows the parallel use of the primary package
177manager, this would result in users using the secondary package manager as their 212manager, this would result in users using the secondary package manager as their
178primary package manager. 213primary package manager.
179 214
180Users are allowed to make their own choices. However by making the tree favor a 215Users are allowed to make their own choices. However by making the tree favour a
181package manager that is not the primary package manager, this will lead to the 216package manager that is not the primary package manager, this will lead to the
182secondary package manager becomming the effective primary package manager. As 217secondary package manager becoming the effective primary package manager. As
183this will be a decision by default instead of a concious choice by the council, 218this will be a decision by default instead of a conscious choice by the council,
184this is an undesirable result. 219this is an undesirable result.
185 220
186There is one exclusion for the restriction of packages that only work with or 221There is one exclusion for the restriction of packages that only work with or
187have significant improvements with the secondary package manager. That is 222have significant improvements with the secondary package manager. That is
188packages that by their nature are only usable with this secondary package 223packages that by their nature are only usable with this secondary package
189manager. An example would be a graphical frontend to the secondary package 224manager. An example would be a graphical front-end to the secondary package
190manager. 225manager.
191 226
192If a secondary package manager works along the primary package manager, but by 227If a secondary package manager works along the primary package manager, but by
193itself does not have the capabilities of becoming a primary package manager the 228itself does not have the capabilities of becoming a primary package manager the
194risks of choice by default are lower. As a result, the council could choose to 229risks of choice by default are lower. As a result, the council could choose to
199wrapper scripts for those packages that are only provided in the RPM 234wrapper scripts for those packages that are only provided in the RPM
200format. Such a decision does imply that the maintainers of the primary package 235format. Such a decision does imply that the maintainers of the primary package
201manager must take this secondary package manager into account. 236manager must take this secondary package manager into account.
202 237
203 238
204third party package manager requirements 239Third party package manager requirements
205---------------------------------------- 240----------------------------------------
206 241
207A third party package manager is just that. It is a package manager without any 242A third party package manager is just that. It is a package manager without any
208support within gentoo. As there is no control by gentoo over the package manager 243support within Gentoo. As there is no control by Gentoo over the package manager
209this means that there are no requirements on the package manager. 244this means that there are no requirements on the package manager.
210 245
211This complete lack of control however also translates to the fact that gentoo 246This complete lack of control however also translates to the fact that Gentoo
212can not make package manager specific changes to support this package 247can not make package manager specific changes to support this package
213manager. Package manager specific means that it is possible to request changes 248manager. Package manager specific means that it is possible to request changes
214that make the tree more independent of the primary package manager. These 249that make the tree more independent of the primary package manager. These
215changes must however be agnostic of the package manager, and only make it easier 250changes must however be agnostic of the package manager, and only make it easier
216to have alternative package managers. 251to have alternative package managers.
217 252
218 253
219transition phases 254Transition phases
220================= 255=================
221 256
222primary package manager transition phase 257Primary package manager transition phase
223---------------------------------------- 258----------------------------------------
224 259
225A candidate primary package manager can be chosen to become primary package 260A candidate primary package manager can be chosen to become primary package
226manager. This can only happen by council decision. This decision can only be 261manager. This can only happen by council decision. This decision can only be
227made when the candiate primary package manager is stable on all stable 262made when the candidate primary package manager is stable on all stable
228architectures. (all architectures except experimental ones). 263architectures. (all architectures except experimental ones). There is a
264incubation period of at least 3 months before a candidate primary package
265manager can become the primary package manager.
229 266
230After the decision has been made to replace the primary package manager, the 267After the decision has been made to replace the primary package manager, the
231transition phase starts. The use of the old stable package manager must remain 268transition phase starts. The use of the old stable package manager must remain
232supported for a period of 6 months. This means that core packages must be 269supported for a period of 6 months. This means that core packages must be
233installable by this package manager. Further the possibility to convert the 270installable by this package manager. Further the possibility to convert the
246 283
247The transition from secondary package manager to candidate primary package 284The transition from secondary package manager to candidate primary package
248manager is straightforward. The secondary package manager must satisfy all 285manager is straightforward. The secondary package manager must satisfy all
249requirements for a candidate primary package manager. At that point its 286requirements for a candidate primary package manager. At that point its
250maintainers can announce that they are changing the status to candidate primary 287maintainers can announce that they are changing the status to candidate primary
251package manager. This allows a greater support from gentoo in achieving that 288package manager. This allows a greater support from Gentoo in achieving that
252goal. 289goal.
253 290
254 291
255Third party to other transition 292Third party to other transition
256------------------------------- 293-------------------------------

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.4

  ViewVC Help
Powered by ViewVC 1.1.20