Gentoo Archives: gentoo-dev

From: Stephen Bennett <spb@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] RFC: GLEP 49 - Package manager requirements
Date: Sat, 20 May 2006 14:40:32
Message-Id: 20060520154137.744d7e00@localhost
In Reply to: [gentoo-dev] RFC: GLEP 49 - Package manager requirements by Paul de Vrieze
1 I agree with the basic intent here, but remain unconvinced that this is
2 the best way to solve the problems at hand. See below for comments on
3 particular parts, and for what I believe could be a more elegant
4 solution. It's not a complete proposal and will be rather rough around
5 the edges, being more of a brain dump at the moment, but as far as I
6 can see it addresses all the issues that need to be.
7
8
9 On Sat, 20 May 2006 14:54:18 +0200
10 Paul de Vrieze <pauldv@g.o> wrote:
11
12 > Backwards Compatibility
13 > =======================
14 >
15 > Not a problem for this GLEP. There is no previous standard as the
16 > issue did not exist before. This GLEP is to prevent future
17 > compatibility issues.
18
19 There's a strong argument for saying that converting Portage to fit
20 the proposed standards for a primary package manager is a backwards
21 compaibility consideration. Or, with my below suggestion, making sure
22 that all existing ebuilds conform to the formalised ebuild
23 specification.
24
25 > The primary package manager is the package manager that sets the
26 > standards for the tree. All ebuilds in the tree must function
27 > with the primary package manager. As the primary package manager
28 > sets the standard it does not have to maintain compatibility with
29 > other package managers.
30
31 The current 'Portage defines the tree format' is IMO a cause of a lot
32 of problems at the moment. It would be better, I think, to define in a
33 package-manager-agnostic document just what the current ebuild format
34 (EAPI 0) means. If at any point in the future the primary package
35 manager changes in what it supports and/or requires, a new EAPI spec is
36 written. The council, or some other body, can then define which EAPI
37 formats may be used by ebuilds in the tree.
38
39 > The primary package manager is maintained on official gentoo
40 > infrastructure, under control of gentoo developers.
41
42 Reasoning behind this requirement? I can understand the sentiment, but
43 if gentoo developers have a sufficient degree of control over the
44 codebase, does it matter where it is hosted? If the worst comes to the
45 worst, require that any supported package manager be licensed under
46 GPL-2 and a group of Gentoo developers can simply pick up the latest
47 version available and fork if it is required.
48
49
50 > candidate primary package manager requirements
51 > ------------------------------------------------
52 >
53 > A candidate primary package manager aims to replace the
54 > primary package manager. The council is responsible for deciding
55 > whether this is done. The requirements are there to ensure that it
56 > is actually possible to transition a candidate primary package
57 > manager into the primary package manager.
58
59 To throw out a potentially controversial question: is there any reason
60 behind the implicit assumption that there can only be one fully
61 supported primary package manager? If, as I suggested above, the ebuild
62 format and environment is formally defined in such a manner, it should
63 be entirely possible to support two or more alternative package
64 managers. Currently this would be impractical at best because of the
65 possibility of ebuilds working with one and not the other, but with a
66 formal specification of the ebuild environment it becomes possible to
67 define in such a case whether it is a package manager bug or whether
68 the ebuild is making assumptions that are not valid according to the
69 specification.
70
71 > First of all, there must exist a transition path. This means that
72 > the on disk data of the primary package manager can be used by (or
73 > converted to a format usable by) the candidate primary package
74 > manager.
75
76 This requirement seems perfectly reasonable.
77
78 > Second, there must be a test path. It must be possible for the
79 > developers to test out the candidate primary package manager on
80 > their working systems. This means that the transition path must
81 > exist. This also means that there are no serious obstacles for
82 > reverting to the current primary package manager.
83
84 It strikes me that this, as well as the next requirement, can easily be
85 achieved by chrooting, regardless of any compatibility or lack thereof
86 between the two package managers.
87
88 > Fourth, there must be support. This means that the package manager
89 > is actively maintained under control of gentoo. If it is not
90 > maintained on gentoo infrastructure, the means must be there to
91 > move the package manager, with its change history, to gentoo
92 > infrastructure. This means that it must be maintained on a gentoo
93 > supported versioning system, or on a version system whose history
94 > can be converted to a gentoo supported versioning system.
95
96 Define "under control of gentoo". Also see above comment regarding
97 Gentoo infrastructure.
98
99 > A secondary package manager is a package manager that instead of
100 > directly aiming at replacing portage as primary package manager. As
101 > such a secondary package manager does not set the standard on the
102 > tree, but follows the standard set by the primary package manager.
103
104 Can't follow the meaning in the first sentence. As for the second, see
105 above re: defining the ebuild format.
106
107 > The first restriction is that no packages in the tree must rely on the
108 > secondary package manager. While packages may provide a level of
109 > support (while being compatible with the primary package
110 > manager) this may not result in a significant increase of
111 > features.
112
113 And again, see above.
114
115 > Users are allowed to make their own choices. However by making the
116 > tree favor a package manager that is not the primary package manager,
117 > this will lead to the secondary package manager becomming the
118 > effective primary package manager. As this will be a decision by
119 > default instead of a concious choice by the council, this is an
120 > undesirable result.
121
122 Ditto.
123
124
125 > transition phases
126 > =================
127 >
128 > primary package manager transition phase
129 > ----------------------------------------
130
131 Given comments above, this section loses most of its meaning if the
132 distinction between primary, candidate primary, and secondary is
133 removed or reduced. Better, I think, to define properly what the
134 various EAPI values mean in terms of environment and format, and which
135 values are acceptable for use in the gentoo-x86 tree. At that point,
136 the primary package manager simply becomes that which is installed by
137 default and used to build the official release media. It also becomes
138 possible to support more than one primary package manager. Any concerns
139 about one package manager taking over 'by default' can be addressed by
140 letting the council decide which EAPI values are acceptable -- if they
141 favour one in particular then the list will presumably be the list of
142 values supported by that package manager.
143
144 This alternative approach would provide the ability to enforce a
145 single primary package manager as defined in your GLEP should it be
146 thought desirable, but also provides much more flexibility in
147 supporting more than one. It also reduces the barrier of entry for a
148 package manager to be supported, since instead of defining the ebuild
149 format it must only support a format defined elsewhere, there is not
150 the same requirement for gentoo control -- rather than needing the
151 single primary package manager to be developed on Gentoo
152 infrastructure, the same requirements can be achieved by specifying
153 that there must be at least one package manager supporting the complete
154 list of current ebuild formats, developed by Gentoo developers on
155 Gentoo infrastructure. For a package manager to be supported under this
156 scheme, the requirements would be much the same as for, say, toolchain
157 packages -- the ebuild must be maintained, and it must be possible to
158 fix at short notice any bugs in it that prevent it from working with
159 any of the defined ebuild formats. This can be achieved in the same way
160 that bugs in any other package are handled -- by fixing upstream,
161 introducing patches in the ebuild, or a combination of the two.
162 Obviously a cooperative upstream is greatly beneficial, but it no
163 longer becomes an absolute requirement. Obviously the ability to
164 migrate between package managers would be beneficial, but it no longer
165 becomes such a key requirement.
166
167 This approach would be a significant departure from the way we have
168 traditionally done things, but as you say, Portage is showing its age,
169 and I believe that this would provide the most flexible, scalable
170 approach to allow it to be replaced or improved upon.
171
172 Comments?
173 --
174 gentoo-dev@g.o mailing list

Replies

Subject Author
Re: [gentoo-dev] RFC: GLEP 49 - Package manager requirements Marius Mauch <genone@g.o>