# Contributing

Thank you for your interest in improving Wagtail!

## First-time contributors

1. Read this document first.
2. We don’t assign tasks. Feel free to pick any issue/task that isn’t already being worked on by someone else.
3. Read the [Your first contribution guide](first_contribution_guide.md).

## Issues

The easiest way to contribute to Wagtail is to tell us how to improve it! First, check to see if your bug or feature request has already been submitted at [github.com/wagtail/wagtail/issues](https://github.com/wagtail/wagtail/issues). If it has, and you have some supporting information that may help us deal with it, comment on the existing issue. If not, please [create a new one](https://github.com/wagtail/wagtail/issues/new), providing as much relevant context as possible. For example, if you’re experiencing problems with installation, detail your environment and the steps you’ve already taken. If something isn’t displaying correctly, tell us what browser you’re using, and include a screenshot if possible.

If your bug report is a security issue, **do not** report it with an issue. Please read our guide to [reporting security issues](security.md).

Please do not use the issue tracker for support queries - use [the ‘wagtail’ tag on Stack Overflow](https://stackoverflow.com/questions/tagged/wagtail) (preferred) or the [#support channel](https://github.com/wagtail/wagtail/wiki/Slack#support) on the [Wagtail Slack](https://github.com/wagtail/wagtail/wiki/Slack).

If you’d like to discuss an idea before requesting it, use the [Wagtail Slack](https://github.com/wagtail/wagtail/wiki/Slack) or [Discussions](https://github.com/wagtail/wagtail/discussions).

For further information about how issues are handled, see [Issue tracking](issue_tracking.md).

## Pull requests

If you are just getting started with development and have never contributed to an open-source project, we recommend you read the [Your first contribution guide](first_contribution_guide.md). If you’re a confident Python or Django developer, [fork it](https://github.com/wagtail/wagtail/) and read the [developing docs](developing.md#developing-for-wagtail) to get stuck in!

We welcome all contributions, whether they solve problems that are specific to you or they address existing issues. If you’re stuck for ideas, pick something from the [issue list](https://github.com/wagtail/wagtail/issues?q=is%3Aopen) - you might like to start by checking issues with the [good first issue](https://github.com/wagtail/wagtail/labels/good%20first%20issue) label. There is no need to ask “please assign me this issue”, but feel free to leave a comment outlining your plans so that other people know you’re working on it.

For large-scale changes, we’d generally recommend breaking them down into smaller pull requests that achieve a single well-defined task and can be reviewed individually. If this isn’t possible, we recommend opening a pull request on the [Wagtail RFCs](https://github.com/wagtail/rfcs/) repository, so that there’s a chance for the community to discuss the change before it gets implemented.

## Translations

Wagtail has internationalization support so if you are fluent in a non-English language you can contribute by localizing the interface.

Translation work should be submitted through [Transifex](https://explore.transifex.com/torchbox/wagtail/). For information on how to get started see [Translations](translations.md#contributing-translations).

## Code reviews

We welcome code reviews from everyone, although a core team member will need to do at least one review for the pull request to be merged. There’s always a list of pull requests tagged [status:Needs Review](https://github.com/wagtail/wagtail/pulls?q=is%3Apr+is%3Aopen+sort%3Aupdated-desc+label%3A%22status%3ANeeds+Review%22).

## Triaging issues

We welcome help with triaging issues and pull requests. You can help by:

- Adding more details or your own perspective to bug reports or feature requests.
- Attempting to reproduce issues tagged [status:Unconfirmed](https://github.com/wagtail/wagtail/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3Astatus%3AUnconfirmed) and sharing your findings.
- Reviewing or otherwise offering your feedback on pull requests.

View our [issue tracking guidelines](issue_tracking.md) for more information.

## Accessibility testing

We’d love to get feedback on the accessibility of Wagtail. Get in touch with our [accessibility team](https://github.com/wagtail/wagtail/wiki/Accessibility-team) if you are testing Wagtail and want to report your findings, or have a look at our [backlog of accessibility issues and improvements](https://github.com/wagtail/wagtail/projects/5). We also document our [testing targets and known issues](ui_guidelines.md#accessibility-targets).

<a id="other-contributions"></a>

## Other contributions

There are many more ways to contribute to the Wagtail community, through code or otherwise:

- Contribute to one of the other [core Wagtail projects](https://github.com/orgs/wagtail/repositories) in GitHub.
- Contribute to one of the community-maintained packages on [Wagtail Nest](https://github.com/wagtail-nest/).
- Contribute user-facing documentation (including translations) on the [Wagtail guide](https://guide.wagtail.org/en-latest/contributing/).
- Star the [wagtail](https://github.com/wagtail/wagtail) project on GitHub
- Support others with answers to questions on the [Wagtail StackOverflow topic](https://stackoverflow.com/questions/tagged/wagtail) or in Slack `#support`.
- Write a review of [Wagtail on G2](https://www.g2.com/products/wagtail/reviews).
- Provide some thoughtful feedback on the [Wagtail discussions](https://github.com/wagtail/wagtail/discussions).
- Submit (or write) a tutorial or great package to the [This Week in Wagtail newsletter](https://wagtail.org/newsletter/), [Awesome Wagtail](https://github.com/springload/awesome-wagtail) or [Third-party tutorials](../advanced_topics/third_party_tutorials.md).

## Developing packages for Wagtail

If you are developing packages for Wagtail, you can add the following [PyPI](https://pypi.org/) classifiers:

- [`Framework :: Wagtail`](https://pypi.org/search/?c=Framework+%3A%3A+Wagtail)
- [`Framework :: Wagtail :: 1`](https://pypi.org/search/?c=Framework+%3A%3A+Wagtail+%3A%3A+1)
- [`Framework :: Wagtail :: 2`](https://pypi.org/search/?c=Framework+%3A%3A+Wagtail+%3A%3A+2)
- [`Framework :: Wagtail :: 3`](https://pypi.org/search/?c=Framework+%3A%3A+Wagtail+%3A%3A+3)
- [`Framework :: Wagtail :: 4`](https://pypi.org/search/?c=Framework+%3A%3A+Wagtail+%3A%3A+4)
- [`Framework :: Wagtail :: 5`](https://pypi.org/search/?c=Framework+%3A%3A+Wagtail+%3A%3A+5)
- [`Framework :: Wagtail :: 6`](https://pypi.org/search/?c=Framework+%3A%3A+Wagtail+%3A%3A+6)

You can also find a curated list of awesome packages, articles, and other cool resources from the Wagtail community at [Awesome Wagtail](https://github.com/springload/awesome-wagtail).

## More information

* [Your first contribution](first_contribution_guide.md)
  * [Guide](first_contribution_guide.md#guide)
  * [Common questions](first_contribution_guide.md#common-questions)
  * [Helpful links](first_contribution_guide.md#helpful-links)
* [Setting up a development environment](developing.md)
  * [Setting up the Wagtail codebase](developing.md#setting-up-the-wagtail-codebase)
  * [Development on Windows](developing.md#development-on-windows)
  * [Testing](developing.md#testing)
  * [Compiling static assets](developing.md#compiling-static-assets)
  * [Compiling the documentation](developing.md#compiling-the-documentation)
  * [Linting and formatting](developing.md#linting-and-formatting)
  * [Using forks for installation](developing.md#using-forks-for-installation)
* [General coding guidelines](general_guidelines.md)
  * [Use of generative AI](general_guidelines.md#use-of-generative-ai)
  * [Language](general_guidelines.md#language)
  * [File names](general_guidelines.md#file-names)
  * [Naming conventions](general_guidelines.md#naming-conventions)
* [Python coding guidelines](python_guidelines.md)
  * [PEP8](python_guidelines.md#pep8)
  * [Django compatibility](python_guidelines.md#django-compatibility)
  * [Tests](python_guidelines.md#tests)
* [UI coding guidelines](ui_guidelines.md)
  * [Browser and device support](ui_guidelines.md#browser-and-device-support)
  * [Accessibility targets](ui_guidelines.md#accessibility-targets)
  * [HTML guidelines](ui_guidelines.md#html-guidelines)
  * [CSS guidelines](ui_guidelines.md#css-guidelines)
  * [JavaScript guidelines](ui_guidelines.md#javascript-guidelines)
  * [Stimulus](ui_guidelines.md#stimulus)
  * [Multilingual support](ui_guidelines.md#multilingual-support)
  * [Icons](ui_guidelines.md#icons)
  * [Images](ui_guidelines.md#images)
  * [UI Styleguide](ui_guidelines.md#ui-styleguide)
  * [Using the pattern library](ui_guidelines.md#using-the-pattern-library)
* [Documentation guidelines](documentation_guidelines.md)
  * [Writing style guide](documentation_guidelines.md#writing-style-guide)
  * [Formatting recommendations](documentation_guidelines.md#formatting-recommendations)
  * [Formatting to avoid](documentation_guidelines.md#formatting-to-avoid)
  * [Code example considerations](documentation_guidelines.md#code-example-considerations)
* [Writing documentation](documentation_modes.md)
  * [Choose a writing mode](documentation_modes.md#choose-a-writing-mode)
  * [Tutorial](documentation_modes.md#tutorial)
  * [How-to guide](documentation_modes.md#how-to-guide)
  * [Reference](documentation_modes.md#reference)
  * [Explanation](documentation_modes.md#explanation)
* [Translations](translations.md)
  * [Translation workflow](translations.md#translation-workflow)
  * [Marking strings for translation](translations.md#marking-strings-for-translation)
  * [Additional resources](translations.md#additional-resources)
* [Reporting security issues](security.md)
  * [Early notification](security.md#early-notification)
  * [Supported versions](security.md#supported-versions)
  * [Bug Bounties](security.md#bug-bounties)
  * [CVE IDs](security.md#cve-ids)
  * [How Wagtail discloses security issues](security.md#how-wagtail-discloses-security-issues)
  * [Frequently-reported issues](security.md#frequently-reported-issues)
* [Issue tracking](issue_tracking.md)
  * [Issues](issue_tracking.md#issues)
  * [Pull requests](issue_tracking.md#pull-requests)
  * [Release schedule](issue_tracking.md#release-schedule)
* [Committing code](committing.md)
  * [Check out the code locally](committing.md#check-out-the-code-locally)
  * [Rebase onto `main`](committing.md#rebase-onto-main)
  * [Update `CHANGELOG.txt` and release notes](committing.md#update-changelog-txt-and-release-notes)
  * [Push to `main`](committing.md#push-to-main)
  * [When you have made a mistake](committing.md#when-you-have-made-a-mistake)
  * [Add commits to someone else’s pull request](committing.md#add-commits-to-someone-else-s-pull-request)
