# 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 | [How to survive with mono-repos in Gerrit](sessions/mono-repo-with-gerrit.md) |
|  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                                                 |
