My Outreachy Journey: Contributing to Servo and Learning Browser Internals


When I first discovered Outreachy, I saw it as a door into the world of open source — not just to gain experience, but to build real software and grow with a community. I chose to apply to Servo because I wanted to better understand how browsers work and contribute to a project that's at the heart of the open web.
Over the course of the Outreachy contribution period, I dove deep into the Servo codebase. I explored:
Content Security Policy (CSP) handling: I helped fix a bug where
<meta>
CSP tags would override headers — against spec. I updatedDocument::set_csp_list
to correctly merge policies.Input event lifecycle: I implemented
beforeinput
event dispatching for<input>
elements, following UI Events spec. This taught me how browser event dispatch works under the hood.HTML parser quirks: I updated the HTML parser config to respect quirks mode, scripting flags, and
iframe_srcdoc
handling, aligning more closely with spec-defined behaviors.Tests and debugging: I wrote Web Platform Tests (WPTs), fixed timing issues, and learned to debug remote script loading using Servo’s devtools support.
Each bug led to new understanding — not just of Rust and the Servo codebase, but of how real-world browser engines function.
Although I wasn’t selected for the final internship, I gained far more than I expected: deep technical learning, confidence in navigating a large codebase, and mentorship from contributors like @jdm, who guided and reviewed patiently.
This isn't the end of my journey with Servo. I’ll continue contributing and applying what I’ve learned, because this work excites me and helps me grow as a developer.
If you're thinking about contributing to Servo or applying to Outreachy: do it. The learning is intense, the community is kind, and the skills you build are real.
Subscribe to my newsletter
Read articles from Emmanuel Paul Elom directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Emmanuel Paul Elom
Emmanuel Paul Elom
Experienced Full Stack Developer with expertise in JAVA, JavaScript, TypeScript, NodeJS, Rust, ExpressJS, and PHP. Passionate about open-source contributions and creating scalable solutions. Seeking a challenging role to leverage my skills in both front-end and back-end development to drive innovation and efficiency.