Add initial CONTRIBUTING.md file

Closes #962
This commit is contained in:
rdb 2020-07-25 15:55:34 +02:00
parent 35d6f3daa3
commit 8ae4c8eee8

View File

@ -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.