Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 80 additions & 0 deletions doc/source/dev/ai_policy.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
.. _ai_policy:

AI Policy
=========

"AI" herein refers to generative AI tools like large language models (LLMs)
that can generate, edit, and review software code, create and manipulate
images, or generate human-like communication.

Responsibility
--------------

You are responsible for any code you submit to NumPy's repositories, regardless
of whether it was manually written or generated by AI. You must understand and be able
to explain the code you submit as well as the existing related code. It is not
acceptable to submit a patch that you cannot understand and explain yourself.
In explaining your contribution, do not use AI to automatically generate
comments, pull request descriptions, or issue descriptions. See below for our
policy on AI translation systems.

Disclosure
----------

You must disclose whether AI has been used to assist in the development of
your pull request.
If so, you must document which tool(s) have been used, how they were used,
and specify what code or text is AI generated. We will reject any pull request
that does not include the disclosure.

Code Quality
------------

Contributors are expected to submit code that meets NumPy's standards. We will
reject pull requests that we deem to be "`AI slop`_". Do not waste developers'
time by submitting code that is fully or mostly generated by AI, and doesn't
meet our standards.

.. _AI slop: https://en.wikipedia.org/wiki/AI_slop

Copyright
---------

All code in NumPy is released under the BSD 3-clause copyright license.
Contributors to NumPy license their code under the same license when it is
included in NumPy's version control repository. That means contributors must
own the copyright of any code submitted to NumPy or must include the BSD
3-clause compatible open source license(s) associated with the submitted code
in the patch. Code generated by AI may infringe on copyright and it is the
submitter's responsibility to not infringe. We reserve the right to reject any pull
requests, AI-generated or not, where the copyright is in question.

Communication
-------------

When interacting with developers (forums, discussions,
issues, pull requests, etc.) do not use AI to speak for you, except for
translation or grammar editing. If the developers want to chat with a chatbot,
they can do so themselves. Human-to-human communication is essential for an
open source community to thrive.

AI Agents
---------
The use of an AI agent that writes code and then submits a pull request autonomously is
not permitted. A human must check any generated code and submit a pull request according
to the 'Responsibility' section above.

Other Resources
---------------
While these do not formally form part of NumPy's AI policy, the following resources
may be helpful in understanding some pitfalls associated with using AI to contribute to
NumPy:

- https://llvm.org/docs/AIToolPolicy.html
- https://github.com/melissawm/open-source-ai-contribution-policies
- https://blog.scientific-python.org/scientific-python/community-considerations-around-ai/

Acknowledgements
----------------
We thank the SciPy developers for their AI policy, upon which this document is largely
based.
1 change: 1 addition & 0 deletions doc/source/dev/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,7 @@ The rest of the story
.. toctree::
:maxdepth: 2

ai_policy
development_environment
spin
howto_build_docs
Expand Down
2 changes: 1 addition & 1 deletion requirements/ci32_requirements.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
spin
# Keep this in sync with ci_requirements.txt
scipy-openblas32==0.3.31.22.1
scipy-openblas32==0.3.31.126.1
4 changes: 2 additions & 2 deletions requirements/ci_requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
spin
# Keep this in sync with ci32_requirements.txt
scipy-openblas32==0.3.31.22.1
scipy-openblas64==0.3.31.22.1
scipy-openblas32==0.3.31.126.1
scipy-openblas64==0.3.31.126.1