Summary of the first Berlin Gerrit Hackathon
Our event attracted 16 people from various companies, including four Gerrit maintainers. Here is full list of participants:
- Dave Borowitz (maintainer) (Google),
- David Pursehouse (maintainer) (Sony Mobile),
- Saša Živkov (maintainer) (SAP),
- Edwin Kempin (maintainer) (SAP),
- Sven Selberg (Sony Mobile),
- Gustaf Lundh (Sony Mobile),
- Khai Do (OpenStack / IBM),
- Christian Aistleitner (Individual),
- David Ostrovsky (Individual),
- Deniz Türkoglu (Spotify),
- Carlos Martín Nieto (Elego),
- Eryk Szymanski (CollabNet),
- Jacek Centkowski (CollabNet),
- Johannes Nicolai (CollabNet),
- Dharmesh Sheta (CollabNet),
- Dariusz Luksza (CollabNet).
Lets start with some statistics: During those five days 190 patches got merged to various project hosted on gerrit-review, this gives over 2 patches per person per day. And those are only patches that were reviewed, sometimes reworked and then successfully merged into main repository. Over 200 review request have been created, some of them contains many revisions. This clearly shows how productive we were during that time.
But numbers are not so interesting, lets talk what new features and improvements were done during this hackathon.
How to use it? First of all you need to push a change to Gerrit, then in Gerrit you can switch change screen two into edit mode.
This allows to select the files you want to modify from the file list. Another possibility it to use the compare view and press edit icon available in the header for the right side. When you are done with editing just press the ‘Publish Edit’ button and you are done, new patch set is created for you.
But let me clarify one thing: this not yet another attempt to make new on-line IDE. This feature is meant to simplify fixing small issues with changes, like trailing white spaces, typos etc. Of course Gerrit will not forbid adding huge amounts of code over the inline-edit UI, but it probably is not the best tool for that.
You can already play with inline-edit on gerrit-review.
This plugin has been newly added to Gerrit. It teaches Gerrit how to render Markdown files stored within the repository. This gives you the possibility to add README.md files to the repository and show it like GitHub does.
The same plugin also provides a direct link to the project documentation in the project screen, allowing you easily browse the documentation.
One cool feature of this plugin is that it is branch aware, so you can have different documentation and README.md files for separate branches.
This plugin allows you to change the way how and where Gerrit stores sensitive data like passwords. Without the plugin all such data is stored in $site_path/etc/secure.config file. Implementing this extension point enables you to move those data into different places and use any encryption algorithm you would like, to make it even more secure.
Default implementation in Gerrit preserves the old behaviour, so you don’t need to worry about losing current configuration from secure.config file.
This feature allows tag commit objects with arbitrary set of hash-tags. That will allow your team to add metadata about commits like eg. #core, #refactor-later etc. to changes reviewed in Gerrit. This way you can easily find interesting changes later on (eg. to refactor after the release).
Right now this is an experimental feature of Gerrit. It is based on NodeDB which is disabled per default. For now, this feature stays undocumented and will be available after NodeDB is considered stable.
Improvements to Gerrit’s Extensibility
Gerrit 2.11 plugins can contribute links to:
- branch list in project screen,
- file list in change screen two,
- side-by-side view header.
Also TopMenu links can now be project aware (this mean one can put name of currently selected project in TopMenu link).
Both things are currently used in Gerrit, by x-doc plugin and inline-edit.
This is a good step in direction of making Gerrit UI mode extendable, which allows us to move some existing part of core to plugins and enable plugins to integrate more tightly with Gerrit’s web interface.
Other bug fixes and improvements
Lots of work was put into getting the ITS plugins back to shape. They were finally migrated to the BUCK build system and documentation has been improved. Problems with stream-events in Gerrit 2.9 were tracked down to the Apache Mina sources, which resulted in this bug report in the Mina project. Also the Gerrit WEB UI development process was improved by switching to GWT SuperDevMode from deprecated DevMode.
More detailed and technical description of thing we have accomplished during this five days hackathon can found in my post to repo-discuss mailing list.
During the hackathon we also took the opportunity to present CollabNet’s unique Gerrit features History Protection and recently released Code Quality Gates. On the picture you see Jacek from our Postdam team. He also did short introduction to our simplifications of Gerrit ACLs based on TeamForge RBAC system and so called RepoCategories that gives you possibility to use same access right configuration and management tool across many Gerrit instances and Git repositories. All features have been summarized in this presentation.
Once again I want to thank all participants for theirs effort in making Gerrit better and our sponsors CollabNet, Elego, Aservo for giving us opportunity and place to hack Gerrit!