# 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     |           | *TALK AVAILABLE - Sweden*
| 12:45     |           | Lunch & Networking
| 15:00     |           | *TALK AVAILABLE - Sweden*
| 15:45     |           | [Make your owners rules faster](sessions/speed-up-owners.md)
| 16:00     |           | Break & Networking
| 17:00     | 08:00     | *TALK AVAILABLE - Sweden* (USA early attenders, breakfast with remote viewing of talk)*
| 18:00     | 09:00     | *LIGHTNING TALKS*
| 18:45     | 09:45     | [Code Review Research Highlights](schedule/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     | *TALK AVAILABLE - USA*
|           | 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     |           | *TALK AVAILABLE - Sweden*
| 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
