CONTRIBUTING.md
Rama master · réplica de lectura del repositorio original.
# Contributing to Panda3D
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.
## Before implementing a change
We highly recommend that you file a GitHub Issue 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.
Note, the [good first issue](https://github.com/panda3d/panda3d/issues?q=state%3Aopen%20label%3A%22good%20first%20issue%22)
tag is maintained with issues that could be easily resolved, but are minor enough
to be valuable to keep as learning/teaching tools for new contributors. If you
want to contribute, try starting with one of those! Please note; the value of
submitting a *quality* PR for one of these issues is in the experience and skills
you will gain working with Panda3D. It would be pointless and use much more time
to review these were they done with LLM agents, as the experience would be lost
and the community would not continue to grow. Please don't contribute generated
code for the 'good first issue's, and take care when submitting any form of
generated code that you take the time to ensure it meets all standards.
## Standards
In order for a change to be accepted, it must be implemented in a way that fits
the general design principles of the Panda3D API, and with the general
priorities of the team. You *must* discuss any changes with other developers.
You may use GitHub Issues for this, but we invite you to visit the #development
channel on our Discord, where we can offer more help and guidance on
contributing to Panda3D.
If you haven't built Panda3D before, ensure you have an understanding of how to
use either [CMake](cmake/README.md) or the [makepanda](doc/INSTALL) system to
build the engine. Over time, we intend to transition to using CMake as our
preferred build system, so use that if you're not sure which to use. The
project [README](README.md) may offer more information, and you can always ask
questions in the Discord server or on the [forums](https://discourse.Panda3D.org/).
We also recommend that you familiarize yourself with the established [coding
style and design patterns](doc/CODING_STYLE.md) of Panda3D, as any
inconsistencies will need to be fixed before the changes can be accepted. To
minimise how many changes will need to be made, you must ensure that your
contribution meets these standards.
Please note, if you are using any sort of code-generation, particularly
if through an arms-reach Large Language Model, you are expected to go through
all of the changes you suggest in detail, and have a good understanding of
what sort of changes you are trying to make to the engine. We require all
changes to be of good quality and meet the standards above, regardless of
the method by which it was produced.
## Submitting a change
All changes from non-core contributors are made via pull requests ('PRs').
Submitting a PR requires you to:
1) fork the Panda3D repository,
2) create a branch for your change,
3) push your changes to this branch,
4) review that your changes meet the style guide, design patterns, systems,
and the copyright standards are met (you own the rights to all code), and
that your code does not break existing Panda3D API uses. You should now
establish it is covered by the test suite where required, and run tests,
5) then you can 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.
6) The maintainer will suggest any changes, which you can add by committing
more code to the same branch. You may need to do a force push to make these
changes. Once the change is in an acceptable state, the maintainer will merge
your change into the appropriate branch of the Panda3D repository.
#### Preparing to Submit a change
1) To make it easier for the maintainer to review your changes, prepare a clear
and concise description of your intentions, being sure to link any issues that
are resolved by the change).
2) Prepare unit tests which contribute to a high level of confidence that this
change does not break any existing behaviours.
3) Break up your PR into as many sub-changes as is reasonable. We recommend that
each PR cover only one change; we rarely accept larger PRs.
If your change is still a work in progress, please mark the PR as "draft". This
will prevent github sending an email to all other contributors every time you
push a new change to your branch. Setting PRs as 'draft PRs' in this way is
a good way to show others your work in progess and get feedback. If you're
uncertain that you're going in the right direction, you should definitely mark
the PR as a draft.
For more information on making a contribution, 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/).
## Copyright Notice
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.