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

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

  ViewVC Help
Powered by ViewVC 1.1.20