1 |
>A secondary package manager is a package manager that instead of |
2 |
directly aiming |
3 |
>at replacing portage as primary package manager. |
4 |
What does it do instead? |
5 |
|
6 |
>The first restriction is that no packages in the tree must rely on |
7 |
the secondary |
8 |
>package manager. While packages may provide a level of support |
9 |
(while being |
10 |
>compatible with the primary package manager) this may not |
11 |
result in a |
12 |
>significant increase of features. |
13 |
|
14 |
Why can a certain ebuild not DEPEND specifically on a third party |
15 |
package manager? |
16 |
|
17 |
I think you raise some good points in this email, however I think the |
18 |
overall aim is flawed. The package manager should be just as |
19 |
switching as the compiler, the libc, the baselayout, or the kernel. |
20 |
None of these require anywhere near as many hoops to jump through to |
21 |
be supported in gentoo, and they all have their own fixes that need to |
22 |
be made. No changes should be made to the tree which directly impedes |
23 |
the ability of the "primary package manager" to do its job, but at the |
24 |
same time, no changes should be made which impede other package |
25 |
managers from outperforming the "primary package manager". Forcing |
26 |
package managers to stay even with all of portages ideosyncrocies is |
27 |
just holding back new package managers from making progress. |
28 |
|
29 |
On 5/20/06, Paul de Vrieze <pauldv@g.o> wrote: |
30 |
> |
31 |
> The promissed glep on package manager requirements. Please comment on it. |
32 |
> There are some parts that may be controversial (portage has in the past not |
33 |
> provided support for reverting to stable either), but please keep the |
34 |
> discussion on topic. |
35 |
> |
36 |
> Paul |
37 |
> |
38 |
> -- |
39 |
> Paul de Vrieze |
40 |
> Gentoo Developer |
41 |
> Mail: pauldv@g.o |
42 |
> Homepage: http://www.devrieze.net |
43 |
> |
44 |
> |
45 |
> GLEP: 49 |
46 |
> Title: Alternative Package Manager requirements |
47 |
> Version: $Revision: 2214 $ |
48 |
> Last-Modified: $Date: 2006-05-20 14:51:41 +0200 (Sat, 20 May 2006) $ |
49 |
> Author: Paul de Vrieze <pauldv@g.o>, |
50 |
> Status: Draft |
51 |
> Type: Standards Track |
52 |
> Content-Type: text/x-rst |
53 |
> Created: 18-May-2006 |
54 |
> Post-History: 19-May-2006 |
55 |
> |
56 |
> |
57 |
> Abstract |
58 |
> ======== |
59 |
> |
60 |
> This GLEP describes four classes of package managers. What the requirements for |
61 |
> them are, and what support they can receive. |
62 |
> |
63 |
> |
64 |
> Motivation |
65 |
> ========== |
66 |
> |
67 |
> To set a standard that package managers that seek gentoo project approval and |
68 |
> support should adhere to. |
69 |
> |
70 |
> |
71 |
> Rationale |
72 |
> ========= |
73 |
> |
74 |
> Currently portage is showing its age. The code of portage does not seem to be |
75 |
> salvageable for new versions. There are two known alternative package managers |
76 |
> that claim a level of portage compatibility. These alternatives are `paludis`_ |
77 |
> and `pkgcore`_. Before these alternatives are developed further, a set of rules |
78 |
> should be created to level the playing field and ensuring that decisions can be |
79 |
> made clearly. |
80 |
> |
81 |
> |
82 |
> Backwards Compatibility |
83 |
> ======================= |
84 |
> |
85 |
> Not a problem for this GLEP. There is no previous standard as the issue did not |
86 |
> exist before. This GLEP is to prevent future compatibility issues. |
87 |
> |
88 |
> |
89 |
> Categories of package managers |
90 |
> ============================== |
91 |
> |
92 |
> We distinguish four categories of package managers. While a package manager can |
93 |
> transition from one category to another, it can not be in two categories at the |
94 |
> same time. It can be in a state of transition though. |
95 |
> |
96 |
> *Primary Package Manager* |
97 |
> There is one primary package manager. Currently this position is held by |
98 |
> portage. The primary package manager is assigned by the council and all |
99 |
> packages in the official tree must be installable by a useable version of the |
100 |
> primary package manager. |
101 |
> |
102 |
> *Candidate Primary Package Managers* |
103 |
> A candidate Primary Package Manager does aim, or show an aim, at replacing |
104 |
> the current primary package manager. At a point where the package manager is |
105 |
> deemed stable a decision must be made whether this package manager should |
106 |
> become the new primary package manager. At that point the `primary package |
107 |
> manager transition phase`_ starts. |
108 |
> |
109 |
> *Secondary Package Managers* |
110 |
> A secondary package manager is a package manager that coexists with the |
111 |
> primary package manager, while not aiming to replace it. Package managers |
112 |
> that would fall into this category are: |
113 |
> |
114 |
> - Experimental package managers. Package managers whose purpose it is to try |
115 |
> out new features. |
116 |
> |
117 |
> - Focussed package managers. For example a package manager that allows the |
118 |
> use of rpm formatted binary packages would be an example. |
119 |
> |
120 |
> |
121 |
> *Third Party Package Managers* |
122 |
> A third party package manager is any package manager that lacks recognition |
123 |
> from gentoo as being in any other category. A third party package manager may |
124 |
> or may not have a gentoo package, but is not supported beyond that. |
125 |
> |
126 |
> |
127 |
> Package manager requirements |
128 |
> ============================ |
129 |
> |
130 |
> As a package manager is in a state of higher support there are higher |
131 |
> requirements to it. The purpose of these requirements is to ensure the unity of |
132 |
> the distribution and the package tree. For this purpose it is needed that there |
133 |
> is only one primary package manager. |
134 |
> |
135 |
> |
136 |
> primary package manager requirements |
137 |
> ------------------------------------ |
138 |
> |
139 |
> The primary package manager is the package manager that sets the standards for |
140 |
> the tree. All ebuilds in the tree must function with the primary package |
141 |
> manager. As the primary package manager sets the standard it does not have to |
142 |
> maintain compatibility with other package managers. |
143 |
> |
144 |
> The primary package manager does however have the responsibility that it must be |
145 |
> very stable. The primary package manager must maintain compatibility with old |
146 |
> versions of itself for extended periods of time. This compatibilty time is set |
147 |
> by the council. The suggested time would be one year from the point that there |
148 |
> is a compatible stable version for all supported architectures. |
149 |
> |
150 |
> Another compatibilty requirement for the primary package manager is a limited |
151 |
> forward compatibility. It must always be possible to transition from the |
152 |
> unstable version of the primary package manager to a stable version. This may be |
153 |
> done either by first introducing reading compatibility for a new format and only |
154 |
> having write support later. Another way would be the provision of a conversion |
155 |
> tool that ensures that the on disk information maintained by the package manager |
156 |
> is supported by the stable package manager. |
157 |
> |
158 |
> The primary package manager is maintained on official gentoo infrastructure, |
159 |
> under control of gentoo developers. |
160 |
> |
161 |
> |
162 |
> candidate primary package manager requirements |
163 |
> ------------------------------------------------ |
164 |
> |
165 |
> A candidate primary package manager aims to replace the primary package |
166 |
> manager. The council is responsible for deciding whether this is done. The |
167 |
> requirements are there to ensure that it is actually possible to transition a |
168 |
> candidate primary package manager into the primary package manager. |
169 |
> |
170 |
> First of all, there must exist a transition path. This means that the on disk |
171 |
> data of the primary package manager can be used by (or converted to a format |
172 |
> usable by) the candidate primary package manager. |
173 |
> |
174 |
> Second, there must be a test path. It must be possible for the developers to |
175 |
> test out the candidate primary package manager on their working systems. This |
176 |
> means that the transition path must exist. This also means that there are no |
177 |
> serious obstacles for reverting to the current primary package manager. |
178 |
> |
179 |
> Third, there must exist an ebuild test path. It must be possible for package |
180 |
> managers to test ebuilds in one tree for both the primary as well as the |
181 |
> candidate primary package manager. It is not an issue if this requires a special |
182 |
> mode for the candidate primary package manager. It is not an issue either if |
183 |
> compatibilty can be achieved by unmerging the package in the candidate primary |
184 |
> package manager. |
185 |
> |
186 |
> Fourth, there must be support. This means that the package manager is actively |
187 |
> maintained under control of gentoo. If it is not maintained on gentoo |
188 |
> infrastructure, the means must be there to move the package manager, with its |
189 |
> change history, to gentoo infrastructure. This means that it must be maintained |
190 |
> on a gentoo supported versioning system, or on a version system whose history |
191 |
> can be converted to a gentoo supported versioning system. |
192 |
> |
193 |
> |
194 |
> secondary package manager requirements |
195 |
> -------------------------------------- |
196 |
> |
197 |
> A secondary package manager is a package manager that instead of directly aiming |
198 |
> at replacing portage as primary package manager. As such a secondary package |
199 |
> manager does not set the standard on the tree, but follows the standard set by |
200 |
> the primary package manager. |
201 |
> |
202 |
> There are two kinds of secondary package managers. The first kind is formed by |
203 |
> those that do not maintain their own installed package database, but work with |
204 |
> the package database of the primary package manager. While these package |
205 |
> managers can put additional information in the database, these entries must |
206 |
> remain compatible with the primary package managers. Verification, reference, |
207 |
> and deinstallation by the primary package manager must remain functional. |
208 |
> |
209 |
> The second kind is formed by those package managers that maintain their own |
210 |
> package database, or a package database incompatible with the primary package |
211 |
> manager. To ensure the secondary role of these package managers the support in |
212 |
> the tree for these package manager is provided along with restrictions. |
213 |
> |
214 |
> The first restriction is that no packages in the tree must rely on the secondary |
215 |
> package manager. While packages may provide a level of support (while being |
216 |
> compatible with the primary package manager) this may not result in a |
217 |
> significant increase of features. If this were allowed, this would mean that |
218 |
> while they technically work with the primary package manager, there would be |
219 |
> significant incentive to use the secondary package manager. As the use of this |
220 |
> secondary package manager disallows the paralel use of the primary package |
221 |
> manager, this would result in users using the secondary package manager as their |
222 |
> primary package manager. |
223 |
> |
224 |
> Users are allowed to make their own choices. However by making the tree favor a |
225 |
> package manager that is not the primary package manager, this will lead to the |
226 |
> secondary package manager becomming the effective primary package manager. As |
227 |
> this will be a decision by default instead of a concious choice by the council, |
228 |
> this is an undesirable result. |
229 |
> |
230 |
> There is one exclusion for the restriction of packages that only work with or |
231 |
> have significant improvements with the secondary package manager. That is |
232 |
> packages that by their nature are only usable with this secondary package |
233 |
> manager. An example would be a graphical frontend to the secondary package |
234 |
> manager. |
235 |
> |
236 |
> If a secondary package manager works along the primary package manager, but by |
237 |
> itself does not have the capabilities of becoming a primary package manager the |
238 |
> risks of choice by default are lower. As a result, the council could choose to |
239 |
> allow the inclusion of packages that work only or significantly better with this |
240 |
> secondary package manager. For example at a point where there is a stable, |
241 |
> functional, package manager that can handle RPM format packages, the council |
242 |
> could decide to include these packages directly in the tree, instead of using |
243 |
> wrapper scripts for those packages that are only provided in the RPM |
244 |
> format. Such a decision does imply that the maintainers of the primary package |
245 |
> manager must take this secondary package manager into account. |
246 |
> |
247 |
> |
248 |
> third party package manager requirements |
249 |
> ---------------------------------------- |
250 |
> |
251 |
> A third party package manager is just that. It is a package manager without any |
252 |
> support within gentoo. As there is no control by gentoo over the package manager |
253 |
> this means that there are no requirements on the package manager. |
254 |
> |
255 |
> This complete lack of control however also translates to the fact that gentoo |
256 |
> can not make package manager specific changes to support this package |
257 |
> manager. Package manager specific means that it is possible to request changes |
258 |
> that make the tree more independent of the primary package manager. These |
259 |
> changes must however be agnostic of the package manager, and only make it easier |
260 |
> to have alternative package managers. |
261 |
> |
262 |
> |
263 |
> transition phases |
264 |
> ================= |
265 |
> |
266 |
> primary package manager transition phase |
267 |
> ---------------------------------------- |
268 |
> |
269 |
> A candidate primary package manager can be chosen to become primary package |
270 |
> manager. This can only happen by council decision. This decision can only be |
271 |
> made when the candiate primary package manager is stable on all stable |
272 |
> architectures. (all architectures except experimental ones). |
273 |
> |
274 |
> After the decision has been made to replace the primary package manager, the |
275 |
> transition phase starts. The use of the old stable package manager must remain |
276 |
> supported for a period of 6 months. This means that core packages must be |
277 |
> installable by this package manager. Further the possibility to convert the |
278 |
> system automatically to the new primary package manager must be available for at |
279 |
> least 18 months, but preferably longer (enable installing the new package |
280 |
> manager from the old one). |
281 |
> |
282 |
> During the transition phase packages are allowed in the tree that use the new |
283 |
> features of the new primary package manager. While backward compatibility with |
284 |
> the previous primary package manager must be maintained a forward compatibility |
285 |
> is no longer needed. |
286 |
> |
287 |
> |
288 |
> Secondary package manager to candidate primary package manager transition |
289 |
> ------------------------------------------------------------------------- |
290 |
> |
291 |
> The transition from secondary package manager to candidate primary package |
292 |
> manager is straightforward. The secondary package manager must satisfy all |
293 |
> requirements for a candidate primary package manager. At that point its |
294 |
> maintainers can announce that they are changing the status to candidate primary |
295 |
> package manager. This allows a greater support from gentoo in achieving that |
296 |
> goal. |
297 |
> |
298 |
> |
299 |
> Third party to other transition |
300 |
> ------------------------------- |
301 |
> |
302 |
> When a third party package manager wants to transition into one of the other |
303 |
> categories (except primary package manager) it must satisfy all requirements for |
304 |
> that category. |
305 |
> |
306 |
> |
307 |
> References |
308 |
> ========== |
309 |
> |
310 |
> .. _paludis: http://paludis.berlios.de/ |
311 |
> .. _pkgcore: http://gentooexperimental.org/~ferringb/bzr/pkgcore/ |
312 |
> .. _Open Publication License: http://www.opencontent.org/openpub/ |
313 |
> |
314 |
> |
315 |
> Copyright |
316 |
> ========= |
317 |
> |
318 |
> This document is copyright 2006 by Paul de Vrieze and licensed under the |
319 |
> `Open Publication License`_. |
320 |
> |
321 |
> |
322 |
> |
323 |
> |
324 |
> |
325 |
> |
326 |
|
327 |
-- |
328 |
gentoo-dev@g.o mailing list |