> I think we could do with a much shorter policy, that doesn't even mention LLMs/AI

I agree that brevity and maybe simplicity could be improved.

But being explicit about LLMs/AI is not unnecessary. People have been asking, and will keep asking, what our policy in this respect is. Pointing them to a document that doesn't acknowledge the thing they are asking about in any way will not be as helpful.

> What I'm trying to convey is that LLMs are not special in the ability to produce poor code.

The goal of attributing LLM involvement is not to mark a contribution as bad. If I thought such MRs are categorically worse I would
argue for a blanket ban instead of being onboard with this policy.

I do agree with what you put into your condensed version. But personally I do want to see (mostly) LLM generated code to be marked as such. And the topic of LLMs to be explicitly addressed so we can point people at the policy instead of repeating the same discussion
over and over again.

On 15/07/2026 12:01, Moritz Angermann via ghc-devs wrote:
Andreas,

I should probably not have dealt in extremes to try to make my point.  What I'm trying to convey is that LLMs are not special in the ability to produce poor code.  They _do_ lower the bar, but LLMs are fundamentally orthogonal to the problem we face with them.  As such I mostly question the necessity for large parts of the policy.  Especially as I question the enforceability of the policy, and what value does a policy without teeth have?

From the interactions you had with me, you might know that I deeply value simplicity over (unnecessary) complexity.  And this policy as it grows to me becomes increasingly complex.  I think we could do with a much shorter policy, that doesn't even mention LLMs/AI, ... and sets the general expectations that would cover much more than just the challenges with LLMs.

I've taken the part from the policy that I consider very valuable and modified it slightly below.  I would like us to set a frame that transcends LLM and similar concerns, and focuses on the outcome we want, not on the particulars.

Best,
 Moritz

*Basic principles of GHC Development:*

 *

    We want to nurture the community of passionate volunteers who
    maintain and develop GHC, their motivation, their relationships,
    and their enjoyment.

 *

    We want to build software that is the province of humans, where it
    is understood and developed by a community of people.

 *

    We want to build a code base that we can be proud of: well
    structured, well documented, even beautiful.

*Collaboration*

 *

    Human conversation.   In offering a contribution to GHC you are
    becoming a valued part of a community of living, breathing
    people.  You are offering your work for free, and members of the
    community are likewise offering their work to you for free, to
    review and improve your MR, and to help you to learn your way
    around the code base.

They should treat you with respect, and you should treat them likewise. You are expected to enter a direct conversation with a human reviewer, and be able to fully motivate, explain and stand behind the contributions you offer. They want to talk to you.

 *

    Supporting contributors.  We aspire to nurture a
    mutually-supportive community of human beings who contribute to
    GHC.  GHC is a large code base, which can be intimidating.  Many
    GHC experts hang out on ghc-devs mailing list, or the Matrix
    channel, and IRC, and are happy to help. Here's a list of channels
    <https://gitlab.haskell.org/ghc/ghc/-/wikis/mailing-lists-and-irc>.

 *

    *No Right to Reviews*. Your contribution to GHC may not be
    automatically reviewed. There is only a small pool of active
    reviewers, and it is often best to reach out to people through the
    mailing list, irc, matrix, ... and find reviewers this way. We
    very much look forward to having you as a reviewer as well.
    Contributions that fail to enlist a reviewer or sheperd may be
    closed as-is after a reasonable timeframe (e.g. 3mo). *Always be
    sure that your MRs meet your own expectations on MRs you'd like to
    review.*

 *

    *Bad actors and poor quality contributions.* In the rare case
    where contributions to GHC are of sloppy, and poor quality, we
    reserve the right to ignore and eventually ban aspiring contributors.



On Wed, 15 Jul 2026 at 15:44, Simon Peyton Jones <[email protected]> wrote:

    Thanks for your feedback Iavor.

        The only bit I have some reservations about is the bit that
        any LLM use needs to be clearly indicated, as often the LLM
        use tends to be a bit "blurry", and I generally tend to think
        of the code as something I did, even if I happened to use an
LLM for some bit.

    I have clarified that section (P4).  I never intended to cover
    "any LLM use", so I have made that more explicit.  I intended NOT
    to require declaration of use of LLMs to help you find your way
    around the code base, draw diagrams etc.  Just declare if the
    material you are asking others to review was LLM-generated, even
    if (P2) you take full responsibility for every line.    Doing so
    is not a weakness; it just provides context.

    I hope that may address your unease.

    Simon

    On Wed, 15 Jul 2026 at 09:26, Iavor Diatchki
    <[email protected]> wrote:

        Hello,

        I like the document Simon has written because it established
        expectations and it does so with nuance.  I also might be in
        the minority, but it doesn't seem overly long to me. I view
        such documents as guidelines, rather than law, and as such I
        am not worried about it being "weaponized": if we have
        disagreements we should still discuss them directly rather
        then appealing to the document, as an arbiter if truth.

        Here are a few of my experiences with LLMs so far:
          * I find them very useful for refactoring code
          * For generating new code, I am still experimenting with the
        amount of guidance to give the LLM.  My impression is that I
        tend to be a lot more controlling than other folks using them
        (I don't really try to "one shot" things). I do this because I
        find it a lot easier to review the code as it is being
        written, then doing it all at once after the fact.
          * For complex features, I find working on a plan with an LLM
        to be pretty handy: it's a bit like having a fancy rubber
        duck, to clarify my thinking and try to think of all
        possibilities
          * I've had some good luck with having the LLM find bugs in
        the code
          * I also find them a pretty handy tool for getting familiar
        with a new code base. I've used them to sketch architecture
        diagrams, pointing to important modules, and it is pretty
        convenient to be able to ask questions about where to look for
        things in the code
        On the more negative side:
          * It is important to clearly scope your work, as LLMs make
        it easy to make giant PRs, even if you do it a little bit at a
        time. I just did this on a project (not on purpose!), and now
        we have a giant PR that I am the only person who understands.
        I was too focused on implementing the features, and not
        thinking of how it would be reviewed, which is a mistake (in
        retrospect an obvious one)
          * We've had issues with "drive by PRs" where a new
        contributor dumps a bunch of code. Some of my colleagues try
        to review those, but I am inclined to just delete them unless
        I can get some engagement from the contributor and get a sense
        that they know what they did (which hasn't happened yet)


        I think that most of my experiences are aligned with the
        proposed GHC policy. The only bit I have some reservations
        about is the bit that any LLM use needs to be clearly
        indicated, as often the LLM use tends to be a bit "blurry",
        and I generally tend to think of the code as something I did,
        even if I happened to use an LLM for some bit. Not so much
        opposed to this I just wouldn't know what to label.

        More long term, I think as a community, it would be useful to
        focus on getting more folks to be able to and comfortable to
        review code. Traditionally, I think we've encouraged new
        contributors to implement some small feature, and then have
        somebody experienced review their code. I wonder if this might
        work the other way around too, where a new contributor reviews
        a PR of an experienced contributor (perhaps in addition to
        another review).

        Anyway, I hope this helps!

        Cheers,
        Iavor




        On Wed, Jul 15, 2026, 8:01 AM Moritz Angermann via ghc-devs
        <[email protected]> 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 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]

Reply via email to