# 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   |           | *TALK AVAILABLE - Sweden*
|   16:00   |           | Break & Networking
|   17:00   |    08:00  | *TALK AVAILABLE - Sweden / USA(early attenders,
breakfast with remote viewing of talk)*
|   17:45   |    08:45  | Welcome to GerritForge Inc. - *TBC*
|   18:00   |    09:00  | *TALK AVAILABLE - Sweden / USA*
|   18:45   |    09:45  | *TALK AVAILABLE - Sweden / USA*
|   19:30   |    10:30  | End of Day 1 - Sweden / Break & Networking - US
|   20:00   |           | Dinner - Celebrations for Gerrit 15 years
|           |    10:45  | *TALK AVAILABLE - USA*
|           |    11:30  | Lunch & Networking

### Sunday 1st October

| Time CEST | Time PDT  | Session
|-----------|-----------|-------------------------------------------------
|   10:30   |           | Networking
|   11:00   |           | *TALK AVAILABLE - Sweden*
|   11:45   |           | Break
|   11: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   |           | Break & Networking
|   17:00   |   08:00   | [Q&A with the maintainers](schedule/maintainers-qa.md)
|   17:45   |   08:45   | *TALK AVAILABLE - Sweden / USA*
|   18:30   |   09:30   | End of the Summit - Sweden / Break & Networking - USA
|           |   10:15   | *LIGHTNING TALKS*
|           |   11:15   | End of the Summit - USA
