[Draft] Create AI Tool Use Policy for contributors (#6553)
Added a comprehensive AI Tool Use Policy outlining guidelines for contributors on using AI tools, ensuring human oversight and accountability in contributions. - closes https://github.com/assimp/assimp/issues/6538
This commit is contained in:
172
AIToolPolicy.md
Normal file
172
AIToolPolicy.md
Normal file
@@ -0,0 +1,172 @@
|
||||
# Asset-Importer-Lib AI Tool Use Policy
|
||||
|
||||
## Policy
|
||||
|
||||
Assimp's policy is that contributors can use whatever tools they would like to
|
||||
craft their contributions, but there must be a **human in the loop**.
|
||||
**Contributors must read and review all LLM-generated code or text before they
|
||||
ask other project members to review it.** The contributor is always the author
|
||||
and is fully accountable for their contributions. Contributors should be
|
||||
sufficiently confident that the contribution is high enough quality that asking
|
||||
for a review is a good use of scarce maintainer time, and they should be **able
|
||||
to answer questions about their work** during review.
|
||||
|
||||
We expect that new contributors will be less confident in their contributions,
|
||||
and our guidance to them is to **start with small contributions** that they can
|
||||
fully understand to build confidence. We aspire to be a welcoming community
|
||||
that helps new contributors grow their expertise, but learning involves taking
|
||||
small steps, getting feedback, and iterating. Passing maintainer feedback to an
|
||||
LLM doesn't help anyone grow, and does not sustain our community.
|
||||
|
||||
Contributors are expected to **be transparent and label contributions that
|
||||
contain substantial amounts of tool-generated content**. Our policy on
|
||||
labelling is intended to facilitate reviews, and not to track which parts of
|
||||
Assimp are generated. Contributors should note tool usage in their pull request
|
||||
description, commit message, or wherever authorship is normally indicated for
|
||||
the work. For instance, use a commit message trailer like Assisted-by: <name of
|
||||
code assistant>. This transparency helps the community develop best practices
|
||||
and understand the role of these new tools.
|
||||
|
||||
This policy includes, but is not limited to, the following kinds of
|
||||
contributions:
|
||||
|
||||
- Code, usually in the form of a pull request
|
||||
- RFCs or design proposals
|
||||
- Issues or security vulnerabilities
|
||||
- Comments and feedback on pull requests
|
||||
|
||||
## Details
|
||||
|
||||
To ensure sufficient self review and understanding of the work, it is strongly
|
||||
recommended that contributors write PR descriptions themselves (if needed,
|
||||
using tools for translation or copy-editing). The description should explain
|
||||
the motivation, implementation approach, expected impact, and any open
|
||||
questions or uncertainties to the same extent as a contribution made without
|
||||
tool assistance.
|
||||
|
||||
AI tools must not be used to fix GitHub issues labelled [`good first
|
||||
issue`][good-first-issue]. These issues are generally not urgent, and are
|
||||
intended to be learning opportunities for new contributors to get familiar with
|
||||
the codebase. Whether you are a newcomer or not, fully automating the process
|
||||
of fixing this issue squanders the learning opportunity and doesn't add much
|
||||
value to the project. **Using AI tools to fix issues labelled as "good first
|
||||
issues" is forbidden**.
|
||||
|
||||
[good-first-issue]: https://github.com/llvm/llvm-project/issues/?q=is%3Aissue%20state%3Aopen%20label%3A%22good%20first%20issue%22
|
||||
|
||||
## Extractive Contributions
|
||||
|
||||
The reason for our "human-in-the-loop" contribution policy is that processing
|
||||
patches, PRs, RFCs, and comments to Assimp is not free -- it takes a lot of
|
||||
maintainer time and energy to review those contributions! Sending the
|
||||
unreviewed output of an Assimp to open source project maintainers *extracts* work
|
||||
from them in the form of design and code review, so we call this kind of
|
||||
contribution an "extractive contribution".
|
||||
|
||||
Our **golden rule** is that a contribution should be worth more to the project
|
||||
than the time it takes to review it. These ideas are captured by this quote
|
||||
from the book [Working in Public][public] by Nadia Eghbal:
|
||||
|
||||
[public]: https://press.stripe.com/working-in-public
|
||||
|
||||
> \"When attention is being appropriated, producers need to weigh the costs and
|
||||
> benefits of the transaction. To assess whether the appropriation of attention
|
||||
> is net-positive, it's useful to distinguish between *extractive* and
|
||||
> *non-extractive* contributions. Extractive contributions are those where the
|
||||
> marginal cost of reviewing and merging that contribution is greater than the
|
||||
> marginal benefit to the project's producers. In the case of a code
|
||||
> contribution, it might be a pull request that's too complex or unwieldy to
|
||||
> review, given the potential upside.\" \-- Nadia Eghbal
|
||||
|
||||
Prior to the advent of LLMs, open source project maintainers would often review
|
||||
any and all changes sent to the project simply because posting a change for
|
||||
review was a sign of interest from a potential long-term contributor. While new
|
||||
tools enable more development, it shifts effort from the implementor to the
|
||||
reviewer, and our policy exists to ensure that we value and do not squander
|
||||
maintainer time.
|
||||
|
||||
Reviewing changes from new contributors is part of growing the next generation
|
||||
of contributors and sustaining the project. We want the LLVM project to be
|
||||
welcoming and open to aspiring compiler engineers who are willing to invest
|
||||
time and effort to learn and grow, because growing our contributor base and
|
||||
recruiting new maintainers helps sustain the project over the long term. Being
|
||||
open to contributions and [liberally granting commit access][commit-access]
|
||||
is a big part of how LLVM has grown and successfully been adopted all across
|
||||
the industry. We therefore automatically post a greeting comment to pull
|
||||
requests from new contributors and encourage maintainers to spend their time to
|
||||
help new contributors learn.
|
||||
|
||||
[commit-access]: https://llvm.org/docs/DeveloperPolicy.html#obtaining-commit-access
|
||||
|
||||
## Handling Violations
|
||||
|
||||
If a maintainer judges that a contribution doesn't comply with this policy,
|
||||
they should paste the following response to request changes:
|
||||
|
||||
This PR doesn't appear to comply with our policy on tool-generated content,
|
||||
and requires additional justification for why it is valuable enough to the
|
||||
project for us to review it. Please see our developer policy on
|
||||
AI-generated contributions: http://llvm.org/docs/AIToolPolicy.html
|
||||
|
||||
The best ways to make a change less extractive and more valuable are to reduce
|
||||
its size or complexity or to increase its usefulness to the community. These
|
||||
factors are impossible to weigh objectively, and our project policy leaves this
|
||||
determination up to the maintainers of the project, i.e. those who are doing
|
||||
the work of sustaining the project.
|
||||
|
||||
If or when it becomes clear that a GitHub issue or PR is off-track and not
|
||||
moving in the right direction, maintainers should apply the `extractive` label
|
||||
to help other reviewers prioritize their review time.
|
||||
|
||||
If a contributor fails to make their change meaningfully less extractive,
|
||||
maintainers should escalate to the relevant moderation or admin team for the
|
||||
space (GitHub, Discourse, Discord, etc) to lock the conversation.
|
||||
|
||||
## Copyright
|
||||
|
||||
Artificial intelligence systems raise many questions around copyright that have
|
||||
yet to be answered. Our policy on AI tools is similar to our copyright policy:
|
||||
Contributors are responsible for ensuring that they have the right to
|
||||
contribute code under the terms of our license, typically meaning that either
|
||||
they, their employer, or their collaborators hold the copyright. Using AI tools
|
||||
to regenerate copyrighted material does not remove the copyright, and
|
||||
contributors are responsible for ensuring that such material does not appear in
|
||||
their contributions. Contributions found to violate this policy will be removed
|
||||
just like any other offending contribution.
|
||||
|
||||
## Examples
|
||||
|
||||
Here are some examples of contributions that demonstrate how to apply
|
||||
the principles of this policy:
|
||||
|
||||
- [This PR][alive-pr] contains a proof from Alive2, which is a strong signal of
|
||||
value and correctness.
|
||||
- This [generated documentation][gsym-docs] was reviewed for correctness by a
|
||||
human before being posted.
|
||||
|
||||
[alive-pr]: https://github.com/llvm/llvm-project/pull/142869
|
||||
[gsym-docs]: https://discourse.llvm.org/t/searching-for-gsym-documentation/85185/2
|
||||
|
||||
## References
|
||||
|
||||
Our policy was informed by experiences in other communities:
|
||||
|
||||
- [Fedora Council Policy Proposal: Policy on AI-Assisted Contributions (fetched
|
||||
2025-10-01)][fedora]: Some of the text above was copied from the Fedora
|
||||
project policy proposal, which is licensed under the [Creative Commons
|
||||
Attribution 4.0 International License][cca]. This link serves as attribution.
|
||||
- [Rust draft policy on burdensome PRs][rust-burdensome]
|
||||
- [Seth Larson's post][security-slop]
|
||||
on slop security reports in the Python ecosystem
|
||||
- The METR paper [Measuring the Impact of Early-2025 AI on Experienced
|
||||
Open-Source Developer Productivity][metr-paper].
|
||||
- [QEMU bans use of AI content generators][qemu-ban]
|
||||
- [Slop is the new name for unwanted AI-generated content][ai-slop]
|
||||
|
||||
[fedora]: https://communityblog.fedoraproject.org/council-policy-proposal-policy-on-ai-assisted-contributions/
|
||||
[cca]: https://creativecommons.org/licenses/by/4.0/
|
||||
[rust-burdensome]: https://github.com/rust-lang/compiler-team/issues/893
|
||||
[security-slop]: https://sethmlarson.dev/slop-security-reports
|
||||
[metr-paper]: https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/
|
||||
[qemu-ban]: https://www.qemu.org/docs/master/devel/code-provenance.html#use-of-ai-content-generators
|
||||
[ai-slop]: https://simonwillison.net/2024/May/8/slop/
|
||||
Reference in New Issue
Block a user