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 |