reactos/CONTRIBUTING.md

10 KiB

How To Contribute

There are several ways to contribute to the development of ReactOS. The most often encountered problem is not knowing where to begin or what to do. If you are able to program or understand the technical information that is pertinent to this project, helping the development can be easy.

Legal notice: If you have seen Microsoft Windows source code, your contribution won't be accepted because of potential copyright violation. Before contributing, you must affirm that the following is true:

I hereby swear that I have not used nor seen the source code to any version of the Windows operating system nor any Microsoft product that may be related to the proposed project that is under a license incompatible with contribution to ReactOS, including but not limited to the leaked Windows 2000 source code and the Windows Research Kernel.

What To Do?

Fix bugs

You can try to fix a few bugs that are already listed in JIRA. Squashing bugs is not a simple task. It requires a lot more skill than simply searching for them, and can be time consuming; however, by doing that you greatly help ReactOS become a stable system.

NOTE: patches related to 3rd party code such as Wine or BtrFS should be sent to upstream of the said projects. See 3rd Party Files.txt, README.WINE and README.FSD in media/doc for details.

Fix tests

Tests are used to check the functionality and correctness of APIs on ReactOS compared to Windows implementations. There are some unit tests that you could help ReactOS pass, which can be found in the Web Test Manager and some that are broken or yet to be written.

Fix Coverity scans

Coverity is enhanced static analysis that uncovers leaks, buffer overflows, security issues and other. We do such scans on ReactOS codebase pretty often. You can request to see Coverity 'defects' and help to fix them.

Test ReactOS

By localizing bugs, developers can identify what causes the bug and which part it affects. There are a variety of methods to debug ReactOS while testing it. After identifying a bug, check if it is already known about by searching on JIRA and adding any additional information to the report. If you think that it is an unidentified bug, consider filing a bug report.

Implement new things

Considering ReactOS is alpha quality software, there is a lot of missing functionality that Windows operating systems have. Before starting a project to implement something, find out whether another person is working on the same thing. If you find that someone is already working on it, ask if any assistance is needed for what specifically is being worked on or a related project. More often than not, someone will start to implement something and move onto something else before it's complete. Make sure you stay committed to what you are going to implement, and do not be afraid to ask for assistance if you need help with something.

Write documentation

There are some important points if you would like to help document ReactOS:

  1. Make sure the documentation does not exist yet (if it does, help improve it).
  2. Respect clean room reverse engineering practices.
  3. Add your knowledge to a place where the other developers can find it.

How To Contribute?

Your contribution can be of numerous forms. We currently accept two ways to contribute - Pull Requests and Patches.

Pull Requests

Since our migration to GitHub we gladly accept Pull Requests. Pull requests let you tell others about changes you have pushed to a repository on GitHub. Once a pull request is opened, you can discuss and review the potential changes with collaborators and add follow-up commits before the changes are merged into the repository. Pull request is a preferred way to submit your work - it makes reviewing and merging your contribution much easier.

Patches

A patch is a set of changes to existing source code. The changes in a patch can be merged into existing source code. This process is referred to as applying a patch (to source code). Which changes a patch contains and the way the patch is structured can have significant impact on the consequences that can happen from applying the patch.

See Submitting Patches for details.

Commit style

Our commit style is defined in a commit template. Use it as a reference or turn it on using git config commit.template .gitmessage. This will set this template as an initial commit message for the new commits in your local repository.

Rules and Recommendations

  • Use your real name and real email. We do not accept anonymous code contributions!
    • Every commit that changes code or translations should have author's full legal name (in latin letters, diacritics allowed).
    • It's recommended to have the same full name set in GitHub profile (in the Name field here) that matches one specified in commits.
  • There is an exception for media changes, such as changes of art (wallpapers, themes, icons, sounds) and out-of-code documentation.
    • In these specific cases it's allowed to use a nickname or alias as author's name, and it's recommended to have the same name set in GitHub profile (in the Name field here) matching one specified in commits.
  • In any case the author must use a real e-mail address, this includes git commits (user.email setting) and GitHub e-mail settings - the checkbox "Keep my email addresses private" must be unchecked there.
    • In order to keep your privacy, select appropriate "Primary email address" that will be applied to your commits in GitHub e-mail settings.
  • Ensure your contribution is properly described. Include the relevant issue number if applicable.
  • Put only related changes. It will make reviewing easier as the reviewer needs to recall less information about the existing source code that is changed.
  • Search for similar pull requests/patches before submitting. It may be that a similar pull request or issue was opened previously. Comment and review on that one instead.
  • Keep your contribution small and focused on the topic. It can be tempting to fix existing issues as you come across them while reading the source code. Resist the temptation and put in a note in the source code instead, or (even better) put the issue in the issue tracking system.
  • Respect our Coding Style and Programming Guidelines.
  • Do not be afraid to ask questions. Ask our developers in the chat.

To amend your commit with your name and e-mail (in any case you've forgot to set your name/e-mail) please take a look at this guide. To set your name/e-mail globally for future commits that you push, read this.

Where To Start?

Finding a good project to start with can be a challenge, because when starting out you are (usually) not aware of all the possibilities. To help you find a project, here are some ideas to try:

See Also