[webkit-dev] Issue reports, merge requests, etc. (was: WebKit Transition to Git)

Michael Catanzaro mcatanzaro at gnome.org
Fri Oct 2 12:53:09 PDT 2020


On Fri, Oct 2, 2020 at 11:51 am, Ryosuke Niwa <rniwa at webkit.org> wrote:
> Since Igalia has a lot
> more experience working with other open source projects, do you have
> some suggestions in how to approach that?

Sorry for a long-ish mail. I didn't mean for this to turn into an 
essay. Too late. :P

I actually moved to Red Hat, but anyway, I would say first step is to 
ensure every incoming issue is triaged, at least once when initially 
reported, and every merge request given at least cursory review within 
a reasonable amount of time. That's how open source projects attract 
and retain community contributors, and it's been a weakness for WebKit 
for a while (we're not the worst at this, but certainly not good at it 
either). One possible answer for this is to have a "project manager" or 
similar role to triage and prioritize issues, but of course it can also 
be done by developers working together (possibly according to some 
rotation).

WebKit is such a big project that I suspect almost nobody has enough 
expertise to triage all incoming bugs, but most of us have enough 
expertise to figure out which issue labels to apply to an incoming bug 
to pass the issue off to more specialized experts. On GNOME GitLab we 
label incoming issues with Bug, Crash, Enhancement, or Feature (the 
difference between Enhancement and Feature is hazy) and have a variety 
of global and per-project labels that can also be applied to issues 
[1]. The list of current components in WebKit Bugzilla would be a good 
starting point to use here. Every new issue gets reviewed and either 
gets closed or else gets a label applied to indicate it has been 
triaged, usually within one business day. If an issue is open and 
doesn't have any labels, we know it has not been triaged.

A lot of bugs can be closed immediately because they're reported in the 
wrong place, for instance. Most crashes are reported without a 
backtrace; to those, we attach a Needs Information label and point the 
reporter to instructions for getting a backtrace with gdb, and close 
after a few days if not provided. The details don't matter so much as 
the fact that the issue has received minimal human attention. In the 
rare cases where a bug report is perfect and all I need to do is add 
issue labels, I give the issue an upvote to indicate I've seen it, so 
the reporter knows it hasn't been *completely* ignored, even if nobody 
fixes it. The details don't matter so much as that contributors and 
issue reporters feel like they've received at least some attention and 
aren't shouting into a bug wasteland.

Then developers subscribe to project-specific labels in accordance with 
their expertise and tolerance for mail. E.g. I watch all issues for 
some projects, but for GLib I'm only subscribed to networking-related 
labels, since problems in the network-related code often impact WebKit. 
Some developers will want to watch only for CSS bugs, only layout bugs, 
only JSC bugs, only WebKitGTK bugs, etc.

Of course, triaging issues doesn't mean they actually get fixed, but 
it's a necessary first step. (And once isn't really enough, either. 
Most of our bugs from 2008 are probably no longer valid, but it takes 
time to review old bugs, and not many people have enough specialized 
technical expertise to triage outside their area of expertise. Anyway, 
once is a starting point.)

Responding to merge requests (or patch reviews) in a timely manner is 
also important (otherwise, contributors disappear). Merge requests take 
longer than issues, but it's good to get to each one within a couple 
days; otherwise, they really start to pile up. We currently have 
patches awaiting review from 2017 [2], and that's just the last time 
somebody decided to mass-deny old review requests. And a lot of these 
are from Apple/Igalia/Sony, who all know who to CC for reviews; imagine 
how much harder it is for someone not familiar with the WebKit 
community to get a patch reviewed. ;) GitHub will probably help with 
this because it puts merge requests front-and-center in its UI, instead 
of requiring us to first discover then take the time to sort through 
the request queue. It's hard to use GitHub without habitually reviewing 
pending requests. ;) The number of open issues and MRs is even clearly 
displayed as a sort of challenge to reduce the number. But we'd need 
some workflow for directing merge requests to appropriate reviewers.

When we move to GitHub, you can expect to start receiving merge 
requests from people who would not take the time and effort to create a 
WebKit Bugzilla account and learn how to use our arcane ChangeLog and 
patch creation scripts. Epiphany has twice as many active contributors 
and probably 3-4x more activity today on GNOME GitLab than it did when 
we used GNOME Bugzilla, and I'm pretty sure that's mainly due to GitLab 
rather than other factors. I wouldn't expect that dramatic a change for 
WebKit, since most WebKit contributors are professional rather than 
volunteer contributors, but I'd guess we'll attract at least that much 
more volunteer community contributor activity. It might take a year or 
two for the change to really become noticeable, but I expect it will be 
significant because moving to GitHub eliminates several barriers to 
contribution.

One more thing we can do is to stop updating the ChangeLog files. These 
files are archaic and not very useful, as long as we continue to write 
good, descriptive commit messages.

We'll need a script to migrate issues from WebKit Bugzilla to GitHub. 
(We don't have to do this initially, to make the initial transition 
smaller, but we *should* do it, to realize all the above benefits.) 
GNOME has a migration script that we used to migrate issues to GitLab, 
but of course we don't have one for GitHub. I understand GitHub has a 
REST API, though, so should be possible.

Lastly, I'll just say that GitHub CI should be a lot nicer than EWS 
bubbles in Bugzilla. ;) I don't have any experience with GitHub CI -- I 
hear it's not quite as powerful as GitLab's? -- but I assume it allows 
us to upload podman/docker images to run whatever checks we want. This 
is really great and the more we take advantage of it, the better.

Michael

[1] https://gitlab.gnome.org/GNOME/epiphany/-/labels
[2] 
https://bugs.webkit.org/request.cgi?action=queue&requester=&product=&type=review&requestee=&component=&group=type&do_union=1




More information about the webkit-dev mailing list