# Gerrit User Summit 2024 - Schedule

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

| Time PDT | Session
|----------|-----------------------------------------------------
|  8:30    | Breakfast in the Hackathon room
|  9:30    | Discuss Hackathon topics
| 10:00    | Coding and discussions
| 12:15    | Lunch & Networking in the Hackathon room
| 14:00    | Coding and discussions
| 19:00    | End of the day

## 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
|-----------|-------------------------------------------------
| 08:30     | Breakfast / Check-in
| 09:30     | [Sustaining Git repo performance under heavy load](sessions/sustaining-git-repo-performance-under-heavy-load.md)
| 10:15     | [Qualcomm's Gerrit management overview from Devops/SRE](sessions/devops-qcom.md)
| 12:30     | Lunch & Networking
| 17:00     | End of the day

### Friday 11th October

The Gerrit User Summit starts at TBD.

| Time PDT  | Session
|-----------|-------------------------------------------------
| 08:30     | Breakfast / Check-in
| 12:30     | Lunch & Networking
| TBD       | [Q&A with the Gerrit maintainers](sessions/maintainers-qa.md)
| 17:00     | End of the day
