I think, as a whole, this direction is reasonable. Thank you, Emmanuele, for putting so much time and care into this.
I’ll start with my tiny nitpick: let’s call the OS team the “System” team instead, with the expectation that there will be a dedicated “GNOME OS” team in the future representing the interests of the GNOME OS project. Otherwise there will just be confusion when that day comes.
Overall, my concern is that we don’t have enough people for this bureaucratic process to shift us away from the status quo. It seems to me like we’ll still have de-facto “maintainers” who have the institutional knowledge over their corner of the stack. Not even necessarily because folks want to hoard institutional knowledge, but simply because we don’t have enough people interested in involving themselves. Someone needs to keep triaging issues/reviewing MRs/fixing bugs/etc, and it’s going to be the people who know most about a specific codebase. I fear the end result will be teams that have members working on unrelated projects, or grouped into subteams that consist essentially of individuals.
I’ll use myself as an example: I maintain gnome-session and co-maintain GDM, and only because RedHat had me replace Ray (otherwise I wouldn’t have been interested enough in the problems there to overcome the opportunity cost of getting into it). It’s not that these were particularly difficult codebases for me to wrap my head around, and Ray was very happy to get me up to speed in their details. It took some time and effort, but I was able to take over. The difficult part isn’t the official role of a maintainer: tagging releases. It’s the unofficial role of “person who understands this code enough to meaningfully review MRs and think of solutions to issue reports”.
If GDM gets grouped with Mutter under the “System Team”, I wouldn’t feel any more comfortable reviewing and hitting the merge button on a Mutter MR than I do today (that is: not at all). Nor do I expect that I’d suddenly become a lot more interested in the internals of Mutter, to the point where I’d spend the time and energy to learn enough that it would become appropriate for me to review MRs there. The same applies vice versa too: I don’t expect Mutter developers to suddenly become interested enough in GDM to gain enough of an understanding of all of the complexity (i.e. PAM
) for it to be appropriate to start reviewing and landing MRs.
So in terms of this proposal, I can’t yet wrap my head around how all of this is supposed to fit together to solve the fiefdom problem. I suppose a valid course of action is just to accept that this is what it is, and that the people with de-facto power today (by being a maintainer of a project) will have formal power when we put these structures into place (by being the sole interested party for a project on the relevant team). But I’m not certain that this is all you intend to achieve
My other concern is projects that GNOME deeply involves itself with, but aren’t technically part of GNOME. There’s lots of these: many different freedesktop services, Flatpak, Flathub, portals, Wayland, systemd, etc. I’ll pick on Flatpak for the purposes of demonstrating my point.
Flatpak isn’t a GNOME project. But GNOME developers go work on things in Flatpak because we want these features in GNOME. It’s unclear to me how that interacts with this whole structure: GNOME is interested in certain Flatpak functionality, Flatpak is interested in representing itself in GNOME’s technical decision making process because it’s legitimately quite an important part of GNOME, and yet there’s no mechanism for that.
So the question is: how do we integrate these important non-GNOME projects that GNOME really involves itself with, and potentially GNOME people are involved in maintaining them? The governance structure would have no formal power over these projects, but might still have power over the GNOME contributors contributing to these projects on behalf of GNOME.
Something to consider: projects like systemd have their own governance structures. I wonder if we need some kind of formal mechanism for cross-project communication channels that can exist as members of teams. For instance, the System team might include someone who’s involved in systemd and not necessarily a GNOME developer - just the systemd project gets to elect a liaison into GNOME’s technical leadership structure (and vice versa). In practice, there would probably be a single person representing GNOME’s interests to systemd and systemd’s interests to GNOME