# Gerrit Virtual User Summit 2021 - Speakers

### Luca Milanesio - GerritForge {#lmilanesio}

[LinkedIn](https://www.linkedin.com/in/lucamilanesio/)

Luca is the co-founder of GerritForge and has over 25 years of software
development and application lifecycle management experience.
He is a Gerrit Contributor since 2012 and member of the Engineering
Steering Committee since 2019.

Luca maintains [GerritHub.io](https://gerrithub.io), the Open Service
for Gerrit Code Review on top of GitHub repositories.

### Fabio Ponciroli - GerritForge {#fponciroli}

[LinkedIn](https://uk.linkedin.com/in/fponciroli/)

Fabio is a Senior Software Engineer at GerritForge where he contributes to the
OpenSource Gerrit Code Review project.
He has been involved since the beginning in the design and development of DevOps
analytics tools for Gerrit.
He has extensive experience in working on backend systems, on-premise and
cloud-based, with different programming languages, such as Scala, Java, NodeJS
and related ecosystems.

### Paul Jolly - CUE {#myitcv}

[Twitter](https://twitter.com/_myitcv)

Paul is a core contributor on the [CUE](https://cuelang.org/) project. He
co-created [play-with-go.dev](https://play-with-go.dev), co-founded the [Go
Tools Working Group](https://github.com/golang/go/wiki/golang-tools), is a
regular contributor to the [Go](https://golang.org) project, and helps maintain
various Go and CUE-based open source projects.
