Skip to content

add an AI contributions policy#6141

Open
davidhewitt wants to merge 3 commits into
PyO3:mainfrom
davidhewitt:contributing-updates
Open

add an AI contributions policy#6141
davidhewitt wants to merge 3 commits into
PyO3:mainfrom
davidhewitt:contributing-updates

Conversation

@davidhewitt

Copy link
Copy Markdown
Member

A number of recent contributions have been evidently submitted to various degree via AI tooling.

I do not wish to exclude contributions simply because they are AI, but nor do I wish to give my time to low-effort PRs where a contributor is essentially prompting an AI and pasting the output. Or worse, automating such a loop, with me as the only human in the interaction.

I am also concerned about the copyright issues surrounding AI-generated code. Given that we did once relicense PyO3 to add MIT licensing and it took a lot of work, we have experience here directly of how having engaged human contributors who own the copyright matters.

I tried to write a few short paragraphs which seek to avoid being too opinionated or prescriptive and focus on encouraging positive and meaningful engagement. Some inspiration has come from projects such as uv and FastAPI.

While at this I noted a few other small features which were out of date in the contributing guide, so I updated these at the same time.

@davidhewitt davidhewitt changed the title add an AI contributions policy docs: add an AI contributions policy Jun 17, 2026
@davidhewitt davidhewitt changed the title docs: add an AI contributions policy add an AI contributions policy Jun 17, 2026
@davidhewitt davidhewitt added the CI-skip-changelog Skip checking changelog entry label Jun 17, 2026
Comment thread Contributing.md Outdated
@mejrs mejrs self-assigned this Jun 17, 2026
Comment thread Contributing.md

We note that many have strong opinions on the use of AI, and the technical and social landscape is changing rapidly.
As a project PyO3 does not take a position on AI and its merits or issues; we accept that AI is a reality of current software development and wish to prioritise here the best outcomes for the PyO3 community.
This policy may be updated in the future to reflect coventions in the open source ecosystem as they evolve.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
This policy may be updated in the future to reflect coventions in the open source ecosystem as they evolve.
This policy may be updated in the future to reflect conventions in the open source ecosystem as they evolve.

@mejrs mejrs left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do like how LLVM frames it with "Extractive Contributions" and wish we'd adopt that language a bit more.

The primary reason I don't like llm contributions isn't because they're generally low quality (they are), but because they don't feel like a benefit to us. Reviewing a beginner quality contribution might be a loss initially because I could have implemented the PR faster myself. But, hopefully, the contributor learned something and might pay back that effort by doing better contributions later, be that here or in open source in general.

I've also had happen that the contributor doesn't do anything but proxy between you and the llm. Take rust-lang/rust#155819 for example. What's the point of that? If I wanted that I'd just use a llm myself, what value are you adding here? (Note that the quality of the LLM or its code is irrelevant here)

I'd also like a ban on using AI for "good first issues", since those are an important first step for many.

@mejrs

mejrs commented Jun 18, 2026

Copy link
Copy Markdown
Member

This probably also deserves a changelog entry

@mejrs mejrs removed the CI-skip-changelog Skip checking changelog entry label Jun 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants