↖️ Projects

Openverse

Late updated: 2023-09-20

Project overview

The Openverse project consists of three main parts: an Airflow project to retrieve works from upstream sources (providers), a Django API, and a Nuxt frontend that runs the Openverse.org website.

What I do

When I first started working on the project I focused heavily on developer experience, especially in the frontend, but also across all our repositories. I introduced the tool just, a pretty nifty command runner. I transitioned us from npm to pnpm and got us publishing our Storybook in GitHub pages. Introduced TypeScript to the project. Established some patterns around how to develop an internal library of accessible Vue components. Added pre-commit to some of our projects. Added visual regression testing to our frontend using Playwright. Amongst other things. Anyway, for the first several months of my time working on Openverse I held a meta level focus while also contributing components that were then used to build features.

I have moved my focus away from pure developer experience to infrastructure management and transitioned us to ECS-based deployments of our services away from an EC2 instance based approach we inherited. Our infrastructure is managed entirely with Terraform, and we use a mixture of GitHub actions and Terraform to manage deployments. We hope to eventually move away from Terraform as a deployment tool, but current priorities and restricted time and resources make it hard to justify the significant effort it would take to do so. The few services that still use Terraform as a deployment tool rarely need deploying, so the benefit is minor compared to the services we have moved, which now see weekly deployments as opposed to monthly (or less) before. Some of the documentation is publicly available, but the vast majority lives in the still-closed openverse-infrastructure repository, which we hope to eventually make open source.

In addition to ongoing contributions to the Openverse infrastructure, I've also contributed heavily and lead the development of key aspects of our project planning process. Openverse plans projects using a process based on the consent decision-making model. Our adaptation, which I proposed and led the development of, is publicly documented. As our work is almost exclusively planned and implemented in public on GitHub, anyone can observe the process in action in our project planning discussions.