A good argument why YAGNI is still relevant even when LLMs can write code "for free": https://newsletter.kentbeck.com/p/the-cost-yagni-was-never-about
Yup undermining yagni (both for tech and product features) is a real risk. Especially when things like LoC have been brought back from the dead as a metric (and more features shipped).
Question for the folks who've said they won't look at a project that uses LLMs to some (unspecified) degree -- (like @christian767 and a few others): Is code completion a "taint" that should be labeled, that would make you concerned about using a project?
I ask because we've had code completion in IDEs for a long time and it's generally gotten smarter and smarter, and it isn't clear -- in IDEs that leverage AI -- whether the code completion is AI-powered or not.
VS Code's Git extension has a setting to add Co-authored by <AI> if changes are committed that include AI-generated code. By default, I believe it is off, but you can set it to chatAndAgent which are obvious AI-generated code sources, or all which will apparently add the co-author for code-completion and other paths, if AI was involved.
Like most things in life, this is not black and white; it's a gradient. I think that auto-completion, even to the degree of helping to fill in functions for someone, is not necessarily going to prevent me from using a project.
However, if the entire project is vibe-coded, I have absolutely no interest in it. The tricky part lies in figuring out where to draw that line, which I think most people are doing based on intuition and general "sniff test". For example, when I see a new Clojure ialect on <some host lang/runtime> show up over the weekend, and I take a look at the repo, I generally see:
โข Only a few days worth of commits (yet many thousands of lines of code)
โข CLAUDE.md in the repo
โข Clearly AI-generated readme
โข AI "plans" for each feature
At that point, it doesn't matter if the compiler is super fast, has some impressive IR optimizations, has superb interop with its host, etc. I'll just close the tab. There's no ownership. There's no brand. There's no sense of commitment. There's no product. There's just a bunch of generated code.
I imagine that the threshold for many of us is going to be slowly moving, to allow for more and more generated code. For some people, as we see in other channels, that threshold is already on the extreme end of "code doesn't matter. language doesn't matter." But I think a lot of other folks are moving more conservatively.
For me, anyway, if it's a trusted developer, with commitment to a project, who conveys that they're using LLM-driven auto-completion in their IDE, it's not going to stop me from considering the software. But it's still a red flag for me, since it's near where my threshold currently is.
Separately, in terms of licensing, LLM-driven auto-completion is just as infringing as automated agents writing code. I doubt this argument will ever amount to anything, though. Unless the US gets some supreme court ruling which sets a precedent against LLM-generated code, which I don't think will happen.
Thanks, @jeaye -- that's one of the more thoughtful responses I've seen on AI usage questions.
I've just (today) changed the VS Code Git setting to all to see how many of my "human-authored" commits end up with a Copilot co-author due to code completion, because I'm curious. I use a Copilot license that is configured to block suggesting any public code (from its training data) because I primarily use it at work. Yes, I also use it in my OSS projects because I don't want to have to maintain two different VS Code setups on my main machine -- and I know the public blocking works because I was trying to get Copilot to help me write some docs for next.jdbc to add more examples, and it generated the docs and then refused to insert them because they closely matched existing documentation and examples in that OSS project on GitHub which was pretty funny.
Even when I have Copilot wholesale generate code and docs for a feature, I review every line of it before I commit it. When I've received a Claude-co-authored PR, I've reviewed every line of it before merging it.
As for licensing, as I mentioned in another thread, you cannot copyright AI-generated code. Which means you cannot license it with any copyright-based license. That's why I've used the Unlicense on the only vibe-coded repo I've published (and that is very clearly labeled as a vibe-coded, throwaway script).
there might still be other ethical issues w/using a LLM for the kind of code completion one might get from emacs/lsp/other (environmental, copyright/license issues)
as far as completion goes: as long as someone still has some kind of theory of the system in their head I'm OK with that. LLMs just really lower the bar for things that look like they might have a coherent system but don't (you used to be able to depend on them just not working, whereas now things might work a bit up front but be unmaintainable)
(and they continue to improve so even maintainability isn't as bad as it was, say, six months ago)
Follow up on my https://clojurians.slack.com/archives/C0B7Q4XRM1U/p1780941209339459 about how AI has created a problem of trust and a struggle to assess if a project is serious and of high quality. I've been thinking how else can you convey to your users what was once implicit in the proof of work (the source code being offered), which now isn't. For now, the best I can think of is simply offering details around your process, and I was thinking a standard form of some kind could be iterated upon which could capture what would matter. First you could disclose the level of AI assistance you have used, say something like:
How did you use (or not) AI in this project?
Level 0: No AI at all.
Level 1: No AI written source code, but I used AI to review, lint, generate docs, or help bounce ideas/research.
Level 2: Small amount of AI written source code, mostly restricted to bodies of functions or tests, or in-editor auto-completion.
Level 3: Medium amount of AI written source code, some small features or bug/security patches were fully written by AI, where as major features and critical code paths, were all human coded.
Level 4: Large amount of AI written source code, almost all features, bug/security patches, and code enhancements are written by AI. I fully reviewed every line of it and tested that it works and behave as I'd want it too.
Level 5: Large amount of AI written source code, almost all features, bug/security patches, and code enhancements are written by AI. When reviewing, I only skim overall code structure and critical sections, and test the key behaviors.
Level 6: Large amount of AI written source code, almost all features, bug/security patches, and code enhancements are written by AI. I do not look at the code, treat it as a black box, and only briefly tested the overall functionality at the boundaries.
Other: Tell us: ___________________________________________________________________________
Then you could specify the amount of rigor that you put into the work, even if it was all AI generated:
Which of the following rigor did you apply to this project (select all)?
- I conceived of all the public APIs and their semantics myself
- I remained fully in charge of the overall design and architecture
- I remained in control of the overall code structure
- I personally came up with the critical test scenarios that I think matters to be tested for (AI added even more)
- I am actively using this library/project myself in my other projects
- I always manually created the namespaces and public functions/macros signature, and only had AI implement their bodies (where it is allowed to create impl/private functions)
- For every feature/bug/enhancement, I hammock the best way to design and implement the feature over multiple days, working through a design and implementation guide
- I know the code thoroughly, and could pick up a task to implement manually without needing to ramp up, because no part of the code is unknown to me
- I have expertise in the domain, and could implement all this without AI and without needing to learn or research anything new
- I lack expertise in the domain, but feel confident I could have implemented this code with a bit of research, learning and experimentation.
- I am able to follow the implementation, and understand what it does, how it works, and can debug it or assess its quality.
Discuss in ๐งต and provide suggestions/modifications.I think there's a difference between using AI to lint/review code, and using it to generate documentation, and these shouldn't be grouped in the same tier.