GHC Wiki has a sane policy on AI use: AI · Wiki · Glasgow Haskell Compiler / GHC · GitLab
There are 2 key points for me:
-
Contributors should only put forth contributions that they could have created without the support of AI tooling.
-
When large parts of a piece of code have been primarily AI generated it’s highly encouraged to explicitly label it as such in the source code.
In my projects and contributions I strive to uphold both.
That will cost me tempo and reputation. I will have less of my goals achieved and still be subject to potential penalties and drama.
Despite the mounting pressure,
- I refuse to join the “zero tolerance” / “no AI” camp.
- I will not contribute AI code that doesn’t match my capabilities and taste.
- I will not “go dark” and remove attribution marks from my commits or otherwise.
- I will label my repos according to the amount of “unsupervised AI effort” that went into them.
There is a range of effort from “I love artisanally crafting Haskell AST by pressing keys on my mechanical keyboard” to “I’m here only for the end result, if AI is able to do it, let it”. Both ends are luxury positions.
I like writing Haskell by hand, with all the formatting and type-setting. Unfortunately I don’t have enough spare time for this.
Without going into further details, my use of AI is not unlike “medical assistive devices”. When someone objects to AI use, this feels like someone objects to use of cochlear implants. Which is an attack on autonomy. “Studies show…” ends up with, or implies, “…therefore we don’t trust anyone (and, by extension, you) with using this tech”. Any policy that’s using such framework is bad and its authors should feel bad.
Since the advent of recent, more capable models, I have been unblocked on quite a few projects because AIs went in and found the issues (for a pretty penny). I’d say I’ve been unblocked too much and now have many projects stuck in “make it right” limbo.
I don’t contribute code I don’t “own” even if it seems working, passing tests, gets good grades from other AIs. I’m still the bottleneck.
Reviewing AI changes is way less pleasant than figuring it all out by yourself. Most of the time I don’t have this luxury and there’s no one else to delegate. But I still want my goals to be achieved, so I pinch my nose at all the code smells and let Claude Code do its thing in the background, only course-correcting it with a remote supervision.
Between not achieving my goals at all and achieving them by mopping up after AI, I choose the later. And this is not the choice I will tolerate to be forced on me.
In return, I commit to honesty and openness.
And then there are projects that are private, too inconsequential, or just to see LLMs squirm. I will tag them vibecoded to prevent anyone from getting silly ideas from those codebases. And that “anyone” includes AIs or their training sets. Label, label your projects and commits to give them a chance at avoiding getting high on their own supply.
I have a certain feeling of doom that Haskell’s “language immortality” status may be revoked as the senior and experienced maintainers switch to the greener, rustier pastures. A properly trained AIs of the near future can then lend us a chance of surviving the community crunch by carrying some of the maintenance burden. Publish, publish your projects, and let the AIs train on them.