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:
- Read the rest of this page for basic information about contributing to Servo.
- Successfully fetch the Servo repository and build Servo.
- Set up your fork of Servo and learn the basics of using Git, following the contents of our Git Setup chapter.
- 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.
- Set up your editor so that it integrates with
rust-analyzer. - Read our Style Guide for expectations about the code you contribute.
- Read and follow 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.
AI Policy FAQ
Can I use AI tools to help translate from my native language to English?
Yes.
Can I use an AI tool to assist in finding bugs or security issues in Servo?
Yes, but you must verify the output of any AI tool before filing issues against the Servo project. Any issues filed against the project are expected to abide by the project’s AI policy—you must be able to reproduce and validate any findings, not simply trust the tool’s output.
Can I use an AI tool to help me understand Servo’s codebase better?
Yes, but see the earlier warning about these tools’ reliability.
Can I submit a PR that includes code generated by AI tools?
No. This includes (but is not limited to) all generative AI tools like Claude, Codex, ChatGPT, Cursor, Gemini, and Windsurf.
Can I use an AI tool to summarize a pull request?
No. This includes (but is not limited to) all generative AI tools like Claude, Codex, ChatGPT, Cursor, Gemini, and Windsurf. Please follow the project best practices when describing your pull request.
Can I use an AI review tool for my pull request?
Yes, but please don’t. The results are unreliable and noisy.
Can I use an AI tool to write a new issue description or comment?
No. This includes (but is not limited to) all generative AI tools like Claude, Codex, ChatGPT, Cursor, Gemini, and Windsurf.
What happens if I violate this AI policy?
The Servo maintainers reserve the right to close any pull request that does not meet the standards of this policy. Any comments, descriptions, and other non-code artifacts that are not allowed by the previous FAQ entries must be rewritten without the use of AI tooling.
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.