mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-09-25 17:00:36 -09:00
GP-0: CONTRIBUTING.md improvements
This commit is contained in:
104
CONTRIBUTING.md
104
CONTRIBUTING.md
@@ -1,7 +1,6 @@
|
||||
# Contributor's Guide
|
||||
|
||||
Ghidra is an open source project. If you are interested in making it better,
|
||||
there are many ways you can contribute. For example, you can:
|
||||
Ghidra is an open source project. If you are interested in making it better, there are many ways you
|
||||
can contribute. For example, you can:
|
||||
|
||||
- Submit a bug report
|
||||
- Suggest a new feature
|
||||
@@ -12,88 +11,100 @@ there are many ways you can contribute. For example, you can:
|
||||
- Answer questions from other users
|
||||
- Share the software with other users who are interested
|
||||
- Teach others to use the software
|
||||
- Package and distribute the software in a downstream community (such as your
|
||||
preferred Linux distribution)
|
||||
|
||||
## Bugs and Feature Requests
|
||||
|
||||
If you believe that you have found a bug or wish to propose a new feature,
|
||||
please first search the existing [issues] to see if it has already been
|
||||
reported. If you are unable to find an existing issue, consider using one of
|
||||
the provided templates to create a new issue and provide as many details as you
|
||||
can to assist in reproducing the bug or explaining your proposed feature.
|
||||
If you believe that you have found a bug or wish to propose a new feature, please first search the
|
||||
existing [issues] to see if it has already been reported. If you are unable to find an existing
|
||||
issue, consider using one of the provided templates to create a new issue and provide as many
|
||||
details as you can to assist in reproducing the bug or explaining your proposed feature.
|
||||
|
||||
## Patch Submission Tips
|
||||
Patches should be submitted in the form of Pull Requests to the Ghidra [repository] on GitHub. But
|
||||
first, consider the following tips to ensure a smooth process when submitting a patch:
|
||||
|
||||
Patches should be submitted in the form of Pull Requests to the Ghidra
|
||||
[repository] on GitHub. But first, consider the following tips to ensure a
|
||||
smooth process when submitting a patch:
|
||||
- Before you begin implementing, consider first opening a dialogue with the Ghidra team to ensure
|
||||
that your efforts will align with the goals of the project. This may provide you with valuable
|
||||
insight on what the best design and implementation strategy is, inform you about what internal
|
||||
efforts may already be underway, and will significantly improve the odds that your patch gets
|
||||
accepted. Unsolicited pull requests will likely receive an initial lower priority from the Ghidra
|
||||
team due to our massive backlog.
|
||||
|
||||
- Focus your patches on bug fixes that were discovered through real-world usage and testing, and on
|
||||
improvements that clearly satisfy a need in Ghidra's functionality.
|
||||
|
||||
- Please do not create an issue that is effectively a duplicate of your pull request. Instead,
|
||||
fully describe the bug in the pull request/patch description text box.
|
||||
|
||||
- Please do not open an issue just to submit your patch as Pull Request a moment later. It is
|
||||
just duplicate work for all and wastes valuable time. Describe the problem it handles in patch
|
||||
description text box instead.
|
||||
- Ensure that the patch compiles and runs in at least our development environment, and ideally our
|
||||
full build too. Even the most trivial change done in the GitHub editor has a chance to cause
|
||||
problems in the full development environment for unexpected reasons.
|
||||
- If using "AI" to assist in development, please apply extra scrutiny to its suggestions, in terms
|
||||
of both correctness and adherence to our [legal](#legal) requirements.
|
||||
- Be understanding, patient, and friendly; developers may need time to review your submissions
|
||||
before they can take action or respond. This does not mean your contribution is not valued. If
|
||||
your contribution has not received a response in a reasonable time, consider commenting with a
|
||||
polite inquiry for an update.
|
||||
|
||||
- Limit your patches to the smallest reasonable change to achieve your intended goal. For example,
|
||||
do not make unnecessary indentation changes; but don't go out of your way to make the patch so
|
||||
minimal that it isn't easy to read, either. Consider the reviewer's perspective.
|
||||
|
||||
- Isolate multiple patches from each other. If you wish to make several independent patches, do so
|
||||
in separate, smaller pull requests that can be reviewed more easily.
|
||||
|
||||
- Unless previously authorized by the Ghidra team, repackaging, renaming, and other refactoring
|
||||
should not be part of any pull request. These types of changes are difficult to review, pollute
|
||||
the git history making it harder to do git forensics on regressions, and will likely conflict with
|
||||
other changes that the Ghidra team is making internally.
|
||||
|
||||
- Avoid "find and replace" changes in your pull request. While it may be tempting to globally
|
||||
replace calls to deprecated methods or change the style of the code to fit your personal
|
||||
preference, these types of seemingly trivial changes have likely not already been performed by the
|
||||
Ghidra team for good reason.
|
||||
- Focus your patches on bug fixes that were discovered through real-world usage and testing, and on
|
||||
improvements that clearly satisfy a need in Ghidra's functionality. Before you begin
|
||||
implementing, consider first opening a dialogue with the Ghidra team to ensure that your efforts
|
||||
will align with the goals of the project. This will significantly improve the odds that your
|
||||
patch gets accepted.
|
||||
- Unless it addresses a critical security update, avoid pull requests that update jars or other 3rd
|
||||
party libraries. It is preferred that these changes are made internally by the team. If you have
|
||||
a need for an updated library, please submit an issue with your request instead of a pull request.
|
||||
- Before submission, please squash your commits down to a single commit that briefly describes the
|
||||
changes.
|
||||
- Please do not include the issue number that is being fixed in the pull request or patch title
|
||||
field. Instead, use "Fixes #xxx" somewhere in the pull request or patch description text box.
|
||||
- Isolate multiple patches from each other. If you wish to make several independent patches, do so
|
||||
in separate, smaller pull requests that can be reviewed more easily.
|
||||
- Patch title or lines must not begin with '#' since it leads to unrecognized lines while squashing.
|
||||
|
||||
- Avoid pull requests that update jars or other 3rd party libraries. It is preferred that these
|
||||
changes are made internally by the team. If you have a need for an updated library, please submit
|
||||
an issue with your request instead of a pull request.
|
||||
|
||||
- Avoid submitting self-generated binary files as part of your pull request. Despite your best
|
||||
intentions, our policy forbids accepting them because we cannot effectively review and validate
|
||||
their content.
|
||||
|
||||
- Ensure that the patch compiles and runs in at least our development environment, and ideally our
|
||||
full build too. Even the most trivial change done in the GitHub editor has a chance to cause
|
||||
problems in the full development environment for unexpected reasons.
|
||||
|
||||
- Before submission, please squash your commits down to a single commit that briefly describes the
|
||||
changes.
|
||||
|
||||
- Please do not include the issue number that is being fixed in the pull request/patch title
|
||||
field. Instead, use "Fixes #xxx" somewhere in the pull request/patch description text box.
|
||||
|
||||
- Pull request/patch title or commit message lines must not begin with `#` since it leads to
|
||||
unrecognized lines while squashing.
|
||||
|
||||
- Be understanding, patient, and friendly; developers may need time to review your submissions
|
||||
before they can take action or respond. This does not mean your contribution is not valued. If
|
||||
your contribution has not received a response in a reasonable time, consider commenting with a
|
||||
polite inquiry for an update.
|
||||
|
||||
- Be prepared to answer questions from reviewers. They may have further questions before accepting
|
||||
your patch, and may even propose changes. Please accept this feedback constructively, and not as a
|
||||
rejection of your proposed change.
|
||||
|
||||
## Review
|
||||
|
||||
- We welcome code reviews from anyone. A committer is required to formally accept and merge the
|
||||
changes.
|
||||
|
||||
- Reviewers will be looking for things like threading issues, performance implications, API design,
|
||||
duplication of existing functionality, readability and code style, avoidance of bloat
|
||||
(scope-creep), etc.
|
||||
|
||||
- Reviewers will likely ask questions to better understand your change.
|
||||
|
||||
- Reviewers will make comments about changes to your patch:
|
||||
- MUST means that the change is required
|
||||
- SHOULD means that the change is suggested, further discussion on the subject may be required
|
||||
- COULD means that the change is optional
|
||||
|
||||
## Getting Started
|
||||
|
||||
Once available, please see the [Developer's Guide][devguide] for instructions to set up a suitable
|
||||
development environment.
|
||||
Once available, please see the [README][readme] and [Developer's Guide][devguide] for instructions
|
||||
to set up a suitable development environment.
|
||||
|
||||
## Timeline and Managing Expectations
|
||||
|
||||
As we continue to engage contributors and learn best practices for running a successful open source
|
||||
project, our processes and guidance will likely evolve. We will try to communicate expectations as
|
||||
we are able to and be responsive. We hope that the community will share their suggestions for
|
||||
@@ -105,6 +116,7 @@ of resources to evaluate contributions, we anticipate the following:
|
||||
language specifications because these require a reasonable amount of effort to evaluate and will
|
||||
help us exercise and revise our process for accepting contributions. In other words, we are going
|
||||
to start small in order to work out the kinks first.
|
||||
|
||||
- We are committed to maintaining the integrity and security of our code base. In addition to the
|
||||
careful review the maintainers will give to code contributions to make sure they do not introduce
|
||||
new bugs or vulnerabilities, we will be trying to identify best practices to incorporate with our
|
||||
@@ -112,9 +124,11 @@ of resources to evaluate contributions, we anticipate the following:
|
||||
are accepted. These might include things like style guides and requirements for tests and
|
||||
documentation to accompany some code contributions. As a result, it may take a long time for some
|
||||
contributions to be accepted. This does not mean we are ignoring them.
|
||||
|
||||
- We are committed to integrating this GitHub project with our team's regular development work flow
|
||||
so that the open source project remains dynamic and relevant. This may affect our responsiveness
|
||||
and ability to accept pull requests quickly. This does not mean we are ignoring them.
|
||||
|
||||
- Not all innovative ideas need to be accepted as pull requests into this GitHub project to be
|
||||
valuable to the community. There may be times when we recommend that you just share your code for
|
||||
some enhancement to Ghidra from your own repository. As we identify and recognize extensions that
|
||||
@@ -122,7 +136,6 @@ of resources to evaluate contributions, we anticipate the following:
|
||||
our baseline.
|
||||
|
||||
## Legal
|
||||
|
||||
Consistent with Section D.6. of the GitHub Terms of Service as of 2019, and Section 5. of the Apache
|
||||
License, Version 2.0, the project maintainer for this project accepts contributions using the
|
||||
inbound=outbound model. When you submit a pull request to this repository (inbound), you are
|
||||
@@ -138,5 +151,6 @@ States ("U.S.") Government and the contributor.
|
||||
|
||||
[issues]: https://github.com/NationalSecurityAgency/ghidra/issues
|
||||
[repository]: https://github.com/NationalSecurityAgency/ghidra/
|
||||
[readme]: README.md
|
||||
[devguide]: DevGuide.md
|
||||
[LICENSE]: LICENSE
|
||||
|
||||
Reference in New Issue
Block a user