# Gerrit User Summit 2024 - Schedule

## Hackathon, 7-9th October (Mon-Wed)

| Time PDT | Session
|----------|-----------------------------------------------------
|  TBD     | TBD
|  12:00   | Lunch
|  TBD     | TBD

## User Summit, 10th & 11th October (Thu & Fri)

Introduction, intermediate and advanced sessions on Gerrit Code Review.

The **Call For Papers is officially open**, [submit your talk proposal](cfp.md)
directly through [Gerrit Code Review](https://gerrit-review.googlesource.com/#/admin/projects/summit/2024).

The voting and final **selection of the agenda is totally driven by Community**,
the review score defines the chart of best rated talks.

> **Follow the instructions** described in the [sessions proposal section](cfp.md)
> and be an active part of the Summit by sharing your experience and providing
> your feedback on how to improve Gerrit Code Review.

### Thursday 10th October

The Gerrit User Summit starts at TBD.

| Time PDT  | Session
|-----------|-------------------------------------------------
| TBD       | TBD

### Friday 11th October

The Gerrit User Summit starts at TBD.

| Time PDT  | Session
|-----------|-------------------------------------------------
| TBD       | TBD
