blob: 83f242a3f4e01f4be882188edfaeb773d80a22e7 [file] [log] [blame] [view]
---
title: Summary of the Gerrit User Summit 2019 in Gothenburg
tags: news summit hackathon
keywords: news summit hackathon
permalink: 2019-09-11-user-summit-gothenburg-summary.html
summary: "Summary of the Gerrit User Summit 2019 in Gothenburg"
hide_sidebar: true
hide_navtoggle: true
toc: true
---
## A year of the Summit innovations
The Gerrit User Summit 2019 can definitely be defined as truly innovative in
its format and audience.
For the first time in the Gerrit history, the Summit is split into two parts.
Volvo Cars have hosted the first in Gothenburg (Sweden) while the second will take
place from the 11th to the 17th of November at GerritForge Inc. HQ in Sunnyvale,
CA (USA).
The Summit has been repeated on both sides of the Atlantic: the
European and US communities come from different background and have different
needs. The Gerrit Code Review Community is global and is willing to share
experiences and receive feedback from both sides.
We are also innovating on the Hackathon perspective, with three new elements:
1. The Hackathon is now open to everyone, including the people that have never
contributed to Gerrit before. Experienced maintainers have paired with newbies
to guide through the very first contributions.
2. The Hackathon at Volvo Cars has been 100% focused in triaging the massive
backlog of open issues and fixing as many bugs as possible for the latest
three supported branches: stable-3.0, stable-2.16 and stable-2.15.
3. The OpenStack and Gerrit communities finally have met and started talking and
interacting more closely.
## The Hackathon and Summit in numbers
- 13 talks by 10 speakers coming from the USA, Germany, UK, Finland and France
- 42 attendees to the Summit
- 19 participants to the Hackathon, 6 of them have never contributed before
to Gerrit, 3 attending remotely from Germany, 1 from United Kingdom, 1 from USA
and 1 from Japan
- 226 issues triaged of which:
* 74 fixed (32%)
* 56 would not be fixed (25%)
* 45 could not be reproduced (20%)
* 27 accepted as issues (10%)
* 14 flagged as invalid, duplicate or missing information (9%)
* 10 new issues raised (4%)
- 57 changes opened of which 48 of them have been merged
- 3 Gerrit releases made by 2 release managers
## Hackathon summary
During the Hackathon, David Pursehouse and Luca Milanesio have been working on
the release of Gerrit v2.15.16, v2.16.11.1 and v3.0.2, thanks to the precious
help from Gert van Dijk for writing and reviewing the release notes.
In addition to the bug-fixing activity, James Blair and Monty Taylor (both
RedHat, working on the OpenStack project) have presented the project
[Reno](https://github.com/openstack/reno).
The OpenStack project uses it for managing the collection and generation of the
release notes automatically, which can be useful for the Gerrit Code Review
project.
Other interesting discussions have been around the migration process from Gerrit
v2.13 or earlier to v3.0.
## Summit summary
The talks have been mainly centred on the automotive use-case, characterized by:
- The need to build and validate multiple components together
- The scalability of Gerrit Code Review across various sites
- The improvement of Gerrit performance and the introduction of automated tools
for end-to-end, performance and load testing.
All the talks have been recorded and will be soon published on the
[GerritForgeTV YouTube channel](https://youtube.com/gerritforgetv), together with
the past two years conferences videos.
### Gerrit Community Retrospective
Edwin Kempin (Google) is one of the longest-serving maintainers of the Gerrit Code
Review project. He is one of the Community Managers working hard to strengthen
the collaboration and to improve the way the whole project works.
He has organized an "agile-style" retrospective on what is working well and what
can be improved in the whole project, giving complete freedom to anyone to
participate either on-site and on-line, using a digital ideas board.
The full report has been published on the
[Repo-Discuss Mailing List](https://groups.google.com/forum/#!searchin/repo-discuss/retrospective/repo-discuss/CqFvLzs4Leg/SX5Rq8VkAAAJ).
### Gerrit at Volvo Cars
Nicholas Mucci (Volvo Cars) is both the main organizer of the Summit in
Gothenburg and also a key player in the adoption of Gerrit Code Review for the
development of some of the critical components in modern Volvo Cars.
He stressed the importance of adopting Open Source for Volvo Cars.
Every software component of a car needs to be able to receive updates and security fixes,
which means that Volvo needs to have control over the CI/CD pipeline for improving
and building code constantly.
Cars need to be safe and supported for over 15 years, independently
from vendor lock-in, software licenses or black-box closed source components.
The CI/CD pipeline of Volvo Cars also includes some key Open Source components,
like Zuul, Jenkins and, of course, Gerrit Code Review.
### First-class integration with the Checks plugin
Alice Kober-Sotzek (Google) has presented the current state-of-art of the checks
plugin, developed by Google in 2018/2019. The plugin allows other CI/CD tools,
such as Jenkins, to publish build progress and results directly into Gerrit
Code Review.
There are multiple benefits in having a dedicated API in Gerrit:
Gerrit users can get direct feedback on a Change about its build validation
status, without having to jump into another tool.
Various types of checks (e.g. code-style, unit-test, integration-test, load-tests
...) can be defined and displayed more concisely, without having to configure multiple
labels.
Build actions can be triggered directly from the Gerrit change screen,
simplifying the daily lifecycle of patch-sets validations.
There was high interest for this topic, specifically from the OpenStack
Community. An existing plugin (verify-status) already covers a similar set of
functionality. However, it is mostly incompatible with the recent versions of
Gerrit; it doesn't have a PolyGerrit UI and relies on an external relational database.
The maintainers of the Zuul project have explicitly shown interest in
integrating soon with the checks API and also
[collaborating on its development](https://gerrit-review.googlesource.com/q/topic:subchecks).
### Gerrit goes multi-site
Luca Milanesio and Marcin Czech (GerritForge) have presented the brand-new
multi-site plugin for Gerrit Code Review. Finally, after many years of waiting,
the rest of the OpenSource Community can deploy multiple instances of Gerrit
Masters across the globe.
Previously, only Google was running Gerrit in a multi-master/multi-site fashion.
Also, WANdisco announced years ago a commercial multi-site solution, based on a
custom fork of Gerrit v2.13 and its proprietary replication solution.
The multi-site plugin is available for any version of Gerrit from v2.16 onwards
and requires NoteDb. It has been adopted since May on GerritHub.io. The
reliability of the site has jumped to 100% since then, certified by both
[uptime.gerrithub.io](https://uptime.gerrithub.io) and [pingdom.com](http://stats.pingdom.com/n9a8tbptdn14/994191).
### Labels & Prolog-less submit rules
Edwin Kempin (Google) has showcased how to implement Gerrit submit
rules without the use of Prolog but using a simple Gerrit plugin. The Prolog
language has been a difficult part of the Gerrit submit rules: only one (Luca) in
all audience declared to like it as a programming language.
However, nobody (even Luca) feels confident in reading and writing it easily.
The introduction of the Prolog cookbook has improved the situation in the past.
However, people still misuse the tool by simply "copy&paste" random parts of the
cookbook and at times generating overload on Gerrit and a massive headache for
the Gerrit admins.
Starting from Gerrit v2.16 the submit rules can be implemented via plugins. Edwin
showcased a sample plugin (simple-submit-rule) for implementing some useful
rules, such as blocking a change if some of the comments are not addressed, and a
lot more.
With regards to the future of Gerrit and Prolog, most likely it would be moved
from Gerrit core to a plugin for those who still require it in production.
### End-to-End Git/Gerrit testing with Gatling
Fabio Ponciroli (GerritForge), aka Ponch, showed the work on implementing a
consistent end-to-end test scenario for Gerrit by leveraging the Gatling tool.
Testing Gerrit involves the invocation of REST-API by simulating the PolyGerrit
UI and also the use of Git/HTTP and Git/SSH protocol. Gatling, however, does not
support the Git protocol out-of-the-box. Ponch has introduced the gatling-git
project, that extends Gatling to include the Git protocol.
The definition of end-to-end tests is further simplified by using the Gatling
"feeders". Those are sample data in JSON format, which can also be generated from
existing Gerrit production logs.
Ponch has then showcased, to Luca's surprise, a real use-case of running load
tests against GerritHub.io, and they generated the expected spike of incoming
traffic.
### Using Zuul with Gerrit
Monty Taylor (RedHat) introduced Zuul, an OpenSource project created for
running the validation of OpenStack changes on Gerrit Code Review.
The OpenStack project started their CI/CD pipeline adopting Jenkins CI and
afterwards implementing some higher-level projects like the Jenkins Job Builder
for templating and auto-generating the build jobs.
However, Jenkins wasn't powerful enough to "juggle" the validation of multiple
changes together across components, which is a key requirement of the CI validation
for OpenStack.
None of the OpenSource alternatives to Jenkins was sufficient to satisfy the
OpenStack requirements, and thus they decided back in 2012 to create a brand-new
CI system, named [Zuul](https://zuul-ci.org).
Zuul's job definition does not differ much from the Jenkins-Job-Builder YAML
but relies on [Nodepool](https://zuul-ci.org/docs/nodepool/) and
[Ansible](https://www.ansible.com/) for job scheduling and execution.
Monty and James have already started to implement
[Zuul for upstream Gerrit](https://issues.gerritcodereview.com/issues/40011149),
and we hope to show the progress at the next forthcoming Gerrit User Summit 2019
USA in November in Sunnyvale CA.
### Code review at Tuleap: lessons from the trenches
Thomas Gerbet (Enelean) is part of the Tuleap Team in Grenoble (France).
Gerrit Code Review has been part of their daily development pipeline since the
beginning and they shared their experience on regular reviews.
Gerrit has been the central focal point of the collaboration and helped to improve
the communication and exchange of ideas. In addition to providing a tool for
reviews, it has encouraged people to focus more on communicating effectively,
even face-to-face and with mutual respect and constructive behaviours.
The Tuleap Team had adopted Gerrit from the very first versions when the
distinctive Android-green theme still characterized it. So far, they have been
able to follow all the upgrade cycles, and they are happy to be running on the
latest v3.0 with NoteDb.
### Gertty, the TTY-based Gerrit UI
James E. Blair (RedHat) impressed the audience with its revolutionary TTY-based
UI for Gerrit Code Review. It is quite remarkable how James managed to implement the
full workflow by simply using the Gerrit REST-API and building a fully functional
experience by only using your keyboard.
During the daily work of software development, the keyboard is the central part
of where the activity takes place. Changing the context and opening a web-browser
with a different experience, can be time-consuming and cause the break of the creative
flow. Gertty comes to the rescue and gives to those who feel more productive with
a keyboard the ability to do the whole lifecycle in the fast and most efficient way
possible.
One extra goodie, which is very important for everyone that is travelling for work,
is the ability to fully work off-line and sync back once the connectivity is back.
This was also one of the main goals of the Gerrit project founder, Shawn Pearce: using
the power of Git for allowing a full peer-to-peer cooperation between the members of
the community, including reviews.
Gertty, however, isn't quite there yet, because still relies on a central Gerrit server
and the meta-data is stored in a SQLite database on the local computer. However, James
was open to the idea to remove the local database and place it by the NoteDb
format from Gertty, which would be great as it would implement exactly the way that Shawn
initially designed the Gerrit product.
James also made, during the Hackathon, important fixes to Gertty to make it
fully compatible with the latest version v3.0.x of Gerrit and with
gerrit-review.googlesource.com.
### Towards a lightning-fast Gerrit
Patrick Hiesel (Google) presented remotely from Munich the work that is currently
underway on the master branch of the Gerrit Code Review project.
Google has spent the last year and a half on the stabilization and improvement of the
Gerrit user-experience, using a scientific approach:
1. Define the critical user journeys
2. Measure the user-centric metrics on the page load
3. Improve and iterate
The targets for \*-review.googlesource.com were, for the change display screen, set to
2s and 5s, for the 90th and 95th percentile.
A lot of work has been made on Gerrit for improving the cache effectiveness, switching
from Java serialization to protobuf, which preserves compatibility across Gerrit versions
and upgrades.
With regards to the access to indexes, dashboards have been moved to make parallel queries
so that multiple parts of the page can be loaded concurrently. With regards to the UI
rendering, the components are now lazy-loaded. The number of round-trips from the
browser to the backend has also been reduced to a minimum.
A lot more work is ongoing for the forthcoming v3.1 of Gerrit, including:
- Completion of the JGit/ref-table implementation started from the original design made
by Shawn.
- Switch to Polymer 2 and then to the lit-elements.
- Split-up of the current monolith gr-app.js into multiple components per page
Last but not least, Patrick gave useful recommendations on how to improve performance
on your current version of Gerrit, making the right choices for caches, CPUs and heap
utilization.
More progress on Gerrit v3.1 and the performance work will be presented at the Gerrit
User Summit in Sunnyvale, in November.
### Dependency visualization for Gerrit Code Review
The Summit has concluded with yet another exciting talk by Michael Watkins (Softagram).
Just nine months ago, Shane McIntosh (McGill University) presented the
[BLIMP Tracer](http://rebels.ece.mcgill.ca/papers/icsme2018_wen.pdf) research work on
the automated structural analysis of code review changes. Now Softagram, a small
startup based in Finland, presented an original commercial version of the same concept,
production-ready and fully integrated with Gerrit Code Review.
Michael went through the three central values provided by the automated structural change
analysis:
1. Graphical visualisation of the impact of the code change
2. Insights on the code changed
3. Automatic checks and scoring of the change
Code Review has become a "huge activity", with over 1 million code reviews created
world-wide every day. Moving a lot of repetitive activity from humans to robots is the
key to make reviews more accurate and enjoyable, leaving a lot of repetitive checks to
robots.
Michael also implemented a fully working plugin for integrating the output produced by
Softagram into the Gerrit change screen. That was a fascinating experiment for
the following reasons:
- Before joining Softagram, Michael had never used Gerrit before. However, he managed
to learn how to use it quite quickly.
- He managed to develop a brand-new integration for Gerrit without any prior experience
with the development of plugins
The integration will grow soon and, as Gerrit Community, we are
fully committed to helping Michael and all the other new contributors to get started with
Gerrit development and start contributing for making it better and easier to use.
We are all looking forward to seeing Softagram integration used for the Gerrit Code
Review project, as their solution is free for OpenSource projects.
## Feedback and proposals of improvements for the next Summits
Nicholas Mucci (Volvo Cars) has concluded the event by giving the opportunity
to all participants to the Summit to share their feedback and give new ideas
on how to make the event better next time.
1. We should publish the action items from the Hackathon and Summit and act on them.
Edwin Kempin gave immediate progress on this, by publishing all the action items
from the retrospective to the
[Gerrit Code Review Issue Tracker](https://issues.gerritcodereview.com/issues?q=is:open).
2. We should better advertise the Hackathon and Summit. Outside of the immediate Gerrit
community, it could be hard for people to learn about these events.
Luca Milanesio advertising the Summit to the JGit community and Han-Wen (Google)
invited members of the Google Development Team working on Git/JGit to come and
present their latest innovations.
3. In expanded advertising, we should include a call for talks.
The Talks are already open to everyone and go through the Gerrit Code Review process.
The Summit website is simply a Gitiles view of the `summit/2019` repository.
However, the process would not have been necessarily clear to everyone, and we will
commit to making it more accessible and visible for submissions.
4. European summits should be in cheaper countries than Scandinavia; it can be hard to
get budget for Sweden. The challenge is then finding a host and site.
The problem with Gerrit Code Review adoption in Europe is that it is mainly focussed
on the northern countries, with Sweden and Finland in the first places because of
the historical use from companies like Nokia and Ericsson.
It was very nice to see from Enalean that Gerrit is also used in France, which could
potentially be a cheaper destination for the next Summit in 2020, assuming that a
company is willing to host the event.
5. We should consider piggy-backing on other related conferences to minimize travel
costs (e.g. DevOps World, I/O).
DevOps World was in mid-August in San Francisco. However, the associated costs for the
location and the time of the year could have been exactly in conflict with the
previous proposal of making the travelling less expensive. However, other European
events about OpenSource, like
[FOSDEM 2020](https://fosdem.org/2020/news/2019-08-11-dates-fosdem-2020/) are in a
more affordable location and could be an excellent opportunity to get more communities
together.
----
Thank you again to all the attendees of the Gerrit User Summit 2019 in Volvo - Sweden
and see you in November at Sunnyvale, for the release of Gerrit Code Review v3.1.
Luca Milanesio (Gerrit Maintainer, Release Manager, ESC member)