Spaces:
Sleeping
Sleeping
| # Contributing to Typst | |
| Thank you for considering to contribute to Typst. We want to foster a welcoming | |
| and productive atmosphere for contributors. Therefore, we outline a few steps to | |
| land your contribution below. | |
| 1. Before starting significant work on a feature or refactoring, please | |
| find/open an [issue] or start a thread in the [#contributors] channel on | |
| Discord to discuss the design. Feel also free to ping a maintainer/team | |
| member to get some input on your idea. Don't be shy! Typst is a complex | |
| project with a long-term vision and it's frustrating to find out that your | |
| idea does not align with that vision _after_ you have already implemented | |
| something. | |
| 2. Fork the Typst repository and start with your contribution. If you, at any | |
| point in this process, are unsure about how to do something in the Typst | |
| codebase, reach out to a maintainer or a more experienced contributor. Also | |
| have a look at the [`architecture.md`][architecture] file. It explains how | |
| the compiler works. | |
| 3. Create a pull request (PR) in the Typst repository, outlining your | |
| contribution, the technical rationale behind it, and, if it includes a new | |
| feature, how users will use it. Best to link to an existing issue with this | |
| information here. | |
| 4. When you send a PR, automated CI checks will run. Your PR can only be merged | |
| if CI passes and will often also only get its first review round once it has | |
| the green checkmark. You can ping a maintainer if you need guidance with | |
| failing CI (or anything else). | |
| 5. A maintainer will review your PR. In this review, we check code quality, | |
| bugs, and whether the contribution aligns with what was previously discussed. | |
| If you think that a review comment misses something or is not quite right, | |
| please challenge it! | |
| 6. If the review passes, your PR will be merged and ship in the next version of | |
| Typst. You will appear as one of the contributors in the [changelog]. | |
| Thank you! | |
| Below are some signs of a good PR: | |
| - Implements a single, self-contained feature or bugfix that has been discussed | |
| previously. | |
| - Adds/changes as little code and as few interfaces as possible. Should changes | |
| to larger-scale abstractions be necessary, these should be discussed | |
| throughout the implementation process. | |
| - Adds tests if appropriate (with reference output for visual/HTML tests). See | |
| the [testing] readme for more details. | |
| - Contains documentation comments on all new Rust types. | |
| - Comes with brief documentation for all new Typst definitions | |
| (elements/functions), ideally with a concise example that fits into ~5-10 | |
| lines with <38 columns (check out existing examples for inspiration). This | |
| part is not too critical, as we will touch up the documentation before making | |
| a release. | |
| Sometimes, a contributor can become unresponsive during a review process. This | |
| is okay! We will, however, close PRs on which we are waiting for a contributor | |
| response after an extended period of time to avoid filling up the PR tracker | |
| with many stale PRs. In the same way, it may take a while for us to find time to | |
| review your PR. If there is no response after a longer while (1-2 weeks), feel | |
| free to ping us, as we may have missed it. | |
| While Typst is an open-source project, it is also the product of a startup. We | |
| always judge technical contributions to the project based on their technical | |
| merits. However, as a company, our immediate priorities can and do change often | |
| and sometimes without prior notice. This affects the design and decision making | |
| process as well as the development and review velocity. Some proposals may also | |
| have direct impact on our viability as a company, in which case we carefully | |
| consider them from the business perspective. | |
| If you are unsure whether your idea is a good fit for this project, please | |
| discuss it with us! The core question is "Does this help to make Typst the prime | |
| technical typesetting app?". If the answer is yes, your idea is likely right for | |
| Typst! | |
| [issue]: https://github.com/typst/typst/issues | |
| [testing]: https://github.com/typst/typst/blob/main/tests/README.md | |
| [#contributors]: https://discord.com/channels/1054443721975922748/1088371867913572452 | |
| [architecture]: https://github.com/typst/typst/blob/main/docs/dev/architecture.md | |
| [changelog]: https://typst.app/docs/changelog/ | |