-
Notifications
You must be signed in to change notification settings - Fork 33
enh(policy): add Gen AI policy to review guide #344
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from 2 commits
68cc75a
48ffce5
fb564cd
eb0ee0c
34c7dc7
77f010a
0983494
79840b0
021175c
345a91f
61f4ea2
261039c
8aae6e1
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -9,12 +9,12 @@ to work on them before the review process begins. | |
| Please check our [Python packaging guide](https://www.pyopensci.org/python-package-guide) for more information on the elements | ||
| below. | ||
|
|
||
| - [ ] **Installation** The package can be installed from a community repository such as PyPI (preferred), and/or a community channel on conda (e.g., conda-forge, bioconda). | ||
| - [ ] **Installation** The package can be installed from a community repository such as PyPI (preferred), and/or a community channel on conda (for example, conda-forge, bioconda). | ||
lwasser marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| - [ ] The package imports properly into a standard Python environment `import package`. | ||
| - [ ] **Fit** The package meets criteria for [fit](https://www.pyopensci.org/software-peer-review/about/package-scope.html#what-types-of-packages-does-pyopensci-review) and [overlap](https://www.pyopensci.org/software-peer-review/about/package-scope.html#package-overlap). | ||
| - [ ] **Documentation** The package has sufficient online documentation to allow us to evaluate the package's function and scope *without installing the package*. This includes: | ||
| - [ ] User-facing documentation that overviews how to install and start using the package. | ||
| - [ ] Short quickstart tutorials that help a user understand how to use the package and what it can do for them. | ||
| - [ ] Short, quickstart tutorials that help a user understand how to use the package and what it can do for them. | ||
| - [ ] API documentation (documentation for your code's functions, classes, methods, and attributes): this includes clearly written docstrings with variables defined using a standard docstring format. | ||
| - [ ] Core GitHub repository Files | ||
| - [ ] **README** The package has a `README.md` file with a clear explanation of what the package does, instructions on how to install it, and a link to development instructions. | ||
|
|
@@ -28,13 +28,14 @@ NOTE: We prefer that you have development instructions in your documentation too | |
| - [ ] **Package overlap** The package doesn't entirely overlap with the functionality of other packages that have already been submitted to pyOpenSci. | ||
| - [ ] **Archive** (JOSS only, may be post-review): The repository DOI resolves correctly. | ||
| - [ ] **Version** (JOSS only, may be post-review): Does the release version given match the GitHub release (v1.0.0)? | ||
| - [ ] The package authors have disclosed the use of Generative AI tools in the development and/or maintenance of their package. | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. How does this work for larger projects where they may not be aware if a contributor has used AI?
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think if they aren't aware, then it's not large scale enough to be a huge issue. We have to expect we've already approved packages that have some amount of AI contributions, but this is really about dealing with submissions that have a significant fraction of LoC written by AI and potentially have not been reviewed in detail by human maintainers.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Open ended response allows for description of this - "we the core maintainers listed in the submission use LLMs like xyz, for external contributors we have a policy like zyx..."
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Great question and great responses y'all!! this is hard stuff. |
||
|
|
||
| **Optional:** Let projects know that it's a great idea for projects to have a .github repository for the project organization where they can host a commonly used LICENSE, Code of Conduct, and even a YAML file with label definitions. These items will then be automatically applied to every repository in the organization to ensure consistency (but can be customized within repos too). The [SunPy project](https://github.com/sunpy/.github/) has a great example of this. | ||
|
|
||
| --- | ||
| - [ ] [Initial onboarding survey was filled out ](https://forms.gle/F9mou7S3jhe8DMJ16) | ||
| We appreciate each maintainer of the package filling out this survey individually. :raised_hands: | ||
| Thank you, authors, in advance for setting aside five to ten minutes to do this. It truly helps our organization. :raised_hands: | ||
| Thank you, authors, in advance, for setting aside five to ten minutes to do this. It truly helps our organization. :raised_hands: | ||
| --- | ||
|
|
||
| ******* | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,10 @@ | ||
| ```markdown | ||
|
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Once we are happy with this checklist, i'll open a pr to update our submission template as well. |
||
| - [ ] Some parts of the package were created using LLMs in some way. | ||
lwasser marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| * Please check any of the boxes below to clarify which parts of the package were impacted by LLM use | ||
| - [ ] LLMs were used to develop code | ||
| - [ ] LLMs were used to develop documentation | ||
| - [ ] LLMs were used to develop tests | ||
| - [ ] LLMs were used to develop infrastructure (CI, automation) | ||
|
||
|
|
||
| - [ ] I acknowledge that a human (at least one member of our maintainer team) has reviewed, edited, and modified all LLM-generated code and text submitted in this review to ensure it’s not biased (if text) and the code runs (if code). | ||
|
||
| ``` | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -3,15 +3,15 @@ | |
| ## Review process guidelines | ||
|
|
||
| pyOpenSci packages are reviewed for quality, fit, scope, documentation, and | ||
| usability. The review process is similar to a manuscript review, however, it | ||
| usability. The review process is similar to a manuscript review; however, it | ||
| has a stronger focus on Python packaging best practices. | ||
|
|
||
| Unlike a manuscript review, our peer review process is an ongoing conversation. | ||
| Once all major issues and questions are addressed, the review editor will make | ||
| a decision to accept, hold, or reject the package. | ||
| Once all major issues and questions are addressed, the review editor will decide | ||
| to accept, hold, or reject the package. | ||
|
|
||
| Rejections are usually done early in the process, before the review process | ||
| begins. In rare cases, a package may also not be on-boarded into the pyOpenSci | ||
| begins. In rare cases, a package may also not be onboarded into the pyOpenSci | ||
| ecosystem after review & revision. | ||
|
|
||
| It is ultimately the editor’s decision on whether or not to reject the package | ||
|
|
@@ -20,26 +20,27 @@ based on how the reviews are addressed. | |
| ## Review communication approach | ||
|
|
||
| Communication between authors, reviewers, and editors takes | ||
| place on GitHub. You can, however choose to contact the editor by email if | ||
| place on GitHub. You can, however, choose to contact the editor by email if | ||
| needed. | ||
|
|
||
| When submitting a package, please make sure that your GitHub notification | ||
| settings are setup to notify you when you receive feedback on the review issue. | ||
| settings are turned on for the software-submission repository to notify you | ||
| when you receive feedback on a review issue. | ||
|
|
||
| ## Submitting your package for review in other venues | ||
|
|
||
| We recommend submitting your package for review with pyOpenSci before | ||
| submitting a software paper describing the package to a journal. | ||
|
|
||
| Review feedback may result in major improvements and updates to your package, | ||
| including changes that could be break package functionality. | ||
| Review feedback may result in significant improvements and updates to your package, | ||
| including changes that could break package functionality. | ||
|
|
||
| Applying reviewer or editor recommendations to your package can improve your | ||
| users' experience with future versions of your package even if your package is | ||
| users' experience with future versions of your package, even if your package is | ||
| already published on `PyPI` or `conda-forge`. | ||
|
|
||
| > Please do not submit your package for review while it or an associated | ||
| > manuscript is also under review at another venue, as this may result on | ||
| > manuscript is also under review at another venue, as this may result in | ||
| > conflicting requests for changes from two sets of reviewers. | ||
|
|
||
| ### Publication with Journal of Open Source Software (JOSS) | ||
|
|
@@ -77,6 +78,33 @@ a conflict of interest if: | |
| In the case where none of the associate editors can serve as editor, an | ||
| external guest editor will be recruited to lead the package review. | ||
|
|
||
| (generative-ai-policy)= | ||
| ## Policy for use of generative AI / LLMs | ||
|
|
||
| :::{admonition} How this policy was developed | ||
| :class: important | ||
|
|
||
| The policy below was co-developed by the pyOpenSci community. Its goals are: | ||
|
|
||
| * Acknowledgment of and transparency around the widespread use of Generative AI tools with a focus on Large Language Models (LLMs) in Open Source. | ||
| * Protect peer review efficiency: Ensure human review of any LLM-generated contributions to a package to protect editor and reviewer volunteer time in our peer review process. | ||
|
||
| * Raise awareness of challenges that Generative AI tools present to the scientific (and broader) open source community. | ||
| [Please see this GitHub issue for a discussion of the topic.](https://github.com/pyOpenSci/software-peer-review/issues/331) | ||
lwasser marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| ::: | ||
|
|
||
| ### Disclosure of generative AI use in pyOpenSci reviewed packages | ||
|
|
||
| * When you submit a package to pyOpenSci, please disclose any use of LLMs (Large Language Models) in your package’s generation by checking the appropriate boxes on our software submission form. Disclosure should generally include what parts of your package were developed using LLM tools. | ||
|
||
| * Please also disclose this use of Generative AI tools in your package's `README.md` file and in any modules where generative AI contributions have been implemented. | ||
| * We require that all aspects of your package have been reviewed carefully by a human on your maintainer team. Please ensure all text and code have been carefully checked for bias, bugs, and issues before submitting to pyOpenSci. | ||
| * Your acknowledgment of using Generative AI will not impact the success of your submission unless you have blindly copied text and code into your package without careful review and evaluation of its accuracy, and for any systemic bias. | ||
|
||
| * If the review team (comprised of the editor and reviewers) determines that the code and text in the package are too challenging to review, they can decide to pause and/or discontinue the review following this policy’s guidelines. | ||
|
|
||
| Below is the checklist that you will need to respond to in our submission form: | ||
|
|
||
| ```{include} ../appendices/gen-ai-checklist.md | ||
| ``` | ||
|
|
||
| ## Review timelines and on-hold reviews | ||
|
|
||
| At any time, an author can choose to have their submission put on hold | ||
|
|
@@ -114,9 +142,9 @@ including issues, pull requests, and dates of the last release and last commit | |
| to the package repository. Activity is defined as a repository commit, pull | ||
| request, or release. | ||
|
|
||
| We will flag packages that haven't been updated within a 1 year/ 12 month time | ||
| We will flag packages that haven't been updated within a 1-year/12-month time | ||
| period based on activity. Packages with no activity after 12 months will be | ||
| flagged. At that time, pyOpenSci editorial team member will contact the package | ||
| flagged. At that time, a pyOpenSci editorial team member will contact the package | ||
| maintainers to evaluate the maintenance status of their package. | ||
|
|
||
| (archive-process)= | ||
|
|
@@ -130,15 +158,15 @@ ecosystem. | |
| In cases where the community heavily uses a package, we may | ||
| collaborate with the community to identify reasonable next steps, such as | ||
| assisting in finding a new maintainer. If a solution for the ongoing package | ||
| maintenance is not found, the package will be archived within the pyOpenSci | ||
| ecosystem. | ||
| maintenance of your package is not found, the package will be archived within | ||
| the pyOpenSci ecosystem. [See section on archiving below.](package-archive) | ||
|
|
||
| If a sub-community decides to fork and maintain the package, we are open to | ||
| working with the new maintainers to register the newly forked package within | ||
| our ecosystem. The original package will be archived with a link to the new | ||
| fork. | ||
|
|
||
| We will also add a note to any blogs written that highlight your tool that | ||
| We will also add a note to any blogs written that highlight your tool, that | ||
| the package is no longer maintained. | ||
|
|
||
| ### Quality commitment | ||
|
|
@@ -156,19 +184,20 @@ in touch with us if they do need to step down from maintaining a tool. | |
| ### Requesting Package Removal from the pyOpenSci Ecosystem | ||
|
|
||
| In the unlikely scenario that a contributor of a package requests removal of | ||
| their package from our ecosystem, we retain the right offer the last / most | ||
| their package from our ecosystem, we retain the right to offer the last/most | ||
| recently released version of that package in our ecosystem for archival | ||
| purposes only. | ||
|
|
||
| (package-archive)= | ||
| ### Archiving a package | ||
|
|
||
| If a package appears to be no longer maintained, we will mark it as | ||
| archived which moves the package from our | ||
| archived, which moves the package from our | ||
| [main package listing](https://www.pyopensci.org/python-packages.html#all-packages) | ||
| to our [archived packaging](https://www.pyopensci.org/python-packages.html#archived-packages) | ||
| listing section. | ||
|
|
||
| To archive a pyOpenSci approved package, add the | ||
| To archive a pyOpenSci-approved package, add the | ||
| [archive label](https://github.com/pyOpenSci/software-submission/issues?q=label%3Aarchived) | ||
| to the original review issue. Once this label is applied to the issue, the | ||
| website will automatically update to reflect this status. If at any point | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
should an explicit mention be made of other forges like those on
pixi(e.g.https://prefix.dev/channels/rg-forge)These are a little different, in that they don't really have any kind of community validation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"e.g." === "for example"
i personally dont really think the example list changes the content of the requirement all that much, not really part of this PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@all-contributors please add @HaoZeke for docs, review
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oops - the bot doesn't work on inline comments it seems ❇️ i totally appreciate your point @sneakers-the-rat but also when we wrote these guidelines pixi didn't exist!! Gosh it's been that long! I like the idea of adding other forges too as we aren't specific about where the package is published. It is out of scope for this PR. but we could make a small pr or I could just make a small change here to address other forges. I will go ahead and do that now as it can't hurt and it only helps us adapt to the quickly evolving ecosystem!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh ya totally by all means add it!