115 comments

[ 0.15 ms ] story [ 26.8 ms ] thread
banning AI from PRs because you're swamped with too many low quality PRs, definitely. We pretty much are doing this with SQLAlchemy. If I'm going to have a small fix or improvement coded by an LLM (which I do all the time), I want to prompt the LLM directly, rather than having someone trying to pad their resume forward my communications onto their LLM via PRs. What's the point of that?
Reasonable, although I've taken a different approach. Either closing such PRs, or treating them as very detailed issues and having my own LLM build the actual fix.

My repos probably don't see as much traffic as SQLAlchemy though.

rejecting low quality ones should be the norm regardless of whether an AI or a human wrote them. the question is what would happen if you were swamped with high quality PRs? what will happen once you are? (that's probably a 2027 question!)
I'd still reject them. It's the bug reports and feature requests that are valuable. When you have an AI yourself, there is little point in having somebody else let their AI implement them, that just creates a lot of risks and unknowns for no benefit.
yeah a lot of LLM PRs are pretty good, but still need changes, and still didnt come from my own prompting which would have got them more exactly where I want them, so it's again, I have to put messages on a PR and wait for someone somewhere to see them and act on them. That friction is a huge waste of time if they're just prompting their own robot. I have the same robot right here and I usually use opus 5.x which is usually better than what they're using.
I think it’s perfectly ok to just tell your robot how to get a pr to a state you like and merge it then. You should of course let folks know that this is the policy, but ultimately if it solves their problem the way you like it and you didn’t have to spend your tokens on it everybody wins…?
i use claude max and ive yet to get even 30% into my quota for it. so as long as that kind of deal lasts i dont think much about tokens.

if i did have to think about tokens I use something like together.ai with an open weight model like glm 5.3 (which ill sometimes use to review a claude change for something intricate). glm 5.x is just very chatty though

I don't see how this will survive the attacker/defender gap as ls get increasingly good at cyber security and finding 0 days... but maybe it's an obscure enough is it doesn't matter?
AI finds a lot of "vulnerabilities" but most are fake, untested, or not actually vulnerabilities.

Reminder that AI is quite stupid.

I think this is just plain denial, AI has found many high severity vulnerabilities.
There's plenty more false positives than actual finds. There are still actual finds, but that doesn't change all the false positives.
This is why you run a second agent to verify any assertions.
It'd be great if people did that. They don't. Open source projects with limited budgets shouldn't have to spend money from those limited budgets (or personal funds!) filtering through what amounts to spam. That's why there was a slew of open source projects that turned off issues on github and stopped taking outside contributions- they literally couldn't afford to keep up with the nonsense lazy bums were sending their way.
Using AI to find vulnerabilities doesn’t mean that you need to use AI to generate the code that fixes them. And you can still ask AI whether it thinks the fix is okay, as a second opinion.
So you took every single line of open source code you could possibly get your hands on (using scrapers so violently dumb that they amount to a permanent low-grade DDoS) and spent billions of dollars to tune trillions of parameters, and the value you can offer is… “let us inundate you with bad code or else we’ll generate exploits for your software”.
I had a PR in flight that got closed because of this. I had an issue with passwords in the network applet for the VPN and had used Claude to help me identify and then come up with a fix. I did spend a lot time handcrafting and making sure the quality was good, but I respect their decision and no hard feelings, but as someone who have struggled to find time and opportunity to contribute to open source it was a small set back.
What is actually the meaning of “handcrafting” here?
My guess: taking personal responsibility for the functionality, readability, and sanity of the change proposed, both atomically and in the context of the wider code base (adhering to existing conventions and patterns), to the best of the author’s ability.
"taking responsibility" doesn't actually mean anything, it's just empty words
Putting any specific string in an "author(s)" or "committer" field is likewise a token gesture that doesn't affect or alter the content. The impact, just like promises of responsibility, would still solely be in biasing the reader, clouding the evaluation.

Unless you believe there is substance in social interactions over time, like trust. But then it would be a socially weird move to dismiss promises of responsibility out of hand instead of picking up the invitation to build trust if that's what's perceived to be lacking.

What I meant by it was that I read every line of code generated, made sure I understood its purpose and either manually rewrote it if I felt there was a better way or asked Claude to do it. E.g. there was a bug where the password could end up in a configuration labelled as a username. Claude's initial fix was to simply exclude 'username' in a for loop, but I asked it to find examples in similar code in other codebases to see what the best practice was and ended up basing to fix on what is done in Gnome.
Can you show the PR?
https://github.com/pop-os/cosmic-applets/pull/1449

I am not saying it's the greatest PR in the history of PRs, but I think the quality is at least the same as it would have been if I had spent the time to do everything by hand (which may say more about my Rust abilities, but that's what I'm trying to improve as well).

I found your commit and your usage of AI seemed reasonable. It seems to me like your PR itself and the subsequent comments and correspondence was also human written.

I think a PR "in flight" shouldn't have been closed like that.

All this will do is push out developers like you that honestly disclose, and instead people will now just lie.

I also have found that AI has not lived up to many of its promises and have dialed back what AI gets control of. My projects were turning into unmaintainable messes. The people who say coding is solved aren't paying attention.
Yes. I started two projects with AI from scratch. Both abandoned, complete mess. Projects without AI are so easy to manage, maintain, add/remove features, etc. I use AI as a search engine on my projects instead of Google. I ask what's wrong with my code and change or improve it myself based on my experience.
I have the opposite experience. I don't have the patience sometimes to clean up my code and stick to coherent conventions and organization even though the will is there. With my AI projects I watch it and if the AI starts drifting I ask it to go through and look for convention/directory structure violations and it happily cleans everything up in about 10 or so minutes.

Are you in Python by chance? Python has a lot of crazy hidden/inexplicit/spooky action at a distance stuff (especially in the frameworks) that can make LLMs gunk up code by defensively programming or just burn context chasing data provenance

I've been a vibe-coding skeptic for years, but I decided to experiment with the latest models on some test projects. They're a lot more capable than I thought they would be. I agree that it's easy to create a mess, especially when you're one-shotting a lot of features without detailed instructions. But I find that as long as I'm strict about the API boundaries and force the agent to work in small chunks, it's pretty effective.
You could have also copied an SVG renderer that implements the whole spec from whatever open source project the model copied it from.
It didn't copy any source code from any external projects. I had it write a stratified sampling renderer for ground truth, then had it implement feature by feature by matching the pixels. Unless you mean it "copied" it in the sense of third-party code being part of the training data. I don't think that definition of "copy" makes any sense given how these models represent embeddings. It would also imply that humans are "copying" the things they've learned from.
I don’t think we should hold humans and models to the same standards. Humans have a very small working memory. Most humans cannot reproduce code they wrote even a year back exactly.

A model can reproduce large swaths of its training data exactly. It’s a different algorithm that powers its learning process (it’s why it needs trillions of tokens to even learn basics of language).

If there was a spectrum from copying on one end to creative production inspired from something else on the other end, the human generally lies heavily on the right end, while the model is much more on the left, that gap is large enough, that yes the model is in some sense “copying”.

Humans are are also capable of memorizing long texts and sequences of numbers. It's more a question of effort and scale than a fundamental difference. The point is that an LLM is not a database that stores text. Just because a model is capable of reproducing parts of its training set verbatim doesn't mean that's what it's doing when it solves a given problem. It's also capable of drawing on knowledge of algorithms and reasoning about the problem at hand.

Saying that AI is uncapable of doing anything but copying or stealing from humans seems to be a rhetorical technique used by people who are still unaware of or in denial about the capabilities of the frontier agentic models.

Empirically I just asked Astra without using the internet to exactly reproduce the first paragraph from Hamlet, Othello, Pride and Prejudice, Sartor Resartus by Thomas Carlyle), Sybil by Benjamin Disraeli (1845). GPT-6 got everything correct: https://chatgpt.com/share/6ac2a72c-e8bc-83e8-8f42-da8c7542de...

No human on earth can copy at this scale. Yes AI is beyond a database lookup, it does have reasoning on top of this knowledge, but my original claim that if there is a spectrum between copying with minimal changes and creative inspiration with minimal copying, AI is one the copying end while humans are on the creative end. Humans are very bad at reproducing anything verbatim, even if they wrote it like a week ago.

Obviously, the scale of retrieval from memory is different, I'm not disputing that. The question is what percent of its training data the model is capable of reproducing. "Large swaths" could still mean less than 1 in a million, for example.

I'm skeptical that there is a single spectrum like you're describing. It's not well defined.

It is also easier than ever to build specs and have nice easy to maintain projects. It just doesn't happen magically via few shot prompts :)
Have you considered that maybe this is a reflection of your skills rather than that of the LLM?
Meaning OP is a better programmer then a statistical model which produces the most probable results?
Meaning a bad workman blames his tools.
A bad workman blames his tools.

A good workman shuts up and finds better tools without complaining.

An expert workman knows which tools to avoid, and explains it to their peers why to avoid said tools.
An expert doesn't waste their time going on an ideological crusade against tooling. Even the most ardent anti-AI people are admitting it is useful for programming. Eventually you will have to do the same. The more you dig your feet in the worse it's going to be for you when that day comes.
Have you considered it isn't?

Save your "you're holding it wrong" if you're not going to suggest how to hold it.

Cult speak escape hatches are intellectually lazy.

I’ve had the best luck by spending quite a bit of time going over the big picture architecture up front and then diving into the modules to further refine the details, making sure to generate step-by-step chunks of work in Markdown format for implementation. I’ll spend literally a couple of days doing this before starting any coding.

What was your process?

Do you mind sharing any code from what you have produced? People talk about LLM successes and failures, but what's there to really talk about when the code can speak for itself?

In case it is unclear, I am genuinely curious. I have great success with chatbots, but vibing coding has never gotten me further than a proof-of-concept.

(comment deleted)
Sure, happy to provide you with an example of how to hold it (turns out Steve was right) =D

https://github.com/NousResearch/hermes-agent is 99% (just a guess) LLM generated. 1140 closed pull requests this week. 1.5k closed issues. The github insights page for commits doesn't load for me presumably because it can't handle this scale of commits. But I estimate ~1K commits per day on average.

There's a blog entry https://nousresearch.com/refactoring-hermes-with-1393-agents that details some work that was done by LLMs to refactor and improve the code.

I guess they know how to hold it?

You're using quantity metrics to answer a quality question.

I had a look at the kind of issues that are reported at that project (there's 15k of them, so I can at best assess a couple). It looks like a complete mess: A lot of TOCTOU, concurrency, and resource mismanagement issues and edge cases that in a better-managed project would have been avoided by construction. They will now will likely be solved by more defensive programming, driving overall complexity ever upwards.

I find it funny that the original complaint was: "AI made a mess of the codebase".

Your response was: "Well you're not doing it right, but these hermes devs know what they're doing".

But the blog post you linked to shows their prompt, which is:

> I want god files broken up. I want simplification across the board. I want unification of helpers and methods that can be reused. I want less if-if-if-if-if-if-else routing. I want code legibility up. I want interpretability of the codebase and how things connect to each other up.

So it sounds like AI made their code a mess too. They then tried to make the point of how much money they saved cleaning up the code with AI, that AI made a mess of to begin with.

And if you look at the merged PRs on that project, a ton of them are bug fixes... to the code the AI wrote. And that's been my personal experience too: AI creates a huge amount of churn in a codebase. Just vast amounts of PRs fixing code that the AI itself wrote.

I'm reading y'all comments and it seems we're still finding our footing, and will for some time. I have the luck that I have access to pretty much all frontier and other models alike. I've been extremely negatively biased towards any LLM use in the start. Then the influx from juniors came, then the revolt of doing PRs on such slop came, then some structured methods how to do LLM work came, then vibe projects came, etc, etc. I literally have all the described experiences you've guys mentioned. From good, to bad, to ugly. It's like there's no one particular way about doing this, and no two projects share the same approach - just like ye olde times.
I've had a different experience. My code is better. The ease of refactoring and practicing very defensive programming without getting burned out from the repetitive boilerplate. It all comes together better than it did when I was programming professionally too many moons ago. IFF I don't let the LLM toddler run amok. :-)

Seriously, I find I need to slow down the rate of change. I don't move forward until I understand the change proposed and have updated the docs. At the same time, I find that keeping up with the LLM/agent is exhausting. 3 hours with an LLM leaves me as tired as 6 hours with a keyboard had previously. I find that coding when tired or fuzzy yields code that shouldn't have been written in the first place. Sadly, once it's been written and debugged, the temporary fix becomes permanent.

I've adopted open source projects and have been working exclusively in languages I have very little experience with: typescript and go.

I'm using local models, and they go slow enough that I have no trouble following along with what they're doing; but visually, both go and typescript, along with react native, make me puke. So I wouldn't be able to do this without AI.

I describe how to do it in my comment history, but it's basically a Super-TDD along with some custom engineering harness.

I don't want to say skill issue, but the same way you can give a chain saw to a teenager and one to a skill craftsman, well, AI can obviously create whatever you want it to do.

I think some of the variety is simply how fast SOTA models pump out garbage that you simply have to close your eyes because it's not sensible to just watch characters flow across the screen.

Almost all the coding I'm doing via AI is just faster than readable. But I can see the thinking traces and I stop to model when it's obvious it doesn't understand my intent, etc.

So I'm not doubting you created garbage. I'm just doubting that it's a product of soley AI use.

The people saying programming is solved couldn't program in the first place is what I've noticed. So to them it really does feel solved, things "work" and they don't have to learn what they don't know about programming.
There are a couple of notable counterexamples here (nobody sane thinks Carmack doesn't know how to program, for example), but by and large I agree with your observation. The people excited about programming with LLMs are, on average, people who weren't good at programming to begin with. Still, given that these counterexamples do exist I try to avoid painting with an overly broad brush for the sake of nuance.
Were you reviewing the changes? I've seen lots of projects with this problem. But if AI PRs have to pass the same review bar as any other PR then it shouldn't be an issue in theory (if you can actually maintain the discipline).
Oh my god. I am sad to have to acknowledge this even if the models have “theoretically” gotten better. I am not a programmer but I am super opinionated with the design and structure of the code and need to make sure whatever I write/ask to generate and use for my own tasks is understood by me at least once. I wasn’t this way in 2023. I am constantly reading/trying for an agent to help me write simple code without spending too much time. But so far nothing has worked. I wish someone figures it out otherwise, I personally would not be able to realize the AI agent productivity benefits that others are supposedly seeing.
If you specify a structure, pattern, or design, it will stick to that design after a code review phase. Just tell it what standards you have, and after two rounds, it will have written what you described.
As usual, when people post comments like this they never specify what model and when they used it. There is a huge difference between GPT 3 and 6 for example.

Late 2025 also had a step change when agents could largely code autonomously without handholding like previously, and to be honest it's not worth hearing opinions about AI from before that time, that's how significant the change was.

I've had the opposite experience. Spec driven development really makes things much easier to maintain. If you're just yolo'ing it and throwing prompts around things will fall apart fast.
Were you reading through the code it was generating to make sure the flow was intuitive and comprehensible for each PR? Projects only turn in to maintainable messes if you blindly merge in unmaintainable messy code.
People, especially those who don't do software development, often conflate coding and software development.

The models aren't good at architecture and design. But they take direction on architecture and design and design well and can refactor code quite effectively. AI agents can absolutely be used to clean up vibe coded code bases once you figure out if the investment is worth it. The mess can be avoided if you give them sufficient guidance on architecture and design upfront.

That said, doing so purely in text form doesn't feel great right now. I've been thinking about UML lately. The problem with that was the roundtrip after the code was generated and then the implenetation happened. I don't necessarily think UML is the solution, but neither is walls of dense text.

AI is a useful tool but it absolutely needs a lot of human guidance.

Unlike a compiler it won't give up at the first sign of trouble but that just means it left alone it will dig bigger and bigger holes.

Treat prompt engineering as a discipline and refine your technique. When it produces garbage throw out the work and start over until you figure it out.

I am not saying you are right or wrong, but I don’t think you can make such a broad conclusion simply because of your own experience.

You say you used AI and your projects turned into unmaintainable messes, so your conclusion is that it means AI is not living up to its promises.

I guess if the argument is “AI makes it so you always get a great result no matter how you use it”, then your argument is sound. Your projects not working out proves that AI doesn’t always work no matter what.

However, that doesn’t mean you can’t use AI to create sustainable and well organized code. Failing to do something doesn’t mean it’s impossible and anyone who thinks they can is not paying attention.

I can’t run a marathon. If I went out and tried to run one, I would get a few miles and collapse, failing completely.

I don’t think it would be reasonable, though, at that point to say “running a marathon is impossible, anyone who says they can do it clearly lying. I tried and didn’t even make it 5 miles!”

I wish people would stop assuming their experience with something is the only possible truth.

Stop being overly polite to these people. It is seriously coming down to the point of utter delusion.

As ai becomes better these people will begin changing their story because it’s utterly obvious what’s happening.

Vibe coding has always had and always will have one fundamental flaw: you didn't write the code it produced, therefore you don't have a good understanding/mental model of it.

On the other hand asking these clankers "review the feature branch I wrote" and "review my entire codebase for bugs" or "help me debug this" has saved me months of prospective work.

And more recently most major models have been getting _really_ good at RE, for example you can have OAI models (and maybe A/'s if they don't refuse) use idalib MCP and reverse-engineer stuff from start to finish, then follow up with GLM 5.3 for vuln assessment and exploit PoC.

Stuff that used to take weeks or months now just takes a few hours, or less.

"Coding is solved" is a very high bar, and current-gen AI/LLM is very far from that.

Where AI did make a lot of impact is triage. I can throw a messy bug report of an intermittent issue at claude, and tell I need issue reproduced and fix developed, and there is a well above 50% chance it'll deliver. Never commit that fix to the codebase as-is, of course.

The other argument is that they are doing a better job with their prompting/code layouts/memory management.
Doing that will put you put of the market. I am certain of that.
There are a whole lot of people (in tech) who truly hate AI and want nothing to do with it. Those people will flock to projects who take a stand against it.
Thank god. Tired of these orgs blindly and stupidly allowing them (Debian, cough).
Same trouble we have. Some clever person says to use AI agents for code review. 100kloc commit got flagged through on Friday. Taking this week off. Not my circus.

Faith is the problem. Extraordinary claims must stand up to scrutiny. They do not.

A 100kloc PR is unacceptable regardless of the source. That needs to be broken down into reviewable chunks.
I still wanna see what Slop OS looks like. Go full AI spam making a Linux distro from the kernel up.
It might get millions in founding.
(comment deleted)
Completely performative.

You build your OS atop thousands of open source packages, many of which contain AI generated code. Are you going to audit them one by one and remove offending packages? What about the ones you won't remove because the OS would be irreparably broken?

This is a good idea, we should start a blacklist of open-source projects that are known to have used LLMs. There should be two universes of code, one for hand-typed code used by people who care about quality and one for slop used by those making trash.
There was plenty of bad code long before LLMs came around. Let’s be real.

Being hand written is no guarantee of high quality, just like using LLMs is no guarantee of low quality.

It also doesn't answer the question of how they might even recognize LLM generated code in contributions to PopOS directly.

I have yet to understand how maintainers can't distinguish beyond (1) PRs that literally include Claude co-author notes or (2) low quality code contribution regardless of the creator.

It's not. Read the article, they have a good reason for banning it and it's not because they hate LLMs.
I agree.

PopOS is Ubuntu with extra problems. Ubuntu itself is fine, but then PopOS adds weirdness.

Cosmic has been in beta for how long ?

Huh? Cosmic is out, there's some bugs still but its pretty nice.
I don't think it's performative.

They aren't saying that AI produces bad code or is terrible for the world in some way.

It's mainly just resulting in a lot of PRs that they don't have enough time to review or features they don't plan to add.

It sounds like what they are primarly aiming for is introducing backpressure in their own review pipelines.
Unless you have some examples this is a straw man argument.
I wonder if the issue is mostly the code or the AI written PRs and people using AI to talk to the maintainers. I personally just ban anyone doing the latter, I don't want to talk to opus more than I already do lol
Issue is entrenchment in the old SWE world that ceased to exist somewhere in August this year, and using AI to mechanize the traditional workflows. Also people with "I need to eyeball each char in PR diff" attitude, which is fucking unproductive at this point.
Some projects exist just for our enjoyment of coding, so yeah I read the code on those.
Well this project is dead then.

I have a hard time knowing if anti AI is a mental illness or propaganda coming out of China.

Unironically.

Separately, why would anyone use a Debian based desktop OS? Your $11 Amazon mouse won't work. An Nvidia card won't work. Just use Fedora.

As they should. If you can tell it's AI, it shouldnt be part of any codebase.
"... many of the AI contributions were not planned and showed little understanding of the software architecture. So the team wants to "prioritize working on contributions from our own team and regular contributors.""

Sounds reasonable, even to avid LLM users, I suppose. You have to draw a line. This line is too simplistic, but it'll work, for now.

This would just push people to maintain their own fork. If I already have an agent to investigate and fix a bug and able to send a PR, the added cost of maintaining a local fork is minimum.

In fact I've start doing that myself. Sending PR and convincing the maintainer why the fix is necessary is just too much effort.

(comment deleted)
Ok, this may be controversial, but LLM code tokens aren't free, and I run out of my weekly allowance pretty regularly just from doing some fairly heavy projects, so I don't understand why somebody would ever want to spend their own money to make bad PRs on purpose, and I like to assume good intentions from people unless proven otherwise, which means a near blanket ban for LLM authored code for these big open source projects just seemed a bit extreme to me, when the core issue seemed to be that review process/policy should change with the times.

For example, I was helping work on an open-source game engine earlier this year with a longstanding text rendering bug dating back to around 2021 that prevents the engine from being production ready, which the community and myself have developed extensive workaround for. So, one day I've finally said enough and got Claude to debug it. It took Claude 10 minutes to find the bug, it was 3 lines of code change in the renderer (yes, three).

So, I wrote up the regression tests, documented the bug and opened up a PR for the fix, thinking it'll get merged in like less than a week and then we can all move on. The maintainers received it fairly well on the PR, but the PR sat there for nearly 6 months, unmerged, until it finally closed from a bad squash upstream. I'm pretty sure the bug is still there too.

And as a side note, I would be ecstatic if someone wants to contribute to my Github projects with their AI.

Feels like AI on autopilot running OSS projects is the dream everyone is trying to get to. Tokens will never be free. Anthropic needs to go IPO. You make an interesting point about personal spend, but bad PRs are unlikely to be on purpose. But the discipline to review/clean up the slop might not be there?
True. I personally use LLMs much more ambitiously to help with my own coding projects, but I've always been very disciplined about planning ahead and task breakdown so that the LLMs can get it right the first time so there won't be any need to fix the code afterwards.

Other people's open-sourced project is different though, so I tend to check/test the code myself much more rigorously when contributing to other people's repos than if it is my own projects.

there is an ongoing thread here on a similar topic from an AWS expert -- https://www.linkedin.com/feed/update/urn:li:activity:7510679...

"Apparently, AI doesn't lead to positive results in all software development teams. Customers are asking me whether they should slow down the adoption of AI in their teams.

How do you respond to that? Yes? No? "

Feels like part of it is a learning habit, getting proficient in use of the tools (AI agents) themselves, and better workflow around it, but it remains AI is not perfect yet?

I had a PR closed because of this, one that fixes something that, had it not been fixed (by Claude, based on me noticing and clarifying the failure mode and verifying the fix), would have led me to abandon at least COSMIC, if not the distro. But this has me wondering how COSMIC, which had reached 1.x before I started using it, can mature, and whether I'll remain. I started on Pop!_OS with its COSMIC-less 22.04 version; I chose it as a fairly popular distro having Ubuntu stability while offering a leading-edge kernel. Point being, COSMIC was never the draw for me, and I held off upgrading to 24.04 for a LONG time out of concerns about bugs & stability; eventually 22.04 started experiencing ibus-related problems that forced my hand. Since I am (a) not knowledgeable in Rust, nor (b) conversant in the protocol at the core of this bug, I would never have had the gumption or time to understand and fix the bug. And since the PR is closed, it seems unlikely to even serve as a bug report.

In the meantime, others have experienced this bug and are waiting for the maintainers to notice and fix it. I'll just continue to run my fork (so far it has been no burden at all) while I (slowly) decide what direction to take.

Maybe you could report it as a normal bug report, by hand?
Very quickly they'll find themselves with most packages frozen to old versions, including the kernel itself.

Shipping them full of bugs which LLMs already fixed upstream.

Fortunately, as it is an open source project, if anyone actually cares about the distribution, they'll fork it and continue advancing it using modern tools.

Good! Anything that isn't a not very important crud web app should not allow AI generated code anywhere near it!