An uproar over the Fedora Git forge decision
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:
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:
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:
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:
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:
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:
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:
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:
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:
[...] 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:
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:
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:
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.
Posted Apr 16, 2020 0:29 UTC (Thu)
by Conan_Kudo (subscriber, #103240)
[Link]
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.
Posted Apr 16, 2020 0:43 UTC (Thu)
by pizza (subscriber, #46)
[Link] (3 responses)
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?
Posted Apr 16, 2020 20:20 UTC (Thu)
by mathstuf (subscriber, #69389)
[Link] (2 responses)
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)
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
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).
Posted Apr 17, 2020 12:36 UTC (Fri)
by Conan_Kudo (subscriber, #103240)
[Link] (1 responses)
Posted Apr 17, 2020 17:37 UTC (Fri)
by mathstuf (subscriber, #69389)
[Link]
Posted Apr 16, 2020 5:50 UTC (Thu)
by madhatter (subscriber, #4665)
[Link] (5 responses)
Plus ca change, plus c'est la meme chose.
Posted Apr 16, 2020 17:59 UTC (Thu)
by NYKevin (subscriber, #129325)
[Link] (3 responses)
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.
Posted Apr 16, 2020 18:08 UTC (Thu)
by amacater (subscriber, #790)
[Link] (1 responses)
Posted Apr 16, 2020 18:36 UTC (Thu)
by NYKevin (subscriber, #129325)
[Link]
Posted Apr 17, 2020 2:17 UTC (Fri)
by re:fi.64 (subscriber, #132628)
[Link]
Posted Apr 24, 2020 1:34 UTC (Fri)
by donbarry (guest, #10485)
[Link]
That was the straw that pushed me from Redhat to Debian, and I've never looked back.
Posted Apr 16, 2020 15:20 UTC (Thu)
by djc (subscriber, #56880)
[Link]
Posted Apr 19, 2020 8:12 UTC (Sun)
by abo (subscriber, #77288)
[Link]
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.
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.
An uproar over the Fedora Git forge decision
"dist-git" vs "git-forge"
"dist-git" vs "git-forge"
- 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)
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
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 ("dist-git" vs "git-forge"
#pagure
on Freenode).
"dist-git" vs "git-forge"
An uproar over the Fedora Git forge decision
An uproar over the Fedora Git forge decision
An uproar over the Fedora Git forge decision
An uproar over the Fedora Git forge decision
An uproar over the Fedora Git forge decision
An uproar over the Fedora Git forge decision
An uproar over the Fedora Git forge decision
An uproar over the Fedora Git forge decision
"We are opting for Gitlab for our dist git and project hosting"