# Gerrit Virtual User Summit USA 2021 - Schedule

### Thursday, 2nd December

| Time                  | Session                                                      |
|-----------------------|--------------------------------------------------------------|
|  8:00 PST / 17:00 CET | Welcome to the Virtual User Summit - KeyNote introduction    |
|  8:10 PST / 17:10 CET | [What's new in Gerrit v3.4/v3.5](sessions/gerrit-3.4-3.5.md) |
|  8:40 PST / 17:40 CET | Session 1 - __available for proposals__ (may include 1 poll) |
|  9:10 PST / 18:10 CET | Submit Requirements: Waving goodbye to Prolog                |
|  9:40 PST / 18:40 CET | Code Owners: Demo of the `code-owners` plugin                |
| 10:10 PST / 19:10 CET | Using GitHub Actions with GerritHub                          |
| 10:20 PDT / 19:20 CET | Lightning talk 2 - __available for proposals__               |
| 10:30 PDT / 19:30 CET | Lightning talk 3 - __available for proposals__               |
| 10:40 PDT / 19:40 CET | Lightning talk 4 - __available for proposals__               |
| 10:50 PDT / 19:50 CET | Lightning talk 5 - __available for proposals__               |
| 11:00 PDT / 20:00 CET | End of Day 1                                                 |

### Friday, 3rd December

| Time                  | Session                                                      |
|-----------------------|--------------------------------------------------------------|
|  8:00 PST / 17:00 CET | Session 4 - __available for proposals__ (may include 1 poll) |
|  8:30 PST / 17:30 CET | Session 5 - __available for proposals__ (may include 1 poll) |
|  9:00 PST / 18:00 CET | Session 6 - __available for proposals__ (may include 1 poll) |
|  9:30 PST / 18:30 CET | Q&A with the maintainers (may include 1-2 polls)             |
| 10:30 PST / 19:30 CET | Lightning talk 6 - __available for proposals__               |
| 10:40 PDT / 19:40 CET | Lightning talk 7 - __available for proposals__               |
| 10:50 PDT / 19:50 CET | Final Q&A  (may include a final poll)                        |
| 11:00 PDT / 20:00 CET | End of Day 2                                                 |
