- Set up your development environment.
- Pick a GitHub issue to work on. The
good first issueandno scalatags might be useful. - Communicate with other devs on Discord.
Generated AI code can be accepted, under some conditions:
- Carefully review and understand all the code you submit, and be able to explain it if asked.
- Provide proof of manual testing of the changes, with screenshots or ideally a video.
- Include in the pull-request message, or in commit messages, the prompts you used to generate the code, and the AI tool you used.
- Explain why the change is needed, and what problem it solves.
- Link to any relevant issues or discussions.
- Prefer small, focused pull requests that only change one thing at a time.
- Mark the pull request as a draft if you have not run the code.
- Only mark the pull request as ready when you have confirmed that it works as intended - be on the lookout for edge cases.
- If you're unsure about something, or want to ask if the change is desired before doing the work, ask us in the programming channels on https://discord.gg/lichess
Some issues that need artwork and documentation to be resolved are tagged nontechnical.
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.
Report mobile-only bugs to Lichess mobile.
Issue tickets on features that lack potential or effectiveness are not useful and may be closed. Discussions regarding whether a proposed new feature would be useful can be done on the Lichess Feedback Forum to gauge feedback. The developers may also discuss the idea there, and if it is exemplary, a corresponding issue ticket will be made. When you're ready, make an issue ticket and link relevant, constructive comments regarding it in your issue ticket (such as a detailed Reddit post; linking to an empty forum thread with only your own commentary adds no value). Make sure that the feature you propose:
- Is effective in delivering a goal. A feature that adds nothing new is purely fancy; please develop a userscript or userstyle for your personal use instead.
- Doesn't rely on mundane assumptions. Non-technical people have the tendency to measure how difficult / easy a feature is to implement based on their unreliable instincts, and such assumptions waste everyone's time. Point out what needs to happen, not what you think will happen.
- Is unique, if you're aiming to solve a problem. Features that can easily be replaced by easier ideas have little value and may not have to be brought up to begin with.
- Is clear and concise. If ambiguities exist, define them or propose options.
Check out Lichess on crowdin.com.
Also see https://lichess.org/help/contribute.