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