Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Getting Started

Servo welcomes contributions from everyone. Working on a web engine can be challenging and sometimes frustrating, but it can also be very rewarding and fun. If you spend the time and effort to get involved, you will constantly be learning and growing as a developer and open source contributor. To get started, please do the following:

  1. Read the rest of this page for basic information about contributing to Servo.
  2. Successfully fetch the Servo repository and build Servo.
  3. Set up your fork of Servo and learn the basics of using Git, following the contents of our Git Setup chapter.
  4. Learn a bit of Rust. There are many resources online for how to do this, but one of the best is the official Learning Rust documentation. If you are familiar with other imperative programming languages, you can learn Rust as you work more on Servo, but having a basic familiarity with the language is very useful to get started.
  5. Set up your editor so that it integrates with rust-analyzer.
  6. Read our Style Guide for expectations for the code your contribute.
  7. Read and following the steps for making a pull request.

Working on an issue

Should you wish to work on an issue, please leave a comment on it in order to claim the issue. This is to prevent duplicated efforts from contributors on the same issue.

Sending the message “@servo-highfive assign me” will assign the issue to you.

Head over to Servo Starters to find good tasks to start with. If you find any unfamiliar words or jargon, please check the glossary first. If there’s no matching entry, please make a pull request to add one with the content TODO so we can correct that!

AI contributions

Contributions must not include content generated by large language models or other probabilistic tools, including but not limited to Copilot or ChatGPT. This policy covers code, documentation, pull requests, issues, comments, and any other contributions to the Servo project.

For now, we’re taking a cautious approach to these tools due to their effects — both unknown and observed — on project health and maintenance burden. This field is evolving quickly, so we are open to revising this policy at a later date, given proposals for particular tools that mitigate these effects. Our rationale is as follows:

Maintainer burden: Reviewers depend on contributors to write and test their code before submitting it. We have found that these tools make it easy to generate large amounts of plausible-looking code that the contributor does not understand, is often untested, and does not function properly. This is a drain on the (already limited) time and energy of our reviewers.

Correctness and security: Even when code generated by AI tools does seem to function, there is no guarantee that it is correct, and no indication of what security implications it may have. A web browser engine is built to run in hostile execution environments, so all code must take into account potential security issues. Contributors play a large role in considering these issues when creating contributions, something that we cannot trust an AI tool to do.

Copyright issues: Publicly available models are trained on copyrighted content, both accidentally and intentionally, and their output often includes that content verbatim. Since the legality of this is uncertain, these contributions may violate the licenses of copyrighted works.

Ethical issues: AI tools require an unreasonable amount of energy and water to build and operate, their models are built with heavily exploited workers in unacceptable working conditions, and they are being used to undermine labor and justify layoffs. These are harms that we do not want to perpetuate, even if only indirectly.

Note that aside from generating code or other contributions, AI tools can sometimes answer questions you may have about Servo, but we’ve found that these answers are often incorrect or very misleading.

In general, do not assume that AI tools are a source of truth regarding how Servo works. Consider asking your questions on Zulip instead.

Conduct

Servo Code of Conduct is published at https://servo.org/coc/.

Governance

Servo’s governance is defined by the Technical Steering Committee (TSC) and documented in the servo/project repository.