# Gerrit User Summit is *THE event of the year* for the Community.

We will bring together Gerrit thought leaders, developers, practitioners,
the whole community and ecosystem, in one event, providing attendees
with the opportunity to learn, explore, network face-to-face and help
shape the future of Gerrit development and solutions.

# Gerrit User Summit 2018 at Cloudera HQ

Cloudera hosts the summit at its company headquarters in Palo Alto CA,
in cooperation with GerritForge and the Gerrit Community.

# Why a Gerrit User Summit back in the Silicon Valley?

Starting from 2017, we promised to get in touch with a *wider and more diverse community*,
not excluding however the existing large user base in USA and more specifically
the Silicon Valley.

This event is our way to keep our promises and bring all the new innovations and experiences
back to the main adopter of Gerrit Code Review since its inception back in 2008.