Project-wide LLM policy - #3959
Conversation
Co-authored-by: Arhan Chaudhary <arhan.ch@gmail.com>
Co-authored-by: +merlan #flirora <flirora@flirora.xyz>
GitHub is being weird. I already merged these changes, so, it's weird it's showing them as unaddressed.
There was a problem hiding this comment.
Whatever it means to you to hear this from the outside: I sympathize greatly with your frustrations here and I appreciate your work more than you can imagine. Please take care, please feel better.
There was a problem hiding this comment.
Thank you for all the work you've done. I also really appreciate it.
Take a break if you need to, take care of yourself. If you wish to vent, feel free to reach out.
Wishing you the best.
There was a problem hiding this comment.
So, it appears that somehow the root of this thread got hidden because of a direct report to GitHub, which is extremely concerning. For now, you can read it on rustbot's view, since it appears that GitHub implemented this (likely new) feature very poorly. But note that not even the moderators can unhide this comment, and I'm not even sure org admins can either. Will have to investigate, but, since Rust Week is this week, might take a while.
|
We (leadership council) are taking this off our nomination list. We don't have something concrete to discuss about it at present, but it can be renominated once the rust-lang/rust policy is merged (or otherwise handled) and there is a concrete ask of the council. |
|
I was honestly not expecting it to get nominated in the first place, so, that makes sense, although I would assume that the LC would be the ones on the FCP unless I'm mistaken. |
There was a problem hiding this comment.
Hello, everyone!
You may have noticed that all the active discussion threads have been resolved, minus two:
- One thread for people to express that they would not be comfortable supporting the project if it does not restrict LLM usage.
- One thread where, upon sharing my personal exprerience with the vitriol surrounding this policy discussion, GitHub decided to block my comment under the "acceptable use" policy, even though it does not. They've refused to even respond to my support requests, even after it has been privately brought up through other channels to them.
Both of these remain relevant throughout the policy discussion and emphasise the need to put our feet down and unilaterally condemn and restrict LLM usage. Note that I still say restrict, not ban, because LLM usage is entirely unrestricted up until the point where it affects the content being written. If LLMs are still useful for accessibility, or if they are still usefull for sifting through data and other tasks, these usages are unaffected. See the RFC itself for more motivation and details.
If you're wondering where the old Motivation section went, a lot of people complained that it should be a blog post, and now it is. Note: effectively all the links that were shared in that motivation section are still included as relevant citations, summarised in the newer, shorter motivation section, and the blog post version is linked alongside it for context. I decided to concede that this context was an unnecessary barrier to reading the RFC, but importantly, all of the relevant citations are still included. Technically, the justification is all there, just in a form that offers additional reading instead of constituting required reading.
Side note: unfortunately, because GitHub doesn't like accessible semantic HTML, specifically on the GitHub view, you will need to expand the citations explicitly for links within them to work. (In plain HTML, <details> are automatically opened when anchors within them are linked. GitHub hates this for some reason.)
The RFC now is almost entirely the actual policy, a timeline of events in the Rust project, and examples of other policies in effect. There are only minor wording changes to the actual policy, plus one additional clause: Co-Authored-By trailers are explicitly forbidden, and Assisted-By and similar trailers are discouraged but not forbidden. This is for two reasons: one, that the presence of these trailers generally indicates nontrivial usage, and two, that they effectively provide advertisements for LLM providers in contributor lists.
Side note: I won't talk too much on the outstanding discussion to create a committee to shepherd the policy discussion. It is my opinion that this policy can continue to solicit feedback from project members regardless of who ultimately ratifies it. I believe that any accepted policy will have a shape similar to this one, similar to the proposed Forge policy, etc. and also believe that the committee should work with existing proposals rather than try to shut them down, which has already been expressed in that discussion.
There was a problem hiding this comment.
Messing with the GH API, I managed to find a way to isolate the counts of members who have reacted to the RFC (at the top level) from T-all (with ❤️ being used if both 👍 and ❤️ are present):
❤️ ×12
👎 ×3
👍 ×2
Don't wanna explicitly call people out given the small numbers, but just in case folks are worried that the overwhelmingly positive response is purely due to outside observers: it's not.
For reproducibility
curl https://team-api.infra.rust-lang.org/v1/rfcbot.json | jq .all_members[] > members # new API!
gh api /repos/rust-lang/rfcs/issues/3959/reactions --paginate --jq '.[] | { login: .user.login, content }' > reactions
jq --slurpfile members members --slurpfile reactions reactions --null-input '[$reactions[] | select([.login] | inside($members))] | group_by(.login) | map({key: .[0].login, value: [.[].content]}) | from_entries | map_values(if length == 1 then .[0] elif . == ["+1", "heart"] then "heart" else . end) | to_entries | group_by(.value) | map({ key: .[0].value, value: [.[].key]}) | from_entries'There was a problem hiding this comment.
Another small update: @jyn514's work on creating an AGENTS.md file to help enforce the current policy for rust-lang/rust demonstrates that models can be pushed to encourage users to disclose and even reduce the extent of their usage, and so, should be allowed within this policy. I've added a dedicated section for this to encourage similar work.
You can see the work on this here: rust-lang/rust#160997
0f21584 to
57d4ddc
Compare
57d4ddc to
bd8bbf1
Compare
View all comments
Preface
A lot of discussion has occurred in private about the topic of LLM policy, and while some of that context has been included in the prior art, most of it is intentionally omitted here.
To keep things focused on policy, there are two broad categories of comments we'd like to request you avoid:
In general, defer to the code of conduct.
Important
Since RFCs involve many conversations at once that can be difficult to follow, please use review comment threads on the text changes instead of direct comments on the RFC.
If you don't have a particular section of the RFC to comment on, you can click on the "Comment on this file" button on the top-right corner of the diff, to the right of the "Viewed" checkbox. This will create a separate thread even if others have commented on the file too.
Existing policies
Right now, this policy is also proposed despite multiple policies which are scoped to specific teams/repos. Additionally, the Leadership Council has proposed adopting an LLM team/committee of sorts.
This RFC intentionally does not supersede any scoped policies; those policies are free to be merged before this one. In fact, even if after an RFC is accepted, they can still be merged, since updating the policies everywhere takes time, and getting a policy out immediately is still a net benefit.
Once an RFC is accepted, things can be adjusted for consistency, and whether it is formally accepted by the Leadership Council or a delegated committee doesn't matter to the discussion at the moment.
Summary
This policy details the requirements for using generative Artificial Intelligence (AI) models, particularly Large Language Models (LLMs), in all aspects of the Rust project. This includes (but is not limited to) contributions of code, documentation, chat messages, issue descriptions, etc.
We allow changes made by LLMs are indistinguishable from those made by humans, where the LLM didn't have any creative input.
We disallow changes made by LLMs with minimal human intervention.
(RFC-only note: This may necessitate additional tooling to notify new contributors about the policy and explain how disclosure works.)
There are no formal punishments for non-trivial usage with disclosure.
There are formal punishments for frequent non-trivial usage without disclosure; this is seen as intentionally refusing to honor the boundaries we've set.
This is similar to, but not always slop. For example, they may understand a large portion, but not all of it, which shows that they still put in a lot of effort.
In general, as long as contributors are demonstrating an earnest effort to reduce LLM usage, even if said reduction is not total, then they should be commended for that instead of punished, even if the project itself draws the line at non-trivial usage for accepted contributions.
RFC-only note: In terms of additional tooling for disclosure, this RFC encourages the creation of a bot that automatically replies to contributions from new users informing them of the LLM policy and what constitutes sufficient disclosure. As mentioned, in general, going into as much detail as possible (e.g. prompts used, etc.) is preferred, but not always required. The RFC leaves the exact details of such implementation unspecified and up for revision later.
Rendered