Gentoo Archives: gentoo-dev

From: Alexandre Buisse <nattfodd@g.o>
To: gentoo-dev@l.g.o, gentoo-core@l.g.o
Subject: [gentoo-dev] [RFC] New metastructure proposal
Date: Tue, 10 Apr 2007 19:36:37
Message-Id: 20070410193249.GD7991@ubik
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.

Replies

Subject Author
Re: [gentoo-dev] [RFC] New metastructure proposal "Petteri Räty" <betelgeuse@g.o>
Re: [gentoo-dev] [RFC] New metastructure proposal Chris Gianelloni <wolf31o2@g.o>
[gentoo-dev] Re: [gentoo-core] [RFC] New metastructure proposal Alon Bar-Lev <alonbl@g.o>
[gentoo-dev] Re: [gentoo-core] [RFC] New metastructure proposal "Rémi Cardona" <remi@g.o>
Re: [gentoo-dev] [RFC] New metastructure proposal Marius Mauch <genone@g.o>
Re: [gentoo-dev] [RFC] New metastructure proposal Charlie Shepherd <masterdriverz@×××××.com>
Re: [gentoo-dev] [RFC] New metastructure proposal Andrew Cowie <andrew@×××××××××××××××××××.com>