|
|
Subscribe / Log in / New account

An uproar over the Fedora Git forge decision

By Jake Edge
April 15, 2020

We last looked in on the question of a Git forge for Fedora at the end of January—which seems like nearly a lifetime ago, but is, in truth, only around two-and-a-half months back. At that time, requirements were being gathered for an open decision-making process that would seemingly play out with lots of community participation. That is not at all what transpired, however, and much of the Fedora community feels that its needs have not been taken into consideration. There are a number of lessons that can be learned from all of this.

Announcement woes

After a lengthy requirements-gathering thread on the fedora-devel mailing list back in January, things went rather quiet until the March 28 posting of "CPE Weekly", which is a newsletter that covers the activities of the Red Hat Community Platform Engineering (CPE) team. That is the organization behind the Git forge effort; tucked into the end of the newsletter was the "announcement" that the team had chosen GitLab as the forge for Fedora and CentOS, while still continuing to run Fedora Pagure with community assistance for projects that want to use it as their Git host.

There was, it seems, a plan to announce the decision on the Fedora Community Blog (and on Blog.CentOS.org). But, as noted by CPE manager Leigh Griffin, that did not happen due to "unavailability and illness" of a volunteer who was going to do it, which meant the first mention of the decision ended up in the already scheduled newsletter. The net result, as Neal Gompa pointed out, was that "the delivery of this decision sucked".

Beyond that, though, Gompa went through the user stories that had been gathered as part of the decision-making process at great length; he said that many of them could not be satisfied with any open-source solution, so in some sense he is not surprised that CPE looked beyond Pagure. But many of the requirements identified also make it clear that the open-source GitLab Community Edition (CE) would not fulfill the needs listed, so he thinks that CPE is really aiming for the proprietary Ultimate/Gold edition.

As might be guessed, Griffin largely disagreed with much of Gompa's point-by-point analysis; he also said that no decision had been made on which of GitLab's offerings would be used. The requirements were gathered from multiple stakeholders within Red Hat, including Fedora, CentOS, Enterprise Linux (RHEL), and CPE itself, but were generally not really evaluated, just collected: "It was not our place to question valid use cases or requirements from our stakeholders."

Julen Landa Alustiza was surprised that the decision was made without following some of the steps that were promised. He pointed to the original blog post that announced the effort, which mentioned things like "a live video call and associated IRC meetings will be held and advertised in advance to discuss the requirements, talk about concerns and address any questions". None of those things happened, he said. Griffin agreed:

We felt that the discussions came to a natural conclusion for each stakeholder group. I should have returned to that thread and updated folks that we had taken all the requirements in, that's on me, you have my apologies.

Others were surprised by how the process played out as well. David Kaufman wondered about the role of the Fedora Engineering Steering Committee (FESCo), Fedora Council, and the CentOS Governing Board in the decision. As Griffin pointed out, though, those organizations do not run the infrastructure in question—CPE does. As Miro Hrončok put it:

FESCo cannot actually make anyone do anything. So even if FESCo says: "The dist-git will run on Pagure", CPE can say: "Whatever, but we are not maintaining it."

Not sure what would be the result of such situation, but I am pretty sure it would not be very nice.

Fedora project leader Matthew Miller, who is also a member of the council, described the council's involvement:

We were asked to help collect the user stories and requirements. We also gave the strong feedback that the community wasn't interested in GitHub for a variety of reasons, which isn't a user-story per se but obviously important.

He quoted Hrončok's caution, noting that the council is in the same position as FESCo: advisory-only. But he is optimistic that things will work out well:

[...] Ultimately, the CPE team is going to put huge amounts of time, effort, and money into running this. So, I feel very comfortable in saying that this really is that team's decision to make.

At the same time, having a dist-git and a git-forge at all is totally meaningless if the Fedora contributor community's needs aren't served. I see the Council's role here in making sure they are.

And, while obviously communication could have been better and maybe a longer process would have helped, ultimately, I have a lot of trust for the people who work on CPE. Let's help them figure out how to best help all of us.

While that conversation was ongoing, Griffin posted the (delayed) announcement of the decision, which set off another enormous thread. Many of the same complaints (and defenses) were heard, but the overarching unhappiness from multiple community members was perhaps best summed up by Hrončok:

[...] I am not [criticizing] the decision per se, I am just very sad with the communication around it.

Most importantly the following:

  • 1) At the beginning, it appeared that Fedora will be in the loop when the decision will be made, but it wasn't. After collecting the requirements, there was no Fedora involvement.
  • 2) The use cases Fedora collected were (IMHO artificially) merged to "more general" requirements.
  • 3) The "I respect that there is disagreement but Gitlab is the choice we are making" attitude.

Requirements lost

But it turns out that some of the requirements that the Fedora community thought it was providing to the process got watered down along the way. In particular, the first two items on the proposed requirements list, which were that the solution be self-hosting and also be free and open-source software (FOSS), were never quite communicated to CPE as requirements. Along with others, Kevin Kofler raised the point, noting that considering the GitLab-hosted solutions, which are proprietary, "should be an absolute no go". Michael Catanzaro agreed:

Some failure of process or communication must have occurred somewhere along the lines, because open source should have been the first and most important requirement. A proprietary software solution is incompatible with the ethos and purpose of the Fedora project. I ask CPE to revise its requirements list to include open source as the first and most important requirement from the Fedora community. If that's incompatible with CentOS's need for merge request approvals or whatever else, then we need to accept that sharing the same forge is simply not going to work.

If open source is really not going to be a requirement, then we can ask Council to politely reject CPE's offer to continue hosting our forge, and instead round up some budget to keep Pagure running without help from CPE.

That communication failure was teased out in a sub-thread that discussed the staffing levels of the CPE team. Quite a ways down in a lengthy message from Adam Williamson, he pointed to the difference between the proposed list and the final summarized list that was used to make the decision:

However, the top three points on the Fedora list relate to F/OSS and self-hosting principles. These points are entirely missing from the "summarized" list. They have not been "merged" with "duplications" or "similar in theme requirements". The "spirit" of them has not been "captured" in a "User Story". They are just *not there*.

Griffin noted that the list submitted to CPE is not the same as the one proposed (even though earlier Griffin had mistakenly said that it was). After a request from Williamson, Fedora Program Manager Ben Cotton posted the final list, which did not, in fact, contain the self-hosting and FOSS requirements. Williamson was understandably dismayed:

Uh...wow.

So, Leigh was correct, and the F/OSS and self-hosting requirements are entirely removed from this list. Not adjusted or de-emphasized or given nuance, but simply removed entirely.

[...] The end result of this is that we (Fedora) have somehow indicated to CPE that we have no preference whatsoever for F/OSS tooling. I do not believe that should have been the case.

[...] One thing I'll note here: this is *exactly* the kind of thing that would have come to light very quickly if the open process which was committed to at the start had actually been followed through on.

Cotton said that he "included a reminder that FOSS is always our strong preference where viable" when he sent the list, but he apologized for not making it into a "user story" as part of the requirements. In the previous message, he had also apologized for not posting the final list at the same time it was sent, which might have caught the problem earlier. As is perhaps not surprising at this point, Griffin acknowledged that CPE simply treated the FOSS and self-hosting items as a "strong preference" and not a requirement, but: "It will certainly influence our decision to opt for Gitlab CE for the Fedora preference to stay open source."

There was some additional unhappiness expressed when the next "CPE Weekly" was posted on April 4. It contained an apology for the communication breakdown and a request to continue engaging with the team:

Firstly, let us apologize again to the communities for our drop in communication between the requirement collecting phase and the decision making phase. As we have said before, it was in no way, shape or form an intentional lapse of communications. However we do recognize that it was still nonetheless a decision that was not made in public, and for that we can only now offer our apologies for this mistake and learn a hard lesson from it.

[...] While the discussions on the lists are deeply emotional, they are still incredibly valuable to us to truly comprehend the importance of our next steps in ensuring we make the right choices in the coming months.

Randy Barlow said that it was not the only thing that could have been done. "You can hold off on making a decision, and follow an open process instead." In addition, he was skeptical that the community could really benefit from engaging with CPE "when it has demonstrated that it does not meaningfully engage with the community". Chris Murphy agreed:

Flaws have been discovered in the process used to arrive at the decision, and therefore it's not clear whether the decision is valid. The mistake has been admitted, and treating it as moot suggests in fact nothing has been learned from the mistake.

Griffin, however, clearly feels that the decision is the right one, no matter what flaws there were in the process. "Our choice of Forge that CPE will support is valid from the requirements we received". Part of the disconnect may be that Griffin and CPE see the council as the "engagement point" with Fedora, while the community has always been rather more freewheeling than that. In addition, FESCo has typically gotten involved in changes of this nature, as Hrončok, who is a FESCo member, noted in a comment on a council issue ticket:

A question of dist-git is an Engineering question (with strong FOSS and community aspects). I see Council as a governance body for the Fedora project, but things that impact the Fedora distro on technical level should IMHO be reviewed at FESCo.

CPE management decided to go [through] Council, and sadly nobody from the Council looped FESCo into the decision process here (neither the Fedora Council Engineering Rep nor the Fedora Project Leader nor Fedora Program Manager nor anybody else).

That council issue resulted in an April 15 statement from the council about the Git forge decision. It expresses support for the decision made, while accepting blame for the communication woes. It also notes that the version of GitLab to be used has not been determined yet, but that "we are looking at the possibility of using GitLab CE for our dist-git specifically" no matter what version is used for other purposes.

The cynical among us can perhaps be forgiven for noting that all of the mistakes made fell pretty much perfectly to ensure that GitLab was chosen, while providing cover for CPE in making that decision. Even those who are not overly cynical may have some suspicions that the process was, to a certain extent, designed to arrive at that conclusion. As people suspected back when the process was announced in February, perhaps it was simply an exercise to justify dropping Pagure. For example, Williamson reflected on what he saw as the Kafka-esque nature of the process:

At the outset of this whole mess, quite a lot of people said "well this is obviously just all a pretext for dropping Pagure and going to hosted Gitlab". Much offence seemed to be taken at this, and much was made of this absolutely not being the case at all, and Pagure being definitely a contender, and - as was pointed out upthread - how there would be public meetings and feedback sessions and a whole three-ring circus before a final decision was made. Which very definitely hadn't already been made, or anything.

And now three days into this thread, you're saying "well, CPE doesn't have the resources to maintain Pagure". So, what, people were right in the first place, and this was really just the Dump Pagure Project all along?

If so what was the point of all this half-baked kabuki nonsense? Why not just say so up-front? If CPE never thought it had the resources to maintain Pagure and Pagure was never really a contender, and Github was as clearly a non-starter as Leigh says it was, why didn't we just say "yeah no we're going to Gitlab" four months (or whatever it was) ago and save all of this silliness? We agree that this process wasn't actually very open at all, but *even if it had been*, if the result was preordained, what would have been the point?

Once again, the pre-ordination of the decision was denied by Griffin, but even in that message there are hints that the Pagure option was quickly eliminated. It would seem that it might have been far easier and created much less rancor to simply state up front that Pagure was not viable under the requirements that were likely pretty well-known long before the gathering phase was started. Committing to a formalized process and then dropping the ball in various ways throughout that process has clearly left a bad taste in many mouths. Even unpopular decisions can be made directly and openly in fractious communities if the communication is handled well. When the communication is botched, however, all bets are off—even relatively popular decisions can go badly awry.



to post comments

An uproar over the Fedora Git forge decision

Posted Apr 16, 2020 0:29 UTC (Thu) by Conan_Kudo (subscriber, #103240) [Link]

It's important to note that the Pagure community didn't even know the decision until after it was announced. At no point was there an opportunity for the project contributors to analyze and prioritize what CPE wanted from a Git forge.

Generally speaking, throughout the process, the Fedora community has largely said that their needs were met and that they were happy with what Pagure provided as Fedora's Dist-Git server.

Is it perfect? No. But in general, as user requests were coming in from Fedora, they were being prioritized and worked on, even though CPE was not working on Pagure in that timeframe. In the past 18 months, Pagure made a major version release, and then made a dozen successive feature and bugfix releases on almost a monthly cadence. The project is still getting features, contributors, and interest from other parties.

By all rights, Pagure is probably the most successful project from the Fedora Engineering team (which was absorbed into the CPE team). Unlike HyperKitty and Ansible, which neither are associated with Fedora even though both were created in Fedora, Pagure is very much associated with the Fedora Project, and has provided an opportunity to show that Fedora is a place where innovation can happen.

As a member of the Pagure community myself, I intend to continue to support the project the best that I can, and help drive interest, adoption, and increase contributors. I love Pagure not just because it's a cool project that I can grok and contribute to, but because it's a project that makes Free Software and open data principles the forefront of software project development and management. And that those features can potentially be used for supporting federated/decentralized development is an awesome cherry on top! And all that is important to me. Joey Hess said that open data for Git hosting is the single most important part of replacing Github, and this is something Pagure does right, as all project data is stored as Git repos you can mirror, interact with, or whatever. I hope others will see the potential in Pagure, use it, and also contribute to its future development.

"dist-git" vs "git-forge"

Posted Apr 16, 2020 0:43 UTC (Thu) by pizza (subscriber, #46) [Link] (3 responses)

Using GitLab as a "git-forge" (aka random project hosting) is relatively uncontroversial, though it was pointed out that several of Pagure's supposed deficiencies (notably https access to repositories) were actually intentional, to meet operational requirements imposed by Red Hat.

Meanwhile, what really has everyone up in arms here is that Fedora has a great deal of custom tooling that makes up "dist-git" -- aka the core infrastructure that used to put together the distribution. Currently this is all very tightly tied into Pagure, and would have to be largely recreated for GitLab -- as would many other GitLab features that don't exist in the open-source "community edition".

No effort was made to quantify the scope, effort, or cost of reworking dist-git to work on top of Gitlab, nor the effort needed to bring Gitlab CE to the level of necessary functionality to ingegrate into other Fedora infrastructure. Would Gitlab accept features into CE that they have intentionally left out (to make the proprietary versions more attractive?) Has CPE taken into account the ongoing cost of maintaining their own fork of Gitlab CE?

And what would be the outcome if all of that reinventing-the-wheel effort were to be put into improving Pagure instead?

"dist-git" vs "git-forge"

Posted Apr 16, 2020 20:20 UTC (Thu) by mathstuf (subscriber, #69389) [Link] (2 responses)

Shameless plug here.

At work, we went to GitLab (CE) years ago. To make up for some gaps in functionality to match our workflow, we had our own robot which was on Gerrit first adapted into a Python script. Later features ended up making that gotta-get-it-working attempt a dead end and now it's a set of Rust crates. Granted, it's more tuned for actual projects rather than the kinds of repos `.spec` files tend to live in, but it has these things which may be useful:

- code checks (also possible via CI usually)
- reformatting (if rpmlint --fix exists) branches (instead of "You're not formatted right. Here's a diff, go apply it then come back to me.")
- performing merges (with backporting available, though Fedora usually does fast-forward, that'd be possible here too)
- because it performs the merge, you can keep the actual merge button away from everyone and instead just let the robot have elevated privileges (I have a task to make it check for approvals and block merging without, but it's just been a wishlist item so far)

The infrastructure is such that it could be used for Pagure as well (it currently just supports GitHub and GitLab) if it has a suitable API to fill out the information needed by the various actions.

Repo with the actions: https://gitlab.kitware.com/utils/rust-ghostflow
Available content checks (extensible by other crates if needed): https://gitlab.kitware.com/utils/rust-git-checks
The webhook-based daemon: https://gitlab.kitware.com/utils/ghostflow-director

I'd like to get it to work as a CI job rather than via webhooks, but there are various blockers to that (time for GitHub and various feature requests are in on GitLab). Fedora might prefer webhooks though (for centralization of the configuration).

"dist-git" vs "git-forge"

Posted Apr 17, 2020 12:36 UTC (Fri) by Conan_Kudo (subscriber, #103240) [Link] (1 responses)

This stuff looks interesting for both pagure.io and src.fedoraproject.org... Would you consider introducing this to the community? There's a mailing list (pagure-devel@lists.pagure.io) and an IRC channel (#pagure on Freenode).

"dist-git" vs "git-forge"

Posted Apr 17, 2020 17:37 UTC (Fri) by mathstuf (subscriber, #69389) [Link]

Sure. I'll try and write up an email by tomorrow.

An uproar over the Fedora Git forge decision

Posted Apr 16, 2020 5:50 UTC (Thu) by madhatter (subscriber, #4665) [Link] (5 responses)

Wow, does this ever remind me of something: https://lwn.net/Articles/83360/

Plus ca change, plus c'est la meme chose.

An uproar over the Fedora Git forge decision

Posted Apr 16, 2020 17:59 UTC (Thu) by NYKevin (subscriber, #129325) [Link] (3 responses)

There is a tendency in these discussions to anthropomorphize large corporations. Which is dangerous, because it is grossly inaccurate to reality.

A large corporation is difficult to steer from the top (because of the sheer number of decisions to be made overall) and impossible to steer from the bottom (because the most you can do is convince one manager at a time to support your way of thinking). The people who are really steering are hundreds or thousands of middle managers, each of whom has a slightly different understanding of the business's high-level needs and goals, a moderately different set of internal resources and levers of power, and a radically different understanding of the business's immediate problems. Every now and then, their collective decision-making is bad enough that an executive gets involved and tells them "you screwed up, now fix it." Every now and then, their collective decision-making is good enough that the corporation does something that looks very smart, to an outside observer. But most of the time, the corporation drunkenly shambles in the general direction of profitability, while the outside world tries to figure out what on Earth it could possibly be thinking. This is the wrong question. Corporations don't think. The people running the corporation think, but there are many of them and each one has a peculiar and limited understanding of the corporation's broader scope.

(Some large corporations are better at dealing with this problem than others, in some cases a lot better. But they all suffer from it to some extent.)

TL;DR: Never ascribe to malice that which can be adequately explained by collective decision-making, because the latter is amazingly inefficient.

An uproar over the Fedora Git forge decision

Posted Apr 16, 2020 18:08 UTC (Thu) by amacater (subscriber, #790) [Link] (1 responses)

Can I steal this, please, and walk it into a large organisation to show them? :) This is a great summary of a whole bunch of things and is cogent and easy to understand - even for middle managers.

An uproar over the Fedora Git forge decision

Posted Apr 16, 2020 18:36 UTC (Thu) by NYKevin (subscriber, #129325) [Link]

Feel free, I stole the core ideas from someone else.

An uproar over the Fedora Git forge decision

Posted Apr 17, 2020 2:17 UTC (Fri) by re:fi.64 (subscriber, #132628) [Link]

Absolutely brilliantly stated, I almost wish there were a way to "like" comments on LWN now.

An uproar over the Fedora Git forge decision

Posted Apr 24, 2020 1:34 UTC (Fri) by donbarry (guest, #10485) [Link]

Thanks for this old and precious memory, it feels like yesterday that I read this, and it's shocking that it's now 16 years.

That was the straw that pushed me from Redhat to Debian, and I've never looked back.

An uproar over the Fedora Git forge decision

Posted Apr 16, 2020 15:20 UTC (Thu) by djc (subscriber, #56880) [Link]

"We last looked in ... at the end of January" -- except there was a short-form LWN item that saw quite a bit of discussion:

https://lwn.net/Articles/816282/

An uproar over the Fedora Git forge decision

Posted Apr 19, 2020 8:12 UTC (Sun) by abo (subscriber, #77288) [Link]

From the CPE Weekly:
"We are opting for Gitlab for our dist git and project hosting"

It doesn't really make sense to treat "Gitlab" as a single option. The different editions should be evaluated separately and eliminated individually based on requirements.

By treating them as a single option Pagure would first be compared to the non-free Gitlab on functional requirements, and then the Gitlab editions would only be compared against each other when it came to possible F/OSS and self-hosting requirements.


Copyright © 2020, Eklektix, Inc.
This article may be redistributed under the terms of the Creative Commons CC BY-SA 4.0 license
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds