Issue or Discussion?
Understanding when to use issues versus discussions is important for effective collaboration.When in doubt, start with a discussion first. We will escalate to issues as needed. Feedback in a slightly wrong place is better than no feedback at all.
Use GitHub Issues for:
A bug is a situation in which there is something clearly and objectively wrong with the game. Examples of bug reports:- The game crashes to desktop when I start a beatmap
- Friends appear twice in the friend listing
- The game slows down a lot when I play this specific map
- A piece of text is overlapping another piece of text on the screen
Use GitHub Discussions for:
Use discussions when you want to:- Provide subjective feedback on the game (UI appearance, default skin, game mechanics, PP and scoring systems, etc.)
- Suggest a new feature to be added to the game
- Report a non-specific problem that may be connected to your hardware or operating system
Reporting Bugs
When opening an issue for a bug report, please follow these steps:Search for existing issues
Before opening the issue, search for any similar existing issues using the text search bar and issue labels. This includes both open and closed issues (we may have already fixed something, but the fix hasn’t yet been released).
Fill out the issue template
When opening the issue, please fill out as much of the issue template as you can. In particular, please make sure to include:
- Logs - Instructions on how to find log files are included in the issue template
- Screenshots - Visual evidence helps us understand the problem
Providing General Feedback
When opening a discussion, please keep in mind the following:Search existing discussions
Use the search function to see if your idea has been proposed before, or if there is already a thread about a particular issue you wish to raise.
If a discussion gathers enough traction, it may be converted into an issue by a maintainer.
Submitting Pull Requests
Before You Start
For simple issues: A direct PR is okay. For non-trivial issues: Please ask us first before starting work. This way we can:- Estimate if it is a good fit for you
- Provide the correct direction on how to address it
- Avoid wasted effort
Pre-submission Checklist
Before opening your PR, ensure you:Master the fundamentals
- Are comfortable with object-oriented programming principles
- Understand C# syntax
- Know your development environment
- Are familiar with git and the pull request workflow
Add tests
We expect most new features and bugfixes to have test coverage, unless the effort of adding them is prohibitive. See the testing documentation for more details on our visual testing methodology.
Run code analysis
Run tests and code style analysis before opening the PR:This is particularly important if you’re a first-time contributor, as CI will not run for your PR until we allow it to do so.
Test in debug configuration
The debug configuration has a completely separated full-stack environment, including a development website instance at https://dev.ppy.sh/. You can register an account on that development instance for testing purposes without worry about multi-accounting infractions.
Please do not make code changes via the GitHub web interface.
Opening the Pull Request
When you’re ready to open your PR, please follow these guidelines:Use a topic branch
Submit the pull request from a topic branch (not
master), and keep the Allow edits from maintainers checkbox selected, so that we can push fixes to your PR if necessary.Choose the correct target branch
Pick the following target branch for your pull request:
pp-dev- if the change impacts star rating or performance points calculations for any of the rulesetsmaster- otherwise
Code Review Process
We are highly committed to quality when it comes to the osu! project. This means that contributions from less experienced community members can take multiple rounds of review to get to a mergeable state. We try our utmost best to never conflate a person with the code they authored, and to keep the discussion focused on the code at all times. Please consider our comments and requests a learning experience.
Getting Help
If you’re uncertain about some part of the codebase or some inner workings of the game and framework, please reach out by:- Leaving a comment in the relevant issue, discussion, or PR thread
- Posting a message in the development Discord server
Resources
Development Resources
Development Resources
- Development roadmap - What the core team is currently working on
ppy/osu-frameworkwiki - Introductory information about osu!framework, the bespoke 2D game framework we use for the gameppy/osuwiki - Articles about various technical aspects of the game- Figma master library - Finished and draft designs for osu!