2019-02-03 23:38:41 +00:00
|
|
|
# Contributing to RetroArch
|
|
|
|
|
2021-08-22 00:28:12 +00:00
|
|
|
If you are a developer who wishes to contribute to the development of _RetroArch_; or if you have
|
|
|
|
found a bug and wish to submit a minor patch and/or bug report, please read this document.
|
2019-02-03 23:38:41 +00:00
|
|
|
|
2021-08-22 00:28:12 +00:00
|
|
|
Active discussions happen on our [Discord](https://discordapp.com/invite/27Xxm2h), mostly within
|
|
|
|
the _Programming_ channel category. We value discussions that happen in real time around
|
|
|
|
these contributions.
|
2019-02-03 23:38:41 +00:00
|
|
|
|
2021-08-22 23:24:14 +00:00
|
|
|
Please do note that contributors to _RetroArch_ do such contributions within their spare time.
|
|
|
|
We do prefer to keep a professional and non-aggressive atmosphere around the project, along
|
|
|
|
with any disagreements to be settled professionally without insults, name calling, or otherwise.
|
|
|
|
If there are any issues, we are willing to have discussions about it.
|
|
|
|
|
2021-08-22 00:28:12 +00:00
|
|
|
## Submitting Bug Reports
|
2019-02-03 23:38:41 +00:00
|
|
|
|
2021-08-22 00:28:12 +00:00
|
|
|
Bug reports in _RetroArch_ may fall into one of two categories:
|
|
|
|
|
|
|
|
* _RetroArch_ itself, the user interface and API around all of the various cores.
|
|
|
|
* Individual _Core_, of which interact with _RetroArch_.
|
|
|
|
|
|
|
|
When submitting a bug report, ensure that the report is submitted to the correct repository.
|
|
|
|
For _RetroArch_ itself, it is done by reporting a bug within the
|
|
|
|
[RetroArch](https://github.com/libretro/RetroArch) repository. For other cores, please use
|
|
|
|
the search function within the [libretro Organization](https://github.com/libretro) on
|
|
|
|
GitHub. Issues that are specific to a core and not _RetroArch_ are likely to be closed very
|
|
|
|
quickly. If an issue is suspected with _RetroArch_, please make sure to test with multiple
|
|
|
|
cores to be sure that is is not isolated.
|
|
|
|
|
|
|
|
If the issue occurs during runtime, please paste the verbose log output:
|
|
|
|
|
|
|
|
* If using the _Pheonix_ interface, the log will be in _File_ -> _Show Log_.
|
|
|
|
* If using the main interface, enable verbose logging with _Settings_ -> _Logging_ ->
|
|
|
|
_Logging Verbosity_. Ensure both _Log to File_ and _Timestamp log Files_ is enabled.
|
|
|
|
* Otherwise, run _RetroArch_ with the verbose (`-v`) flag.
|
|
|
|
|
|
|
|
If the error happens during compilation and/or building, paste the output of `./configure`
|
|
|
|
and `make` accordingly. If using an IDE, please paste any of the errors and log output.
|
2019-02-03 23:38:41 +00:00
|
|
|
|
2021-08-22 23:18:00 +00:00
|
|
|
## Submitting Pull Requests
|
2019-02-03 23:38:41 +00:00
|
|
|
|
2021-08-22 23:18:00 +00:00
|
|
|
Any and all contributions should be submitted through Pull Requests on
|
|
|
|
[GitHub](https://github.com/libretro/RetroArch/pulls). The process requires that you fork the
|
|
|
|
repository, make the appropriate changes, and then open a pull request on _GitHub_. If your
|
|
|
|
pull request is for a proof-of-concept then please indicate as such.
|
|
|
|
|
|
|
|
Your pull request will then be reviewed. There may be comments and requests for additional
|
|
|
|
changes to be made. It may also be possible that the changes will not be accepted. Otherwise, it
|
|
|
|
may be merged in when it is fully approved. The final approval of merge requests is at the
|
|
|
|
discretion of the project.
|
|
|
|
|
|
|
|
If you want to develop a larger feature or make broad changes, please do join our
|
|
|
|
[Discord](https://discordapp.com/invite/27Xxm2h) server to discuss. The discussion is
|
|
|
|
necessary to prevent the possibility of major work being done which will not be accepted at all.
|
2019-02-03 23:38:41 +00:00
|
|
|
|
|
|
|
## libretro API
|
2021-08-22 23:18:00 +00:00
|
|
|
|
|
|
|
If you wish to contribute additional functionality to _libretro_'s API, there are considerations
|
|
|
|
that must be accepted. Please note that because this API affects multiple different projects, we
|
|
|
|
highly value and require API and ABI stability and backwards-compatibility. Due to this
|
|
|
|
requirement, there will be additional scrutiny in reviews for this added functionality.
|
|
|
|
|
|
|
|
Any and all features will be added only when **necessary** for an existing _libretro_ core to
|
|
|
|
properly function. Hypothetical implementations of _libretro_ are not considered.
|
|
|
|
|
|
|
|
## Coding style
|
|
|
|
|
|
|
|
We highly value a consistent code style throughout the entire code base, please make sure you look
|
|
|
|
through the existing code to get a feel for the coding style. When submitting a pull request, it may
|
|
|
|
be asked to fix any coding style issues before submission. In other cases, there may be a follow-up
|
|
|
|
pull request making the code style consistent.
|
|
|
|
|
2021-08-25 14:54:04 +00:00
|
|
|
For full guidelines please see the [Coding Standards](https://docs.libretro.com/development/coding-standards/).
|
|
|
|
|
2021-08-22 23:18:00 +00:00
|
|
|
Some non-obvious things to be aware of:
|
|
|
|
|
|
|
|
- Code should be both C89 and ISO C++ compatible. This is a requirement for XBox 360 and MSVC to
|
|
|
|
properly build. Think of it as a C++ compatible subset of C99.
|
|
|
|
- There must be no warnings in your code (enabled by `-Wall` for GCC compilers), do also note that
|
|
|
|
different compilers may produce different warnings.
|
|
|
|
- Avoid using deprecated APIs, these will be removed in the future at some point.
|
|
|
|
|
|
|
|
## Copyright Headers and AUTHORS
|
|
|
|
|
|
|
|
If you have contributed a chunk of source code that is written to you, you should add yourself to
|
|
|
|
the copyright header in the file. If you have made a significant contribution you should add
|
|
|
|
yourself to the `AUTHORS` file, adding your full name, e-mail, and the feature you worked on.
|
|
|
|
|
|
|
|
## Commit Access
|
|
|
|
|
|
|
|
Contributors who show a good track record of pull requests over time may eventually
|
|
|
|
get commit access to the repository. This may happen when looking through pull requests
|
|
|
|
over long amounts of time becomes a burden.
|