← Back to context

Comment by simonw

4 months ago

I wrote about this last month: "Not all AI-assisted programming is vibe coding" - https://simonwillison.net/2025/Mar/19/vibe-coding/

Vibe coding is when you don't review the code at all. If you're using LLMs to help you write code but you're actually reviewing what they produce (and iterating on it) that's not vibe coding any more.

This battle is almost certainly lost already, but dammit I'm gonna keep fighting anyway!

Salty version: https://bsky.app/profile/simonwillison.net/post/3ll2rtxeucs2...

> Feels like I'm losing the battle on this one, I keep seeing people use "vibe coding" to mean any time an LLM is used to write code

> I'm particularly frustrated because for a few glorious moments we had the chance at having ONE piece of AI-related terminology with a clear, widely accepted definition!

> But it turns out people couldn't be trusted to read all the way to the end of Andrej's tweet, so now we are back to yet another term where different people assume it means different things

I found out this anti-pattern where a newly coined term loses its definition as it spreads more widely is called "semantic diffusion": https://simonwillison.net/2025/Mar/23/semantic-diffusion/

I don't know if it's you and I (and some others) who are just uptight sticklers or something, but it bothers me a ton too. Same thing happening with "open source" in connection to LLMs, where suddenly some companies have decided to try to redefine the meaning, people lack the care to make the distinction.

In a dream world, each new terminology goes through an RFC to figure out a meaning we all (some of us) can agree to, so at least we can link to an angry RFC when people continue to misuse the term anyways.

  • Yeah that "open source" thing is SO frustrating. We have a very well established definition for what "open source" means: https://opensource.org/osd

    I have a suspicion that Facebook insist on calling their open weights models "open source" because the EU AI act says "This Regulation does not apply to AI systems released under free and open-source licences" but doesn't do a good job of defining what "open-source" means! Bottom of this page: https://artificialintelligenceact.eu/article/2/

    Correction: the closest it gets to defining open source is in https://artificialintelligenceact.eu/recital/102/

    > The licence should be considered to be free and open-source also when it allows users to run, copy, distribute, study, change and improve software and data, including models under the condition that the original provider of the model is credited, the identical or comparable terms of distribution are respected.

    (I found that by piping the entire EU AI act through Gemini 2.5 Flash - https://gist.github.com/simonw/f2e341a2e8ea9ca75c6426fa85bc2...)

    • In this wonderful future where we can leave responses longer than a tweet and have conversations longer than 30-second sound bytes, that people can understand, well at least get them understanding your point of view, even if they don't join the team. Having a succinct explanation for the sticklierness is still key though. For not letting Mark Zuckerberg co-opt the term Open Source, it's that it's not open source if I can't see why the LLM won't tell me how to make cocaine. Need to workshop that a lot so it fits on a t-shirt, but that is the gist of it.

I don't really think it's that people couldn't be bothered to read the tweet. It's that vibe coding is very good term but a niche activity. Meanwhile there's a much less niche activity that people would like a name for. I think if we want to save the term for the niche activity we'd need to invent a good one for the less niche activity.

We do need a simple term for "used AI to write code (semi)autonomously, but checked and/or tweaked the result and I care about the quality".

Vibe-but-verify? Faux-Vibe? AiPair? (... I'll see myself out...)

re: "semantic diffusion", sometime the opposite happens. Consider "meme" which was once very general and is now much more specific. "semantic speciation"?

It's as if the culture wants a certain level of specificity for a phrase and if you start too far from it, it'll ignore your wishes and drift to that level anyway.

Vibe coding is shifting to mean when they don’t review the code, vs the original meaning of when they don’t intend to review the code.

So the issue you're taking with 'thing is crap' is not 'thing is not crap', but 'you have redefined thing to be reviewed and held to standards and then called it crap'? And so, what, if we just accept it as it is, it's not crap? Or it is, but it everyone knows it (do they?) so it's not worth calling crap?

  • Well, let's be clear: the original definition was actually the one that Simon describes here, and there's no ambiguity around that fact since it came from one specific tweet where Andrej Karpathy laid out a definition for the term quite directly:

    "There's a new kind of coding I call "vibe coding", where you fully give in to the vibes, embrace exponentials, and forget that the code even exists. ... I "Accept All" always, I don't read the diffs anymore. When I get error messages I just copy paste them in with no comment, usually that fixes it. The code grows beyond my usual comprehension ... Sometimes the LLMs can't fix a bug so I just work around it or ask for random changes until it goes away. It's not too bad for throwaway weekend projects, but still quite amusing. ..."

    So yes, "not reading the code" is baked in quite specifically.