I think it's fine to make the argument against. But clearly the
suggested policy is not a LLM ban.
It seems extremely clear to me that no matter how it will look at the
end it won't be a LLM ban.
So perhaps focusing on a hypothetical ban is not the best use of anyones
time at this point. Clearly the discussion has moved past that.
------------
On the point of language barriers. Personally I'm fine with someone
writing texts in one language and then using whatever translation tool
they prefer to translate
their text. I don't think anyone actually disagrees with this. *I still
think it's good to point this out when doing so as it can help avoid
misunderstandings.
*Idoms can be very confusing when translated. I've found that dealing
with a text originating in another language is easier if I know about
that fact.
In my experience knowing it's been translated, and from what language,
can make decyphering certain phrases that are translated badly easier.
-------------
> - “LLM-generated code will contain different mistakes than code
written by humans does while the results often look very similar on the
first glance.” If we make such a claim, we need to put substance to it;
this needs a source.
You can put "Andreas Klebinger reviewing AI generated MRs" down as a
source if you like. Or just look for a paper. I found this one in 2
Minutes for example: https://arxiv.org/abs/2508.21634
Yeah it's based on older models. I'm sure you will have issues with it's
methodology. But it mostly matches my experience when reviewing code in
that there *are* differences between the kinds of
code and bugs a human would write and a model would generate. I'm sure
there are more such papers if one really wants to look further.
I have seen people put up AI MRs with bugs that contained bugs that a
humand understanding the structure of GHC would be *very* unlikely to make.
I'm not pointing at specific AI's because the point here is not to name
and shame them.
I'm not even saying they are always worse. For example I watch out more
closely for shadowing bugs in human written code than I do in AI generated
code. They are just different in a way where I as reviewer see it as
valuable to know about the origin.
> I am so vehemently against a policy that tries to classify LLMs as
something special.
Personally I don't see the big deal. I attribute it when I use code from
some library. When I implement an algorithm from some paper I reference it.
When I let AI do most of the work I similarly do the same. There are
references to stack overflow in GHC iirc and I think that's a good thing
to be liberal
in referencing your sources.
Yes there is no clear cut here. There will be edge cases. What if you
use it to review your hand written code and hand apply the suggested fixes?
What about having the LLM apply them? What about ... it really doesn't
matter.
If I use a paper or a library as inspiration and then rework the algo
massively it's up to me to decide if the reference is still useful. I
don't see it as much
different with LLMs. If there is honest confusion we can provide guide
lines. But I'm not sure there really is. And if people sometimes get it
wrong so be it.
The goal here is not to ostracise contributions that are partially LLM
generated. The goal is to make review easier. And if in 5 years no one
can tell the difference
between hand written contributions and LLMs we can simply change our policy.
Maybe it's simply a point we will have to agree to disagree on. But as I
see it with the state of this technology, and how it's used in practice,
it's in GHCs best interest
to ask people to mark LLM generated contributions as such for the time
being.
On 15/07/2026 07:00, Moritz Angermann via ghc-devs wrote:
After having another lively debate with Julian about this topic, and
getting a general notion I'm not being well understood, let me share
the following:
Julians argument is mostly that he doesn't want to spend his time
reviewing LLM generated code. I don't even disagree with the
fundamentals here, but I think this can be easily extended, in that we
don't want to review poor, sloppy, or similar code however one arrives
at that (I've tried to make this point by using various approaches so
far, but I feel this is not being understood) and is completely
orthogonal to LLM use. I've tried to outline what my expected outcome
of a LLM ban or similar policy would be and why I am so vehemently
against a policy that tries to classify LLMs as something special.
Maybe it's worth sharing here as well:
LLM ban policy:
1. a person who reads the policy and adheres to the policy ->
Opens a MR -> no one other than him can truly tell if it's a LLM
free MR.
2. a person who reads the policy and would adhere to the policy,
but isn't 100% sure he might not for a fraction of the MR end up
using LLMs -> won't open a MR.
3. a person who doesn't read the policy -> Opens a MR -> no one
other than him can truly tell if it's a LLM free or not MR.
4. a person who reads the policy, but still doesn't care and uses
LLMs -> Opens a MR -> will lie about using LLMs.
5. person who reads the policy, but thinks they might get away
with LLM use -> Opens a MR -> maybe mentioned they use LLMs when
pressed.
(1) is the MR you want.
(2) is maybe the person you'd be ok to still review the MR,
because they used an LLM to maybe help them translate some native
language to english.
(3) is the person you probably don't want, but can't tell from the
outside.
(4) is the person you probably don't want, but still can't tell
from the outside.
(5) is the person you probably don't want, and might find out later.
Person (3), and (4) probably don't care in the slightest even if
told they submitted LLM MRs.
Person (5) will feel ashamed if called out.
Reviewers still have to deal with (3), (4), (5).
And there will be people in group (3), and (4), who consider this
a challenge even. To use LLMs and see if they can fool the
reviewers to not notice.
And I _really_ _really_ think we want people especially from group (1)
and (2).
I honestly think
> code may be reviewed if you find a reviewer
is enough to codify that it is on the submitter to find someone to
review their code. I still don't know where this notion of every MR
submitted must be reviewed comes from. And I think that's a
self-sabotaging approach.
Even extending it to:
> if you submit a LLM PR, you should find a potential reviewer before
doing so
I find it questionable, because (as illustrated above) I feel it
discourages contributions from the people we _do_ want contributions
from, and encourages those whom we'd rather not have contributions
for. It also starts segregating contributors into "pure" and "impure"
people and creates a class system with an implied hierarchy.
I think we could probably also coupled this with a policy that MRs
that haven't been reviewed, or found a shepherd > 3mo will be
auto-closed. Or some other deadline. It is always on the submitter to
engage with the community to find someone to review their
contributions. This is part of partaking in the community and
collaborating with others. Throwing code over the wall and not
engaging with the project is the core issue we seem to address? Or
are we trying to address a more ideological (LLMs are fundamentally
bad for humanity) issue? If so, please let's be clear about this and
call this out that GHC as a project sees LLMs as fundamentally
detrimental to humanity and as such enacts a policy to ban LLM
contributions in any form whatsoever.
Ultimately this is all about social credit. If someone asks me to
review their code, I may do so if I know them personally, from IRC,
maybe matrix, or discourse, reddit, or 𝕏, ... or I may not. Maybe
someone whom I trust refers that MR to me for review. They are
basically putting their own social credit with me on the line for
someone else. If I end up feeling they made me review a sloppy,
poorly written, and barely understood MR, I'll think twice the next
time they ask me to review something. Similarly if I end up reviewing
someone's MR and find it of exceptionally poor quality, I will likely
hold it against them the next time I end up being asked to review
their MR. The inverse of course works as well, if I review a MR of
stellar quality, I'm more likely to be inclined to review another MR
by the same person. This is the same concept as how we deal with this
in other circles as well: academia, hiring, ...
But then again, maybe this all isn't about the technical questions and
collaboration on a technical project, but trying to use technical
arguments to achieve a socio-economic change; all I'm asking then is
that we are going to be absolutely frank about it.
In the end I'll remain highly sceptical about any policy that states
vague goals that can not be properly enforced (and proven), because at
that point they become easily weaponized.
Best,
Moritz
On Wed, 15 Jul 2026 at 06:08, Simon Peyton Jones via ghc-devs
<[email protected]> wrote:
Thanks for taking the time to write, Simon.
I have updated my draft
* Under "A human conversation", mention that in human
interactions it's fine to include LLM quotes.. That said, and
speaking for myself at least, if I'm conversing with a human,
say Robert, I really do want it to be Robert not Claude. If
written interaction is hard, I'd be happy to hop on a call
with Robert, or communicate in some other way that allows us
to communicate well.
* Under (P1) bring out your point about draft MRs. (I suggest
explicitly saying "Not ready for review" in the Description.)
* Under (P2) bring out your point about tickets having looser
criteria. I also added a para about asking for help.
I intended the tenor of the document to be positive: working in
partnership with other members of the Haskell community, and
developing a code base of which we can be proud. About LLMs I
know that not everyone will agree, and I think we need to find a
way to disagree agreeably, without knee-jerk reactions of fear or
anger, just with a recognition that other, equally thoughtful,
people may hold different views to ours.
For this reason the policy deliberately neither says "LLM bad" nor
"LLM good", although I know that members of our community hold
both views. Rather it focuses on outcomes: the effect on
reviewers, on our human conversations, and on the code base. That
may satisfy no one fully, but I hope it may be at least acceptable
to most.
Instead of trying to discourage contributions that involve
LLMs, I think this project should rather try to welcome
creative use of LLMs for the benefit of this project and all
Haskell users.
My intent was NOT to discourage contributions that /involve
/LLMs. The intent (for the reasons above) is to be neutral on
"involvement". The draft does indeed express a strong preference
that code and documentation are written by you -- but it's only a
strong preference. If you forensically review and hone every
line, that's fine: you are taking full responsibility. What no one
wants (I'm sure including you) is pages of machine-generated code
or documentation that no one understands.
thanks again
Simon
On Tue, 14 Jul 2026 at 15:42, Simon Jakobi via ghc-devs
<[email protected]> wrote:
Hi Simon,
here are my comments on the policy document:
> In particular, you must not use AI-generated text in a
direct conversation with a human reviewer.
I think this is too restrictive. A contributor may easily
reach the limits of their understanding during a code review,
and I think it's ok to resort to using an LLM then. I think
it's fair to require that they clearly mark the LLM-generated
part of their response though.
> P1: Write MRs that are easy to review
I fully agree with this, and apologize that some of my MRs
have not been easy to review! I do want to point out though
that MRs marked as "Draft" should not be held to the same
standards as a "ready" / non-draft MR. I frequently open draft
MRs mainly to get the CI results. Sometimes I still get
detailed reviews on these MRs, and then feel sorry that a
reviewer wasted their time on this.
> P2: Full responsibility
> You must understand, and be able to explain, every line of
code, and every sentence of documentation. Every line!
I think that's a good goal, but even for MRs, maybe too strict
a requirement. Where do you draw the line? Is the contributor
expected to understand every (pre-existing) function they
used? To what extent? Strictness and performance
characteristics too?
For bug reports, I think GHC should be more lenient, and
instead require that LLM use is clearly signalled.
> P3: Strong preference for human authorship
> We strongly prefer human-written code
I understand that it's "good exercise" to write code by hand.
But I've always been pretty bad and extremely slow to write
code. And now that recent models have become so good at
producing code, I was relieved that I can now contribute
without being so limited by my code-writing skills. I already
realize that some core contributors have much disdain for
LLM-generated code. If the GHC project decides to devalue
contributions of LLM-generated code with this language, I
think this will reduce my motivation to contribute.
> Writing it yourself forces you to think about every line;
and it imposes a cost on you if you write 1000 lines instead
of 100.
IMHO contributing to GHC is already quite onerous and
"costly", especially for newcomers. Just think of the flaky CI
system and recent GitLab performance. Instead of trying to
impose additional costs on contributors, I think it would be
better to try to reduce the cost of reviewing and maintenance!
For example, I think GHC should try using LLMs for
"first-line" code review. LLMs are already very capable at
debugging. How about investing in fuzzing or better automated
testing, so bugs are discovered before they make it into a
release?
> We strongly prefer human-written documentation.
Documentation generated by recentish models like Claude Opus
4.8 has indeed been quite bad. Claude Fable 5 is already much
better at this.
I think the main incentive resulting from this policy is to
include _less_ documentation in contributions. In a world
where LLMs are very capable of making sense of large code
bases, maybe that's not much of a drawback.
---
Overall, I feel that much of the recent discussion about LLMs
in GHC and Haskell has been driven by fear and anger. I think
many Haskellers are very proud of their skill to produce
high-quality code, and as LLMs get better and better at this,
this skill is becoming "less special".
Instead of trying to discourage contributions that involve
LLMs, I think this project should rather try to welcome
creative use of LLMs for the benefit of this project and all
Haskell users.
Sorry for the bad wording here and there. I did not use an LLM
to write these comments, and it took me an embarrassingly long
time.
Cheers,
Simon
_______________________________________________
ghc-devs mailing list -- [email protected]
To unsubscribe send an email to [email protected]
_______________________________________________
ghc-devs mailing list -- [email protected]
To unsubscribe send an email to [email protected]
_______________________________________________
ghc-devs mailing list [email protected]
To unsubscribe send an email [email protected]
_______________________________________________
ghc-devs mailing list -- [email protected]
To unsubscribe send an email to [email protected]