My Software Engineering Internship at the Wikimedia Foundation

This project was created with:

JavaScript LESS Vue.js PHP

I completed a 16-week internship at the Wikimedia Foundation, where I worked on a project aimed at increasing the adoption of Vue.js and the Wikimedia Design System Codex in Wikipedia’s frontend.

Project details & Challenges

After graduating from bootcamp, I was thrilled to had been selected to join the Wikimedia Foundation as one of eight interns for the 2023 Software Engineering Internship Program.

I joined the Growth team to work on a project aimed at increasing the adoption of Vue.js within Growth’s features. Over the 16-week program, I contributed to modernizing selected object oriented JavaScript interfaces, refactoring them using Vue.js and the Wikimedia Design System Codex.

For this project, I worked in an isolated development environment using a VitePress app, where I could prototype and test my components. My first task was to refactor the “Add a link” dialog.

The existing "Add a link" Onboarding Dialog next to the Vue and Codex version

The main challenge was that the existing dialog component in Wikimedia’s Codex didn’t fully meet the design specifications for my use case. As a result, my project involved a lot of cross team collaboration, to determine whether I should create a new component or work on extending the existing one.

It was a great opportunity to contribute to testing how the Wikimedia Design System adapts to different use cases and to work on a reusable dialog prototype that was later included at the Wikimedia Design System Codex Dialog’s docs.

I also had the chance to document and share the process in a blog post, where I walk through the implementation, sharing useful information for Wikimedia staff, and helping distribute Wikimedia technologies to a broader audience.

Highlighted learnings

Completing this project at the Wikimedia Foundation was, most of all, a great learning experience. Beyond the technical challenges specific to my project, it gave me the opportunity to take part in code reviews, use version control in a real-world environment, and learn and apply coding conventions and best practices.

Working within a large, complex codebase helped me become more comfortable navigating unfamiliar code and breaking it down to understand how everything fits together.

I also had the chance to see how others work and pair with experienced engineers, which leveled up my understanding of good code and effective remote collaboration.