# Gerrit User Summit Europe 2023 - Schedule

## Hackathon, 25-29th September (Mon-Fri) at Volvo Cars

| Time  | Session
|-------|-----------------------------------------------------
|  8:30 | Registration Opens
|  9:30 | Presentation of the hackathon topics, introductions
| 10:30 | Coding
| 12:15 | Lunch & Networking
| 14:00 | Coding
| 19:00 | End of the day

## The User Summit, 30th September (Sat) to 1st October (Sun)

Introduction, intermediate and advanced sessions on Gerrit Code Review.

### Saturday 30th September

The Gerrit User Summit starts at 11:00 CEST in Sweden and continues at 08:00 PDT in California.

| Time CEST | Time PDT  | Session
|-----------|-----------|-------------------------------------------------
| 10:30     |           | Registration Opens, Networking
| 11:00     |           | Welcome to Volvo Cars - *TBC*
| 11:45     |           | [What's new in Gerrit multi-site](sessions/whats-new-gerrit-multi-site.md)
| 12:45     |           | Lunch & Networking
| 15:00     |           | [Zuul: Project Gating for Gerrit](sessions/zuul.md)
| 15:45     |           | [Make your owners rules faster](sessions/speed-up-owners.md)
| 16:00     |           | Break & Networking
|           | 08:00     | USA, early attenders, breakfast with remote viewing of talk
| 17:00     |           | [Processing multiple ref updates as a one event - pull-replication use case](sessions/batchref-update.md)
| 18:00     | 09:00     | [Tailor Gerrit's healthcheck with Extensible Checks](sessions/extensible-healthcheck.md)
| 18:15     | 09:15     | [Entering the gerrit world, painpoints and wows](lightning-talks/entering-gerrit-worls.md)
| 18:30     | 09:30     | *LIGHTNING TALKS*
| 18:45     | 09:45     | [Code Review Research Highlights](sessions/recent-rebels-research.md)
| 19:30     | 10:00     | End of Day 1 - Sweden / Break & Networking - US
| 20:00     |           | Dinner - Celebrations for Gerrit 15 years - Sweden
|           | 10:30     | [Git GC at scale for Pro](sessions/git-gc-at-scale.md)
|           | 11:15     | *TALK AVAILABLE - USA*
|           | 12:00     | Lunch & Networking

### Sunday 1st October

The Gerrit User Summit starts at 10:30 CEST in Sweden *ONLY*

| Time CEST | Time PDT  | Session
|-----------|-----------|-------------------------------------------------
| 10:30     |           | Networking
| 11:00     |           | [Q&A with the maintainers](schedule/maintainers-qa.md)
| 11:45     |           | Break
| 12:00     |           | [What's new in Gerrit v3.8](sessions/whats-new-gerrit-3.8.md)
| 12:45     |           | Lunch & Networking
| 14:00     |           | *TALK AVAILABLE - Sweden*
| 14:45     |           | *TALK AVAILABLE - Sweden*
| 15:30     |           | *TALK AVAILABLE - Sweden*
| 16:00     |           | End of the Summit - Sweden
