Skip to main content

Contributing Guide

We're always looking to improve this project, and we welcome your participation! Flagsmith accepts contributions via GitHub pull requests (PRs). This guide is intended to help ensure the success of your contribution.

Create an issue

Before opening a PR, we encourage you to create an issue describing your problem or feature request.

We don't leave PRs unattended, but it will be easier for us to prioritise a review of your PR when there is a relevant issue at hand.

You can submit a PR directly for problems such as spelling mistakes or other things where it's clear what the problem is.

If you decide to create an issue, be sure to search for an existing one first.

Find an issue

If you are prepared to contribute but are uncertain as to how, consider narrowing your search with issue filters. For instance:

Submit a PR

  1. The target branch should always be set to main, unless otherwise asked in the respective issue.
  2. Feel free to open a draft pull request. If you open a regular PR, a reviewer will be assigned immediately and your PR will be considered ready for review, unless you specify otherwise in a PR comment. You're welcome to use a PR to run checks against unfinished code.
  3. Once you have addressed the review feedback, preferably in new commits, reply to review comments, ensure the checks are passing and re-request a review. It is okay to not address the nitpicks and notes.
  4. An approved PR is eventually merged into main. Documentation changes will get deployed immediately afterwards. Your frontend changes will get deployed to SaaS, and you can expect both backend and frontend changes to be included in the next release.

Setup local development

The development tooling is intended for use with Linux or macOS, and GNU Make. Consider using Windows Subsystem for Linux (WSL) to develop on Windows.

To install Git hooks, run make install-hooks.

Each component provides its own Makefile in its respective subdirectory, and documents its usage and dependencies in a README.md file.

For detailed documentation, see the next section.