1 |
Hi everyone, |
2 |
|
3 |
as everyone probably noticed, there is a current atmosphere of sinking ship, |
4 |
with quite a lot of people leaving and many agreeing that gentoo is no fun |
5 |
working on anymore. Before it's too late, I'd like to propose a big reformation |
6 |
that would help solve some of the issues we are currently having and, |
7 |
hopefully, bring back some of the fun we all had developing and using this |
8 |
distribution. |
9 |
|
10 |
|
11 |
The basic idea is to make gentoo a lot more meta than it already is. Something |
12 |
that is said quite often is that gentoo lacks a direction. Some people want it |
13 |
to be a business-oriented distribution, some want it to be bleeding-edge, some |
14 |
a multimedia, development platform, you name it. Obviously, arbitrarily |
15 |
choosing one of those directions would mean losing a lot of developers, and |
16 |
this is something we can't afford to do. The solution, of course, is to go |
17 |
meta: provide a set of tools that allow people to build the distribution of |
18 |
their dreams. |
19 |
This is something that we are already trying to do, but my opinion is that we |
20 |
are not going far enough. For one thing, we target users as the one who should |
21 |
build and customize their distribution, while it would be pretty interesting |
22 |
to also target ourselves as the ones who should be doing this "instantiation" |
23 |
work. Stage 4's were going in this direction, but they were too isolated and, as |
24 |
far as I know, they are dead now. |
25 |
|
26 |
|
27 |
|
28 |
The idea is pretty simple: modularization. There is a core part, with a couple |
29 |
hundred packages that are absolutely necessary to a system. Then we have a |
30 |
hierarchy of overlays with additional ebuilds for people's need. Top-level |
31 |
projects could look like: desktop, dev, business, embedded, misc. Then we |
32 |
would have subprojects, e.g. multimedia, DE, games for desktop, multimedia |
33 |
being itself subdivided in audio and video, and so on. This would get us a |
34 |
tree of arbitrary depth, with development happening mostly in leaves. The |
35 |
hierarchy would mostly serve as a classification tool, and projects would not |
36 |
necessarily share resources, including devs, with their subprojects, neither |
37 |
should they have decision power over them. |
38 |
|
39 |
This structure has many advantages, one of those being that since projects are |
40 |
autonomous, they handle their own recruitment, which helps the dev/user |
41 |
distinction fade away. It concentrates development in small areas where people |
42 |
will know each other well and be able to interact efficiently. By |
43 |
decentralizing, we remove the need for a big authority and give everyone the |
44 |
freedom they want. The current devrel authority is reduced to only the core |
45 |
project, though people could still ask its wisdom whenever conflicts pop up. |
46 |
Basically, the only job involving red tape and a central authority is deciding |
47 |
who gets the nice "gentoo official project" stamp, and the resources infra can |
48 |
then provide. Of course, QA would be the main, if not only, criterion in this |
49 |
choice. |
50 |
|
51 |
By having everything as modular as possible, we also allow an easy fork of a |
52 |
single project, for whatever reason. So if enough people think that mozilla is |
53 |
being badly maintained by the current project and that people in it don't want |
54 |
or can't apply their fixes, they can easily provide their own overlay with |
55 |
better ebuilds. And if their version is indeed better, over time it will get |
56 |
the official status and have superseeded smoothly the first project. Think of |
57 |
paludis and pkgcore vs portage. |
58 |
|
59 |
|
60 |
|
61 |
So far, I've come up with two main disadvantages to this reformation. The first |
62 |
is that dependencies between different projects could become a problem if not |
63 |
handled carefully. For one thing, they would require a change to ebuild |
64 |
syntax, along the lines of DEPEND="dev.perl.libs:libfoo", and of course |
65 |
support from package managers. Pulling single ebuilds when required instead of |
66 |
a full overlay would be a nice thing to have as well. Another idea to simplify |
67 |
this would be to have a central DB with every known ebuild in it (including |
68 |
non-official, bad QA ones) and the names of repositories/projects providing |
69 |
it. This would give enough information to package managers for them to make |
70 |
intelligent choices about how they should behave. |
71 |
|
72 |
The other big problem is that a migration to this structure would require a |
73 |
lot of effort from everyone. The good news is that we could use the |
74 |
opportunity to migrate to a nicer scm (and given what gentoo would look like, |
75 |
a distributed one like mercurial or git would be a natural choice) and also |
76 |
that we would get a good idea of what is maintained and what isn't. Leaving |
77 |
out stuff that no-one wants would then be very easy. Also, I believe that by |
78 |
having a clear goal, everyone should get a huge motivation boost and I believe |
79 |
that things could go quite smoothly, and even quickly. |
80 |
|
81 |
|
82 |
|
83 |
Of course, many details have been left out that should be discussed and solved |
84 |
before any decision is taken. Among those is the status of arch teams, which |
85 |
is a bit unclear. An idea would be to have the main three or four most-used |
86 |
arches (x86, amd64, ppc would be my guess) in KEYWORDS, as usual, along with a |
87 |
list of repositories that given person is allowed to keyword in, keeping arch |
88 |
teams organized as they currently are. Other arches would be projects of their |
89 |
own, with some kind of meta-overlay that specifies which ebuild from which |
90 |
overlay has been tested, etc. Or we could make no distinction between popular |
91 |
and less popular arches, I don't really have any opinion on the matter. |
92 |
Also, what to do about stuff that isn't specific to any project, even |
93 |
though it wouldn't happen so often? For instance, deciding whether we |
94 |
should participate in SoC, or this kind of things. We could use a |
95 |
council as currently, or ask for representatives of all official |
96 |
projects to punctually decide, or organize a general vote, or maybe even |
97 |
something else. |
98 |
|
99 |
|
100 |
|
101 |
To end this proposal, let me say that without a doubt, there are many holes |
102 |
and hidden problems in it. I don't claim it's perfect, nor that it will |
103 |
magically solve our problems. But I think it is a better structure than the |
104 |
one we currently have, and that switching would reduce, perhaps even stop, the |
105 |
dev bleeding, bring back freedom as well as fun, and help ease the tensions. |
106 |
|
107 |
Please criticize this with everything constructive you can think of. |
108 |
|
109 |
|
110 |
Thanks, |
111 |
/Alexandre |
112 |
-- |
113 |
Hi, I'm a .signature virus! Please copy me in your ~/.signature. |