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

Contents of /xml/htdocs/proj/en/glep/glep-0049.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (show annotations) (download) (as text)
Sat May 20 12:51:08 2006 UTC (8 years, 4 months ago) by pauldv
Branch: MAIN
File MIME type: text/html
Add a glep on package managers

1 <?xml version="1.0" encoding="utf-8" ?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4 <!--
5 This HTML is auto-generated. DO NOT EDIT THIS FILE! If you are writing a new
6 PEP, see http://www.python.org/peps/pep-0001.html for instructions and links
7 to templates. DO NOT USE THIS HTML FILE AS YOUR TEMPLATE!
8 -->
9 <head>
10 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
11 <meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
12 <title>GLEP 49 -- Alternative Package Manager requirements</title>
13 <link rel="stylesheet" href="tools/glep.css" type="text/css" />
14 </head>
15 <body bgcolor="white">
16 <table class="navigation" cellpadding="0" cellspacing="0"
17 width="100%" border="0">
18 <tr><td class="navicon" width="150" height="35">
19 <a href="http://www.gentoo.org/" title="Gentoo Linux Home Page">
20 <img src="http://www.gentoo.org/images/gentoo-new.gif" alt="[Gentoo]"
21 border="0" width="150" height="35" /></a></td>
22 <td class="textlinks" align="left">
23 [<b><a href="http://www.gentoo.org/">Gentoo Linux Home</a></b>]
24 [<b><a href="http://www.gentoo.org/peps">GLEP Index</a></b>]
25 [<b><a href="http://www.gentoo.org/proj/en/glep/glep-0049.txt">GLEP Source</a></b>]
26 </td></tr></table>
27 <table class="rfc2822 docutils field-list" frame="void" rules="none">
28 <col class="field-name" />
29 <col class="field-body" />
30 <tbody valign="top">
31 <tr class="field"><th class="field-name">GLEP:</th><td class="field-body">49</td>
32 </tr>
33 <tr class="field"><th class="field-name">Title:</th><td class="field-body">Alternative Package Manager requirements</td>
34 </tr>
35 <tr class="field"><th class="field-name">Version:</th><td class="field-body">2213</td>
36 </tr>
37 <tr class="field"><th class="field-name">Last-Modified:</th><td class="field-body"><a class="reference" href="http://www.gentoo.org/cgi-bin/viewcvs.cgi/xml/htdocs/proj/en/glep/glep-0049.txt?cvsroot=gentoo">2006-05-19 12:58:14 +0200 (Fri, 19 May 2006)</a></td>
38 </tr>
39 <tr class="field"><th class="field-name">Author:</th><td class="field-body">Paul de Vrieze &lt;pauldv&#32;&#97;t&#32;gentoo.org&gt;,</td>
40 </tr>
41 <tr class="field"><th class="field-name">Status:</th><td class="field-body">Draft</td>
42 </tr>
43 <tr class="field"><th class="field-name">Type:</th><td class="field-body">Standards Track</td>
44 </tr>
45 <tr class="field"><th class="field-name">Content-Type:</th><td class="field-body"><a class="reference" href="glep-0002.html">text/x-rst</a></td>
46 </tr>
47 <tr class="field"><th class="field-name">Created:</th><td class="field-body">18-May-2006</td>
48 </tr>
49 <tr class="field"><th class="field-name">Post-History:</th><td class="field-body">20-May-2006</td>
50 </tr>
51 </tbody>
52 </table>
53 <hr />
54 <div class="contents topic">
55 <p class="topic-title first"><a id="contents" name="contents">Contents</a></p>
56 <ul class="simple">
57 <li><a class="reference" href="#abstract" id="id7" name="id7">Abstract</a></li>
58 <li><a class="reference" href="#motivation" id="id8" name="id8">Motivation</a></li>
59 <li><a class="reference" href="#rationale" id="id9" name="id9">Rationale</a></li>
60 <li><a class="reference" href="#backwards-compatibility" id="id10" name="id10">Backwards Compatibility</a></li>
61 <li><a class="reference" href="#categories-of-package-managers" id="id11" name="id11">Categories of package managers</a></li>
62 <li><a class="reference" href="#package-manager-requirements" id="id12" name="id12">Package manager requirements</a><ul>
63 <li><a class="reference" href="#primary-package-manager-requirements" id="id13" name="id13">primary package manager requirements</a></li>
64 <li><a class="reference" href="#candidate-primary-package-manager-requirements" id="id14" name="id14">candidate primary package manager requirements</a></li>
65 <li><a class="reference" href="#secondary-package-manager-requirements" id="id15" name="id15">secondary package manager requirements</a></li>
66 <li><a class="reference" href="#third-party-package-manager-requirements" id="id16" name="id16">third party package manager requirements</a></li>
67 </ul>
68 </li>
69 <li><a class="reference" href="#transition-phases" id="id17" name="id17">transition phases</a><ul>
70 <li><a class="reference" href="#primary-package-manager-transition-phase" id="id18" name="id18">primary package manager transition phase</a></li>
71 <li><a class="reference" href="#secondary-package-manager-to-candidate-primary-package-manager-transition" id="id19" name="id19">Secondary package manager to candidate primary package manager transition</a></li>
72 <li><a class="reference" href="#third-party-to-other-transition" id="id20" name="id20">Third party to other transition</a></li>
73 </ul>
74 </li>
75 <li><a class="reference" href="#references" id="id21" name="id21">References</a></li>
76 <li><a class="reference" href="#copyright" id="id22" name="id22">Copyright</a></li>
77 </ul>
78 </div>
79 <div class="section">
80 <h1><a class="toc-backref" href="#id7" id="abstract" name="abstract">Abstract</a></h1>
81 <p>This GLEP describes four classes of package managers. What the requirements for
82 them are, and what support they can receive.</p>
83 </div>
84 <div class="section">
85 <h1><a class="toc-backref" href="#id8" id="motivation" name="motivation">Motivation</a></h1>
86 <p>To set a standard that package managers that seek gentoo project approval and
87 support should adhere to.</p>
88 </div>
89 <div class="section">
90 <h1><a class="toc-backref" href="#id9" id="rationale" name="rationale">Rationale</a></h1>
91 <p>Currently portage is showing its age. The code of portage does not seem to be
92 salvageable for new versions. There are two known alternative package managers
93 that claim a level of portage compatibility. These alternatives are <a class="reference" href="http://paludis.berlios.de/">paludis</a> <a class="footnote-reference" href="#id1" id="id2" name="id2">[1]</a>
94 and <a class="reference" href="http://gentooexperimental.org/~ferringb/bzr/pkgcore/">pkgcore</a> <a class="footnote-reference" href="#id3" id="id4" name="id4">[2]</a>. Before these alternatives are developed further, a set of rules
95 should be created to level the playing field and ensuring that decisions can be
96 made clearly.</p>
97 </div>
98 <div class="section">
99 <h1><a class="toc-backref" href="#id10" id="backwards-compatibility" name="backwards-compatibility">Backwards Compatibility</a></h1>
100 <p>Not a problem for this GLEP. There is no previous standard as the issue did not
101 exist before. This GLEP is to prevent future compatibility issues.</p>
102 </div>
103 <div class="section">
104 <h1><a class="toc-backref" href="#id11" id="categories-of-package-managers" name="categories-of-package-managers">Categories of package managers</a></h1>
105 <p>We distinguish four categories of package managers. While a package manager can
106 transition from one category to another, it can not be in two categories at the
107 same time. It can be in a state of transition though.</p>
108 <dl class="docutils">
109 <dt><em>Primary Package Manager</em></dt>
110 <dd>There is one primary package manager. Currently this position is held by
111 portage. The primary package manager is assigned by the council and all
112 packages in the official tree must be installable by a useable version of the
113 primary package manager.</dd>
114 <dt><em>Candidate Primary Package Managers</em></dt>
115 <dd>A candidate Primary Package Manager does aim, or show an aim, at replacing
116 the current primary package manager. At a point where the package manager is
117 deemed stable a decision must be made whether this package manager should
118 become the new primary package manager. At that point the <a class="reference" href="#primary-package-manager-transition-phase">primary package
119 manager transition phase</a> starts.</dd>
120 <dt><em>Secondary Package Managers</em></dt>
121 <dd><p class="first">A secondary package manager is a package manager that coexists with the
122 primary package manager, while not aiming to replace it. Package managers
123 that would fall into this category are:</p>
124 <ul class="last simple">
125 <li>Experimental package managers. Package managers whose purpose it is to try
126 out new features.</li>
127 <li>Focussed package managers. For example a package manager that allows the
128 use of rpm formatted binary packages would be an example.</li>
129 </ul>
130 </dd>
131 <dt><em>Third Party Package Managers</em></dt>
132 <dd>A third party package manager is any package manager that lacks recognition
133 from gentoo as being in any other category. A third party package manager may
134 or may not have a gentoo package, but is not supported beyond that.</dd>
135 </dl>
136 </div>
137 <div class="section">
138 <h1><a class="toc-backref" href="#id12" id="package-manager-requirements" name="package-manager-requirements">Package manager requirements</a></h1>
139 <p>As a package manager is in a state of higher support there are higher
140 requirements to it. The purpose of these requirements is to ensure the unity of
141 the distribution and the package tree. For this purpose it is needed that there
142 is only one primary package manager.</p>
143 <div class="section">
144 <h2><a class="toc-backref" href="#id13" id="primary-package-manager-requirements" name="primary-package-manager-requirements">primary package manager requirements</a></h2>
145 <p>The primary package manager is the package manager that sets the standards for
146 the tree. All ebuilds in the tree must function with the primary package
147 manager. As the primary package manager sets the standard it does not have to
148 maintain compatibility with other package managers.</p>
149 <p>The primary package manager does however have the responsibility that it must be
150 very stable. The primary package manager must maintain compatibility with old
151 versions of itself for extended periods of time. This compatibilty time is set
152 by the council. The suggested time would be one year from the point that there
153 is a compatible stable version for all supported architectures.</p>
154 <p>Another compatibilty requirement for the primary package manager is a limited
155 forward compatibility. It must always be possible to transition from the
156 unstable version of the primary package manager to a stable version. This may be
157 done either by first introducing reading compatibility for a new format and only
158 having write support later. Another way would be the provision of a conversion
159 tool that ensures that the on disk information maintained by the package manager
160 is supported by the stable package manager.</p>
161 <p>The primary package manager is maintained on official gentoo infrastructure,
162 under control of gentoo developers.</p>
163 </div>
164 <div class="section">
165 <h2><a class="toc-backref" href="#id14" id="candidate-primary-package-manager-requirements" name="candidate-primary-package-manager-requirements">candidate primary package manager requirements</a></h2>
166 <p>A candidate primary package manager aims to replace the primary package
167 manager. The council is responsible for deciding whether this is done. The
168 requirements are there to ensure that it is actually possible to transition a
169 candidate primary package manager into the primary package manager.</p>
170 <p>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.</p>
173 <p>Second, there must be a test path. It must be possible for the developers to
174 test out the candidate primary package manager on their working systems. This
175 means that the transition path must exist. This also means that there are no
176 serious obstacles for reverting to the current primary package manager.</p>
177 <p>Third, there must exist an ebuild test path. It must be possible for package
178 managers to test ebuilds in one tree for both the primary as well as the
179 candidate primary package manager. It is not an issue if this requires a special
180 mode for the candidate primary package manager. It is not an issue either if
181 compatibilty can be achieved by unmerging the package in the candidate primary
182 package manager.</p>
183 <p>Fourth, there must be support. This means that the package manager is actively
184 maintained under control of gentoo. If it is not maintained on gentoo
185 infrastructure, the means must be there to move the package manager, with its
186 change history, to gentoo infrastructure. This means that it must be maintained
187 on a gentoo supported versioning system, or on a version system whose history
188 can be converted to a gentoo supported versioning system.</p>
189 </div>
190 <div class="section">
191 <h2><a class="toc-backref" href="#id15" id="secondary-package-manager-requirements" name="secondary-package-manager-requirements">secondary package manager requirements</a></h2>
192 <p>A secondary package manager is a package manager that instead of directly aiming
193 at replacing portage as primary package manager. As such a secondary package
194 manager does not set the standard on the tree, but follows the standard set by
195 the primary package manager.</p>
196 <p>There are two kinds of secondary package managers. The first kind is formed by
197 those that do not maintain their own installed package database, but work with
198 the package database of the primary package manager. While these package
199 managers can put additional information in the database, these entries must
200 remain compatible with the primary package managers. Verification, reference,
201 and deinstallation by the primary package manager must remain functional.</p>
202 <p>The second kind is formed by those package managers that maintain their own
203 package database, or a package database incompatible with the primary package
204 manager. To ensure the secondary role of these package managers the support in
205 the tree for these package manager is provided along with restrictions.</p>
206 <p>The first restriction is that no packages in the tree must rely on the secondary
207 package manager. While packages may provide a level of support (while being
208 compatible with the primary package manager) this may not result in a
209 significant increase of features. If this were allowed, this would mean that
210 while they technically work with the primary package manager, there would be
211 significant incentive to use the secondary package manager. As the use of this
212 secondary package manager disallows the paralel use of the primary package
213 manager, this would result in users using the secondary package manager as their
214 primary package manager.</p>
215 <p>Users are allowed to make their own choices. However by making the tree favor a
216 package manager that is not the primary package manager, this will lead to the
217 secondary package manager becomming the effective primary package manager. As
218 this will be a decision by default instead of a concious choice by the council,
219 this is an undesirable result.</p>
220 <p>There is one exclusion for the restriction of packages that only work with or
221 have significant improvements with the secondary package manager. That is
222 packages that by their nature are only usable with this secondary package
223 manager. An example would be a graphical frontend to the secondary package
224 manager.</p>
225 <p>If a secondary package manager works along the primary package manager, but by
226 itself does not have the capabilities of becoming a primary package manager the
227 risks of choice by default are lower. As a result, the council could choose to
228 allow the inclusion of packages that work only or significantly better with this
229 secondary package manager. For example at a point where there is a stable,
230 functional, package manager that can handle RPM format packages, the council
231 could decide to include these packages directly in the tree, instead of using
232 wrapper scripts for those packages that are only provided in the RPM
233 format. Such a decision does imply that the maintainers of the primary package
234 manager must take this secondary package manager into account.</p>
235 </div>
236 <div class="section">
237 <h2><a class="toc-backref" href="#id16" id="third-party-package-manager-requirements" name="third-party-package-manager-requirements">third party package manager requirements</a></h2>
238 <p>A third party package manager is just that. It is a package manager without any
239 support within gentoo. As there is no control by gentoo over the package manager
240 this means that there are no requirements on the package manager.</p>
241 <p>This complete lack of control however also translates to the fact that gentoo
242 can not make package manager specific changes to support this package
243 manager. Package manager specific means that it is possible to request changes
244 that make the tree more independent of the primary package manager. These
245 changes must however be agnostic of the package manager, and only make it easier
246 to have alternative package managers.</p>
247 </div>
248 </div>
249 <div class="section">
250 <h1><a class="toc-backref" href="#id17" id="transition-phases" name="transition-phases">transition phases</a></h1>
251 <div class="section">
252 <h2><a class="toc-backref" href="#id18" id="primary-package-manager-transition-phase" name="primary-package-manager-transition-phase">primary package manager transition phase</a></h2>
253 <p>A candidate primary package manager can be chosen to become primary package
254 manager. This can only happen by council decision. This decision can only be
255 made when the candiate primary package manager is stable on all stable
256 architectures. (all architectures except experimental ones).</p>
257 <p>After the decision has been made to replace the primary package manager, the
258 transition phase starts. The use of the old stable package manager must remain
259 supported for a period of 6 months. This means that core packages must be
260 installable by this package manager. Further the possibility to convert the
261 system automatically to the new primary package manager must be available for at
262 least 18 months, but preferably longer (enable installing the new package
263 manager from the old one).</p>
264 <p>During the transition phase packages are allowed in the tree that use the new
265 features of the new primary package manager. While backward compatibility with
266 the previous primary package manager must be maintained a forward compatibility
267 is no longer needed.</p>
268 </div>
269 <div class="section">
270 <h2><a class="toc-backref" href="#id19" id="secondary-package-manager-to-candidate-primary-package-manager-transition" name="secondary-package-manager-to-candidate-primary-package-manager-transition">Secondary package manager to candidate primary package manager transition</a></h2>
271 <p>The transition from secondary package manager to candidate primary package
272 manager is straightforward. The secondary package manager must satisfy all
273 requirements for a candidate primary package manager. At that point its
274 maintainers can announce that they are changing the status to candidate primary
275 package manager. This allows a greater support from gentoo in achieving that
276 goal.</p>
277 </div>
278 <div class="section">
279 <h2><a class="toc-backref" href="#id20" id="third-party-to-other-transition" name="third-party-to-other-transition">Third party to other transition</a></h2>
280 <p>When a third party package manager wants to transition into one of the other
281 categories (except primary package manager) it must satisfy all requirements for
282 that category.</p>
283 </div>
284 </div>
285 <div class="section">
286 <h1><a class="toc-backref" href="#id21" id="references" name="references">References</a></h1>
287 <table class="docutils footnote" frame="void" id="id1" rules="none">
288 <colgroup><col class="label" /><col /></colgroup>
289 <tbody valign="top">
290 <tr><td class="label"><a class="fn-backref" href="#id2" name="id1">[1]</a></td><td><a class="reference" href="http://paludis.berlios.de/">http://paludis.berlios.de/</a></td></tr>
291 </tbody>
292 </table>
293 <table class="docutils footnote" frame="void" id="id3" rules="none">
294 <colgroup><col class="label" /><col /></colgroup>
295 <tbody valign="top">
296 <tr><td class="label"><a class="fn-backref" href="#id4" name="id3">[2]</a></td><td><a class="reference" href="http://gentooexperimental.org/~ferringb/bzr/pkgcore/">http://gentooexperimental.org/~ferringb/bzr/pkgcore/</a></td></tr>
297 </tbody>
298 </table>
299 <table class="docutils footnote" frame="void" id="id5" rules="none">
300 <colgroup><col class="label" /><col /></colgroup>
301 <tbody valign="top">
302 <tr><td class="label"><a class="fn-backref" href="#id6" name="id5">[3]</a></td><td><a class="reference" href="http://www.opencontent.org/openpub/">http://www.opencontent.org/openpub/</a></td></tr>
303 </tbody>
304 </table>
305 </div>
306 <div class="section">
307 <h1><a class="toc-backref" href="#id22" id="copyright" name="copyright">Copyright</a></h1>
308 <p>This document is copyright 2006 by Paul de Vrieze and licensed under the
309 <a class="reference" href="http://www.opencontent.org/openpub/">Open Publication License</a> <a class="footnote-reference" href="#id5" id="id6" name="id6">[3]</a>.</p>
310 </div>
311
312 </div>
313 <div class="footer">
314 <hr class="footer" />
315 <a class="reference" href="glep-0049.txt">View document source</a>.
316 Generated on: 2006-05-20 12:50 UTC.
317 Generated by <a class="reference" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
318
319 </div>
320 </body>
321 </html>

  ViewVC Help
Powered by ViewVC 1.1.20