diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 27d2315bf1..bab8a9fcfc 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,23 +1,55 @@ # Contributing to Panda3D -Thank you for looking into ways to contribute to Panda3D. -Most information on how to contribute and get involved already exists in other places. -Therefore this page serves as another way to find those resources. -## Useful Links -* [panda3d.org](https://www.panda3d.org) -* [Manual](https://docs.panda3d.org/1.10/python/index) +Panda3D is an open-source, community-driven project, completely dependent on the +contribution of volunteers. As such we highly welcome you to contribute code to +the project. This document aims to outline some guidelines for doing so. -### Getting in Touch With the Community -* [Discord](https://discord.gg/UyepRMm) -* [IRC](https://www.panda3d.org/manual/?title=The_IRC_Channel) -* [Forum](https://discourse.panda3d.org/) +If you would like to contribute but aren't sure where to start, please visit the +[Get Involved](https://www.panda3d.org/get-involved/) page on our website, or +the excellent [Open Source Guide](https://opensource.guide/how-to-contribute/). +## Before implementing a change -## Building the Project -Information on how to build Panda3D can be found in the [README](https://github.com/panda3d/panda3d#building-panda3d). +We highly recommend that you file issues before making a change. Issues are +used to track bugs and feature requests but also to get feedback from the other +developers about design decisions or a specific implementation strategy. -## Testing the Project -Information on how to test Panda3D can be found in the [README](https://github.com/panda3d/panda3d#running-tests). +It is important for acceptance that the change is implemented in a way that fits +the general design principles of the Panda3D API, and fits well with the general +priorities of the team. Therefore, prior discussion with other developers is +critical. Issues can be used to facilitate this, but we also invite you to +visit the #development channel on Discord (or #panda3d-devel on FreeNode IRC). -## Ways to Get Involved -Information on various ways to get involved with Panda3D can be found [on the main web site](https://www.panda3d.org/get-involved/). +We also recommend that you familiarize yourself with the established coding +style and design patterns of Panda3D, to reduce the amount of changes that have +to be made during the review process. + +## Submitting a change + +All changes from non-core contributors are made via pull requests. This +requires you to fork the Panda3D repository, create a branch for your change, +push your changes to this branch, and request that this branch is merged into +the upstream branch. Each pull request is reviewed by a maintainer and +automatically tested for regressions and unit test coverage. The maintainer +will suggest any changes, which you can add by committing more code to the same +branch (you can do a force push if necessary). Once the change is deemed +acceptable, the maintainer will merge your change into the appropriate branch of +the repository. + +To make it easier for the maintainer to review your changes, we highly recommend +that you give a clear and concise description of intent (linking to any issues +that are resolved by the change), as well as the inclusion of unit tests, which +contribute to a high level of confidence that this change does not break any +existing behaviours. We also recommend breaking up separate changes into +separate PRs, rather than submitting one big PR with several unrelated changes. + +If your change is still a work in progress, please mark the PR as "draft". This +will prevent other contributors from receiving an email every time you push a +new change to your branch. Draft PRs can also be used to invite early feedback +on your change, especially if you are uncertain about whether you are going in +the right direction. + +The code in the Panda3D repository is copyrighted to Carnegie Mellon University +and licensed under the Modified BSD License. By submitting your changes, you +accept that your code becomes placed under the same license. Except in specific +agreed-upon cases, we do not accept code contributions under alternate licenses.