⏱️ Lectura: 10 min

Josh Bowman-Matthews, a longtime Servo maintainer, reviewed 1,150 pull requests over the past twelve months thanks to a role paid exclusively through community donations. The announcement came in September 2025: the project would use money raised on OpenCollective and GitHub Sponsors to fund part-time work by @jdm dedicated to improving the experience of Servo’s contributors.

📑 En este artículo
  1. TL;DR
  2. What happened
  3. Context and history
  4. Technical details and performance
  5. How to start contributing
  6. Impact and analysis of Servo development
  7. What’s next
  8. Frequently Asked Questions
    1. What is Servo?
    2. Who is Josh Bowman-Matthews and what role does he play?
    3. How is that work funded?
    4. Can I use Servo today to embed a browser in my app?
    5. How do I start contributing to Servo?
    6. What’s the relationship between Servo and the Rust language?
  9. References

A year later, jdm himself published a recap with concrete numbers: new maintainers nominated, issues created to ease onboarding, and a deep rewrite of the JavaScript engine integration aimed at chasing down intermittent errors. Here’s a look at what got done and what it means for Servo development, the browser engine written in Rust.

TL;DR

  • Josh Bowman-Matthews (@jdm) completed a year of donor-funded work for Servo, via OpenCollective and GitHub Sponsors.
  • He reviewed 1,150 pull requests and nominated 8 new maintainers for the project in twelve months.
  • He filed 114 issues designed for new contributors; 92% have already been resolved.
  • He wrote new documentation on borrow hazards, experimental features, the AI policy, and how to find tasks.
  • He supported the rewrite of Servo’s JS engine integration to fix intermittent panics caused by garbage collection.
  • He uncovered broken behavior in window.open and helped stabilize flaky tests.
  • He backed another contributor’s grant proposal to work on Servo, which was approved.

What happened

On September 15, 2026, Servo’s official blog published a recap of the first year of this funded role. Bowman-Matthews himself wrote the post in the first person, something uncommon in open source project announcements, and detailed exactly what the community’s money translated into.

The recap includes four key figures: 8 new maintainers nominated, 1,150 pull requests reviewed, 114 issues created specifically to make it easier for new contributors to get started (92% of which are already resolved), and several new technical documents that are now part of the official documentation: on borrow hazards (the risks of sharing mutable references in Rust within the engine), experimental features, the policy on using artificial intelligence in contributions, and how to find tasks to start with.

Beyond the work visible in the numbers, jdm spent time diagnosing hard-to-reproduce failures in other people’s pull requests: builds that failed intermittently, tests that passed on one run and failed on the next. That plumbing work rarely shows up in a changelog, but it’s what determines whether merging a change takes minutes or hours.

Context and history

Servo was born in 2012 inside Mozilla Research as an experiment: build a web rendering engine from scratch in Rust, a language that was still young at the time and that was developed in parallel with Servo to solve the memory and concurrency problems that plagued engines like Gecko. For several years, Servo was the testbed where Mozilla validated ideas about parallelism in layout and rendering.

In 2020, Mozilla cut staff and stopped funding Servo as an internal project. The code moved to the Linux Foundation, and for a while development was left in the hands of a small group of volunteers. A serious revival came later, under the umbrella of Linux Foundation Europe, with the stated goal of turning Servo into a lightweight, embeddable alternative to engines like Chromium or WebKit for applications that need to render HTML and CSS without carrying the weight of a full browser.

jdm’s funded role is part of that second stage of Servo development: instead of relying solely on sporadic volunteer contributions, the project uses recurring donations to support someone dedicated, among other things, to making sure a new contributor’s experience doesn’t come down to luck.

Illustration of the Servo rendering engine written in Rust
Servo stopped being an internal Mozilla project in 2020 and today runs on donations. Foto de Mastars en Unsplash

Technical details and performance

One of the most concrete technical focuses of the year was Servo’s JavaScript engine integration, based on SpiderMonkey. The team took on a large-scale rewrite to fix intermittent panics related to the garbage collector: failures that only showed up under certain memory conditions and were nearly impossible to reproduce on demand. jdm didn’t write all of that code, but he did review a large share of the associated pull requests and filed the issues that let the work be split among several contributors in parallel.

Another notable finding was broken behavior in window.open, the API that opens a new tab or window from JavaScript. The bug surfaced while investigating intermittent test failures, and ended up leading to the stabilization of a broader set of flaky tests (ones that sometimes pass and sometimes fail without any code changes).

To understand why test stability matters, look at how Servo is tested: the engine runs a large share of the Web Platform Tests (WPT), the interoperability test suite shared by all browser engines.

# clone and build Servo (works the same on Linux and macOS)
git clone https://github.com/servo/servo.git
cd servo
./mach bootstrap
./mach build --release

That block builds Servo in release mode using mach, the build system inherited from the same scheme Firefox uses. The next one runs a specific WPT file, the same kind of test jdm reviews when an intermittent failure shows up:

./mach test-wpt tests/wpt/mozilla/tests/mozilla/webgl/context_creation.html
./mach test-wpt --log-raw wpt-run.log dom/interfaces.html

Running the same test several times in a row (for example, in a shell loop) is the most direct way to confirm whether a failure is truly intermittent or there’s a reproducible race condition.

EngineLanguageEmbedding modelStatus
ServoRustembeddable library (libservo)Active, donor-funded under Linux Foundation Europe
Chromium (CEF)C++Chromium Embedded FrameworkMature, high memory footprint
WPE WebKitC++WPE API for embedded devicesUsed in smart TVs and set-top boxes
GeckoViewC++/RustLimited embedding, Android-focusedMaintained by Mozilla, mobile-focused

💭 Key point: Servo doesn’t compete for end users as a desktop browser: it competes for developers who need to embed a lightweight rendering engine in their own application, without carrying the weight of a full Chromium.

How to start contributing

Building Servo requires Python (for mach) and an up-to-date Rust toolchain. On Windows, the commands are nearly identical, only how the script is invoked changes:

# Windows (PowerShell)
git clone https://github.com/servo/servo.git
cd servo
python mach bootstrap
python mach build --release
python mach run --release https://example.com

On Linux and macOS, the same flow runs with ./mach instead of python mach. The run command opens a window with Servo rendering the given URL, useful for confirming the build works before touching any code.

For someone just starting out, the most sensible entry point isn’t the JS engine or layout: it’s the issues tagged E-easy in the GitHub repository, many of them filed over the past year specifically to give newcomers a small, well-scoped first task. jdm documented that process in the finding things to do guide that was added to the official documentation.

Terminal showing Servo building with mach build
Servo’s build uses mach, the same tooling scheme as Firefox. Foto de Thorium en Unsplash
💡 Tip: Before opening your first pull request, run the local linting suite (./mach test-tidy) to avoid style comments during review and get straight to the technical discussion.

Impact and analysis of Servo development

Servo’s case is an example of a funding model that’s growing in the open source ecosystem: instead of depending on a large company absorbing the project, as happened with Mozilla until 2020, support comes from recurring donations by individuals and organizations through OpenCollective and GitHub Sponsors.

The difference from other crowdfunding models is that here the money didn’t go to infrastructure, like CI servers, but to human work hours dedicated specifically to lowering the friction of contributing. It’s a bet that a project with more active maintainers (8 nominated in a year) ends up more resilient than one with just a few very busy maintainers.

flowchart TD
    A["Donors (OpenCollective and GitHub Sponsors)"] --> B["Servo Fund"]
    B --> C["Funded part-time role (@jdm)"]
    C --> D["Pull request review"]
    C --> E["Mentoring new contributors"]
    C --> F["Technical documentation"]
    D --> G["More active maintainers"]
    E --> G
    F --> G

The diagram summarizes the loop: the money doesn’t fund a specific feature, it funds the project’s capacity to absorb more external contributions without every pull request depending on a single person’s availability.

What’s next

jdm closed out the recap with the intention of staying in the role for another year, though the post doesn’t mention new numeric goals for the coming period. What is clear is the direction: more documentation to lower the barrier to entry, more work on test stability (a structural problem in any engine running thousands of WPT cases), and continuing to spread maintenance responsibilities across more people.

For the Rust ecosystem at large, every new Servo maintainer is also someone with real experience in a large, concurrent codebase, something that eventually translates into contributions to other tools in the language.

📖 Summary on Telegram: View summary

Try it yourself: clone the repo with git clone https://github.com/servo/servo.git and run ./mach build --release to see the engine build on your own machine today.

Frequently Asked Questions

What is Servo?

Servo is a web rendering engine written in Rust, designed to be embedded in applications that need to display HTML and CSS without carrying a full browser. It was born at Mozilla Research in 2012 and is now developed under Linux Foundation Europe.

Who is Josh Bowman-Matthews and what role does he play?

He’s a longtime Servo maintainer, known in the project as @jdm. Since September 2025 he’s worked part-time in a paid capacity, funded exclusively by donations, focused on improving the experience of the project’s contributors.

How is that work funded?

Through recurring donations on OpenCollective and GitHub Sponsors. There’s no single company backing the salary: the money comes from the community that uses or follows the project.

Can I use Servo today to embed a browser in my app?

Servo exposes an embeddable library (libservo) designed for that use case, although it’s still under active development and doesn’t cover 100% of the web standard. It’s an option worth evaluating against alternatives like CEF (Chromium) or WPE WebKit when the goal is a lighter footprint.

How do I start contributing to Servo?

The recommended starting point is the issues tagged E-easy in the GitHub repository, many of them created over the past year specifically to give a small, well-scoped first task to someone unfamiliar with the codebase.

What’s the relationship between Servo and the Rust language?

Servo and Rust were developed in parallel within Mozilla: several of the engine’s needs, like memory safety without a traditional garbage collector and safe parallelism, shaped the language’s design decisions in its early years.

References

📱 Enjoy this content? Follow @programacion on Telegram for daily tech content in Spanish: quick summaries, fresh content every day.

Imagen destacada: Foto de Pankaj Patel en Unsplash

Categories: Noticias Tech

Andrés Morales

Developer and AI researcher. Writes about language models, frameworks, developer tooling, and open source releases. Covers ML papers, the tech startup ecosystem, and programming trends.

0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.