On Saturday, November 7 and Sunday, November 8 the Gerrit User Summit took place in Mountain View, CA.
This quite exclusive (invite only) event is organized by Google annually. It gives an unique opportunity for Gerrit users and admins to meet and share their knowledge and experience about using Gerrit Code Review system. It also gives you great insights into the future of Gerrit so you might be less surprised by the newest release. 🙂
This year there was over 60 participants from various companies. Apart from CollabNet and – of course – Google, other important names were present: AMD, Apple, Axis Communications, CloudBees, Ericsson, Garmin, IBM, Intel, OpenStack, SAP, Sony Mobile, Twitter, Qualcomm and Yahoo to name a few.
As usual during Gerrit User Summit, the first talk was about coming features in the newest versions of Gerrit. So this year it was about what’s new in version 2.11 and what’s coming in 2.12. After that over 20 various presentation from different companies were given across Saturday and Sunday. You can find the full agenda here: Saturday, Sunday.
And, as you might have already noticed, two presentations were from CollabNet.
Johannes Nicolai had a talk about Tuning Gerrit – How to Properly Tune and Size your Gerrit Backend. The cool idea here was to define T-shirt size Gerrit installation types: Small, Medium and Large and propose default values for performance-relevant Gerrit configuration parameters which gives users a safebase to start their Gerrit tuning exercise with actionable advices on how to proceed to get most of it.
The sizes are defined as follow:
- Small instance (<100 requests per day, 4GB RAM, 4 cores)
- Medium instance (~500 requests per day, 16GB RAM, 16 cores)
- Large instance (~1M request per day, 32GB RAM, 32 cores)
After short introduction on how to determine your T-shirt size Johannes went through performance comparison charts that backs our findings up and continued going through Gerrit setup options, discussing all important aspects of Gerrit configuration and explaining the actual values of the parameters we provide.
This turned out to be a great success. Enough to say that as result of this talk and its follow ups, many default Gerrit options have been adjusted in accordance to the CollabNet Small instance recommendation.
After the presentation each participant received nicely printed Gerrit Performance Tuning Cheat Sheet which summarizes the most important factors to determine system T-shirt size and corresponding gerrit.config options to optimize its performance.
The second talk, by myself, was about Non-Prolog rules: You shall not pass – Control your code quality gates with a wizard. As this one requires some Gerrit admin background, let me give you some intro here. What are submit rules in Gerrit? In short: those rules decide if a given commit can be submitted (merged) into the repository or not. For example, default submit rules in Gerrit require +2 Code Review and (optionally) +1 Verify to make change submittable. And there is a way to change this behavior: in the vanilla Gerrit you can modify submit rules using Prolog programming language. To make it work, a rules.pl file that contains Prolog code has to be pushed to refs/meta/config of given project. Gerrit authors provide short Prolog rules tutorial that covers basic introduction to the subject, but strong Prolog background is a must. Fortunately CollabNet customers have much easier way: with CollabNet TeamForge and GitEye products it is possible to configure, test and deploy the submit rules to Gerrit using graphical user interface. So no Prolog background is required.
After short introduction about technical details behind the implementation, there was a demo about what’s possible with CollabNet setup. During that demo I’ve showed:
- how to create rules and deploy it to Gerrit
- how to use predefined templates that are provided by CollabNet GitEye
- how to test submit rules against existing Gerrit change
- how to create a new submit rules in ‘Outlook filter like’ style based on existing Gerrit change
All in all the Gerrit User Summit was a great event. It gave us many insights into the Gerrit world and new perspectives on how Gerrit can be used and configured to get most of its functionality and performance. It was great to see the different approaches to solve scalability and performance issues that people are facing when their installations just grow big enough. It also gave us better perspective on the future of Gerrit, including some controversial features, like re-defining usage of topics in context of atomic commits as well as really cool one, like Notedb. Last but not least, it’s good to give back to the community, so we are happy that our suggestions have made its way into Gerrit config. And, that’s all from my side. What are your thoughts about Gerrit User Summit? Any other feedback you want to share?