blob: 23585de504198e6a78b143b4ecc432600860d47f [file] [log] [blame] [view]
---
title: "Gerrit ESC Meeting Minutes"
tags: esc
keywords: esc minutes
permalink: 2021-02-02-esc-minutes.html
summary: "Minutes from the ESC meeting held on Feb 2, 2021"
hide_sidebar: true
hide_navtoggle: true
toc: true
---
## Engineering Steering Committee Meeting, Feb 2, 2021
### Attendees
Ben Rohlfs, Han-Wen Nienhuys, Luca Milanesio, Saša Živkov
### Place/Date/Duration
Online, Feb 2, 11:00 - 11:45 CET
### Next meeting
March 02, 2021 - 11:00 - 12:00 CET
## Minutes
### [Selection bug](https://issues.gerritcodereview.com/issues/40011496) in Safari
Frontend team at Google added a polyfill workaround. This works for
older versions of Safari, but not for the latest version of Safari.
This is a [browser
bug](https://bugs.webkit.org/show_bug.cgi?id=163921).
Webkit is open-source, so someone with enough time could find out what
is going on, but Google users are not impacted, so Google can't prioritize a
more in-depth investigation, especially given that this is a browser bug.
Some deployments see larger shares of Safari users, and it's the
default browser for mobile iOS platforms. Luca will try to reach out
to the Safari team to get this resolved.
### 24h grace period to let others comment
Context is https://gerrit-review.googlesource.com/c/gerrit/+/294087.
There used to be an unwritten rule to let other timezones look at the
change too. For some changes (eg. fixes), it is appropriate to submit
much more quickly. This change was not a trivial fix, though.
Resolution: introduce a 24h waiting period for changes that imply a
long-term support commitment, eg. user-visible features, or API
extensions.
### ElasticSearch moved to SSPL
ElasticSearch moved releases to SSPL starting 7.11. Google is opposed
to SSPL software on principle. SAP also forbids it.
Context: index support started with Lucene and Solr. Solr was clunky,
so collabnet and ericsson worked to move to Elastic, but neither
deployed. Alibaba seems to be using it.
Long term technical solution: use ES as a module (ie. a non-swappable
part of Gerrit, compiled separately). ES also slowed down our
development, so getting rid of it may be a net positive.
Resolution: we will freeze the version for now. Han-Wen will reach out
to Jacek and Marco to see if they have interest in maintaining it.
### DoS fix for HTTP sessions.
Advance notice by large deployments was well received. Upgrade went smoothly.
Got requests to document of our advance notice process (OpenStack).
Luca will followup.
Wikimedia builds from source, and wants to see the patch. We could
create `refs/heads/security/*` in main gerrit repo, but risky: it's
easy to upload to the wrong branch, so we'll keep using the separate
repository.
Resolution: find a way to provide select individuals view permission
on our security fixes repo.
### Event rewrite at Google
Started, but we had no plan for integration into upstream, so taking
internally for now.
The rough plan is: provide diff between NoteDb SHA1s as protocol
buffer, eg. by comparing two ChangeNoteStateProto proto. Internally,
we will ship this to our internal pubsub systems.
Marcin is anxious to jump in. Han-Wen: need a plan to decide how these
diffs are generated in gerrit upstream, and then hook them up to the
event machinery.
Han-Wen will publish a sanitized version of our internal design doc.
### Inter-plugin communication?
First attempt in
https://gerrit-review.googlesource.com/c/gerrit/+/54428, but abandoned
because the scripting plugin doesn't fit.
This is a feature with potential future support implications. For
example, if we document that loading other plugins by reflection
works, we promise to not break it.
We don't want to repeat Jenkins' mistake, where every plugin can call
into everything creating a maintenance nightmare.
Do we want a designdoc? Consensus: yes. Topics to consider:
* should plugins be testable?
* what happens to a caller if a dependency provider is unloaded?
* does verification (eg. type checking) happen compile time or runtime?
* which parts of a plugin are available to callers?
Currently there are already methods that plugins can use to communicate:
1. send events (but: very loose coupling)
2. share a common interface loaded as libmodule.
### Long reviews leading to demotivation
[Recent
change](https://gerrit-review.googlesource.com/c/plugins/replication/+/292364)
took a lot of roundtrips; stressful experience for the uploader and reviewer.
Should we codify boy scout rules ("change should do 1 thing",
"leave code better than it was before", "reviews should enlighten")?
Consensus: the rules in abstract seem obvious, but subjective when
applied. This is a people problem, so have to escalate earlier to CMs.