/[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.7 - (hide annotations) (download) (as text)
Sun Oct 14 17:00:15 2007 UTC (6 years, 10 months ago) by antarus
Branch: MAIN
CVS Tags: HEAD
Changes since 1.6: +4 -251 lines
File MIME type: text/html
the canary on 53 went well, changing the rest

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

  ViewVC Help
Powered by ViewVC 1.1.20