Industry#Code generation#Content quality

QGIS bans AI contributions — and moves to extend the ban to all repo text

QGIS merged a total ban on AI-assisted code on Oct 7; maintainer elpaso's QEP 430 (Oct 11) would extend it to issues, comments, PRs and wikis.

A 1945 vintage physical map of the La Paz region of South America in warm hypsometric tints

QGIS, the flagship open-source desktop geographic information system under the OSGeo foundation, is running the strictest AI experiment in open source. On October 7 the project merged QEP 428, which forbids any LLM-, AI- or agent-assisted code from entering its main repository. Four days later, on October 11, maintainer elpaso opened QEP 430 to stretch that ban over every other kind of repository text — issues, comments, PR descriptions, wikis — with a motive stated in the first person: “human beings are now never sure if they are interacting with a machine or with another human being.”

Key points

  • QEP 428 (PR #387), proposed September 24 by core contributor Nyall Dawson and merged October 7 with votes from rouault, alexbruy, signedav and elpaso, replaces the project’s “human in the loop” policy. Getting caught now means “code reversion and contributor rights sanctioning.”
  • QEP 430 (PR #389, still open and being reworded) would prohibit LLM-generated text across all QGIS repositories and systems — PR and issue titles, descriptions, comments, wikis and pages. Its draft reads: “unlabeled LLM text is a misrepresentation.”
  • The record under the old policy: of roughly 50 PRs tagged “AI Assisted,” about 40 were closed unmerged (contributor uclaros’s count), and Dawson says the project has “already lost at least one extremely high value contributor” as a result.

Background

The policy QEP 428 replaced was QEP 408 v1, Even Rouault’s “human in the loop” rules modeled on LLVM’s AI Tool Use Policy: use whatever tools you like, but review every LLM output yourself and own the result. The QGIS discussion opened with the evidence that this had failed in practice. Uclaros asked why the extractive tag was never created and noted the score — about 50 PRs tagged AI Assisted, roughly 40 closed without merging. Dawson answered that the process “didn’t happen in reality,” so the fix is to “slam the door shut, and then choose later how far we want to inch it open.”

QGIS is not alone, only the furthest along. Zig moved to Codeberg earlier this month with a code of conduct that bans AI contributions outright (see Zig leaves GitHub), and Google paused part of its open-source bug bounty because invalid AI submissions drowned it (see Google freezes OSS bounty). Maintainer review time is the scarce resource, and projects are answering the same pressure at different points on the same curve. Wikimedia’s fight with crawling agents (see Wikimedia vs rogue agents) is the infrastructure-side twin of the same problem.

The facts

The two pull requests give a checkable timeline. QEP 428 landed as version 2.0 of QEP 408, and its operative text is two sentences: no LLM, AI or agent-assisted code contributions in the qgis/QGIS repository, and — on discovery — code reversion plus contributor-rights sanctions. Note the scope: one repository. Aggregator headlines saying the ban covers “all QGIS repositories” overstate it; extending to the whole organization is precisely the open question ptitjano raised in the QEP 430 discussion.

DateEvent
2026-09-24Dawson proposes QEP 428; uclaros and Rouault press the policy’s track record
2026-10-07Approved 4–0 and merged; QEP 408 v2.0 takes effect for qgis/QGIS
2026-10-11elpaso opens QEP 430 (PR #389) to extend the ban to all text
2026-10-12gdt, lbartoletti and ptitjano push on wording, definitions and scope

The QEP 430 draft (QEP 408 v3.0) covers “all repositories and systems within the QGIS project, construed broadly” — PR/issue titles, descriptions and comments, agent-created “bits,” and similar non-human-generated content — while exempting source code, which each repository’s own policy governs. Its heaviest sentence reframes the whole thing as a social contract: “QGIS is a collaboration among humans. Labeled LLM text is contrary to that social contract, and unlabeled LLM text is a misrepresentation.” As of October 13 the PR is open, four commits in, still being reworded.

What others say

The sharpest caveat comes from the previous policy’s own author. “Yes, we are aware we might throw the baby with the bathwater, but the baby might be non-viable,” Rouault wrote during the QEP 428 vote, calling the ban “a stop gap measure” and musing that “we might have to wait for the burst of the AI bubble to fully understand what a fair AI use might be.” signedav voted for it on the same understanding: a temporary pause, not doctrine.

On Hacker News the story reached 354 points and 390 comments by our October 13 fetch, and admin dang retitled it “QGIS enacts moratorium on AI contributions” after commenters argued that “QGIS bans AI assisted contributions is true but misleading” — while also noting the project left the word moratorium out of the policy document itself, “specifically to avoid controversy and flak.” Enforceability is the standing objection: the policy “do[es] very little to define what that means,” one commenter wrote, likening it to the GPL’s vague “derivative work.” The defense: “The policy is not a linter that will scan each PR. Just like the law does not monitor everyone 24/7… it’s enough that the rule is in place.” Others argued the Linux kernel’s model — LLMs allowed, humans fully responsible — ages better, and several added a technical footnote: geospatial code is where LLMs fail most confidently, which is one reason this particular project snapped first.

The QEP 430 thread is equally practical. gdt endorsed the intent but flagged “human safe” as confrontational wording and proposed the neutral “LLM-generated text,” which elpaso adopted. lbartoletti objected that “AI free” is undefinable — LanguageTool, Google Translate and DeepL are all AI tools: “We simply want to avoid ‘slop.’” elpaso is now considering a carve-out for AI used purely as translation between humans. Ptitjano’s question — why the code ban covers only the main repository and not the whole organization — remains unanswered.

Our take

For maintainers, QGIS has narrowed the menu to two rows: LLVM-style disclosure-plus-accountability, or door-shut prohibition. Which one fits depends on whether you trust your community’s review discipline under load — and QGIS, citing forty closed PRs and one lost high-value contributor, has said out loud that it doesn’t. For contributors, the meaning is just as concrete: the drive-by PR era at projects like this is over. If you want to ship a feature, become a known name in the issue tracker first.

Two honest catches. The rule is undetectable by design: as models improve, “how would we know?” gets harder to answer, so enforcement leans on after-the-fact discovery and deterrence, not tooling. And the definitions are mushy — spellcheckers, translation, IDE completion all sit on the line, and the fact that QEP 430 is on its fourth rewording shows the project hasn’t found the line either. Whether this policy “ages like milk,” as one HN commenter put it, depends on whether it holds until the exceptions are written calmly.

What to watch

  • QEP 430’s fate: whether the neutral “LLM-generated text” wording and a translation carve-out survive into the merged policy.
  • Scope: an answer to ptitjano’s organization-wide question would multiply the ban’s reach overnight.
  • First enforcement: the first reverted patch or sanctioned account will reveal the policy’s real tolerance far better than its text.