- Set up your development environment;
- Communicate with other devs on Discord.
- check the docs for more documentation
To find a task to work on, you can check the good first issue and help wanted labels on GitHub.
These tags are useful, but there are many other good issues that are not tagged with them, and you can also contribute by fixing bugs or adding features that are not listed in the issues. Note that new feature requests may be rejected if they don't fit the project's goals. It is best to discuss them with the maintainers before starting to work on them, either on Discord or by opening a discussion on GitHub.
Most appreciated contributions are those that:
- Fix bugs
- Add missing tests. Flutter widget tests are easy to write and very useful to
test the UI. They are reliable and fast. You can already find examples in the
test/
directory, but the project is still lacking a lot of tests.
We don't assign issues to contributors, so feel free to work on any issue you like, but check the existing pull requests to avoid duplicated work. Once you start working on an issue, submit a pull request as soon as possible (in draft mode if it's not ready yet) to let others know that you're working on it.
- Make sure your code follows the coding style guide
- Don't manually edit the
app_en.arb
file! See the internalizations docs for instructions on how to add new translations. - If possible, write a new widget test for your bugfix or new feature.
- Consider adding a screenshot and/or screen recording to the PR description.
- Run the linter and tests:
flutter analyze
flutter test
- Ensure your code is formatted correctly (or use your editor's "format on save" feature):
dart format --output=none --set-exit-if-changed $(find lib/src -name "*.dart" -not \( -name "*.*freezed.dart" -o -name "*.*g.dart" -o -name "*lichess_icons.dart" \) )
dart format --output=none --set-exit-if-changed $(find test -name "*.dart" -not \( -name "*.*freezed.dart" -o -name "*.*g.dart" \) )
Make an issue. Before creating an issue, make sure that:
- You list the steps to reproduce the problem to show that other users may experience it as well, if the issue is not self-descriptive.
- Search to make sure it isn't a duplicate. The advanced search syntax may come in handy.
- It is not a trivial problem or demands unrealistic dev time to fix. Such issues may be closed.
- You're not posting a one liner such as "X feature is missing". It is useless, we already know exactly what features are missing. Feature request are allowed if you're suggesting a new idea, while explaining it in the most detailed and clear possible way.
- You provide device hardware and operating system information to help with the debug.
See that guide.
Check out Lichess on crowdin.com.
Also see https://lichess.org/help/contribute.