More from The Elysian
With all the technology in the world, sometimes the more beautiful thing is less of it.
A bunch of business updates and a request for your feedback.
What tomorrow's city builders are learning about equity, loyalty, and community.
We need better internet platforms. We're already building them.
More in literature
The title poem in Anthony Hecht’s 1979 collection The Venetian Vespers is a dramatic monologue spoken by an aging American expatriate living in Venice. Across its roughly eight-hundred lines the speaker gives the impression of fleeing something left unstated – not a scandal or crime but his unsatisfactory self. In the sixth and final section he writes: “Ho fatto un fiasco, which is to say, / I’ve made a sort of bottle of my life, / A frangible and transparent failure.” The Italian can be translated: “I made a complete mess of it.” This indulgence in self-disgust continues: “My efforts at their best are negatives: A poor attempt not to hurt anyone, A goal which, in the very nature of things, Is ludicrous because impossible. Viscid, contaminate, dynastic wastes Flood through the dark canals, the underpasses, Ducts and arterial sluices of my body . . .” Here, Hecht makes an inspired transition: “. . . As through those gutters of which Swift once wrote: ‘Sweepings from Butcher Stalls, Dung, Guts, and Blood, Drown’d Puppies, stinking Sprats, all drench’d in Mud, Dead Cats and Turnip-Tops come tumbling down the Flood.’” Those are the concluding lines of “A Description of a City Shower,” a pastoral parody and my favorite among all of Swift’s poems, first published in The Tatler in October 1710. Pat Rogers in his edition of The Complete Poems (Yale University Press, 1983) tells us it was also Swift’s favorite. The final three rhyming lines are inspired. An early edition of the poem was subtitled an “imitation of Virgil’s Georg[ics].” Nearly as good as the passage quoted by Hecht are the lines leading up to them: “Now from all parts the swelling kennels flow, And bear their trophies with them as they go: Filth of all hues and odors seem to tell What street they sailed from, by their sight and smell. They, as each torrent drives with rapid force, From Smithfield or St. Pulchre’s shape their course, And in huge confluence joined at Snow Hill ridge, Fall from the conduit prone to Holborn Bridge.”
The AI Pascal’s Wager Should you accept contributions generated by LLMs in your Open Source project? Let’s put aside for a moment all the ethical/ecological/societal considerations about the use of generated code (also known as "slop" if you don’t like it and "vibecode" if you do) in open source projects and consider it from a simple, practical, pragmatic point of view. There are basically three potential positions: 1. Mostly accepting LLMs as neutral tools that contributors could use (with safeguards or not, with policy of human reviewing or not). The middle ground (position 2) may seem like the most rational position to take. It is also the default. Let’s wait and not decide too quickly! But what we can learn from Debian is that nobody is really happy with it. If we think about it from a longer-term perspective, we can infer that the middle-ground position is unsustainable. LLM generated contributions will eventually slip in despite some guardrails such as "human review is mandatory". The longer a project stays in the "middle ground", the more ineluctable the slop infection becomes. Which is to say: not choosing or trying to choose a middle ground is basically full support of generated code, but slower. It is effectively choosing position 1 (pro-AI) without being explicit about it. It is either naive or hypocritical. Instead of letting the world choose for you, I believe that each open source project is now facing a strong choice that has to be made urgently. Accept AI-generated contributions or not. This is not easy. Both choices will alienate some part of the community and some key contributors. That’s sad, but a project cannot please everyone. Now, contributors may argue whether pro-vibecode or anti-slop is better from a philosophical, ethical or pragmatic point of view. Nobody can decide what is best for a project but its key community members. Let’s try to think from a generic strategical point of view. What will be the effects of both positions on the project? Adopting AI PROS: More contributions and less time spent developing annoying stuff. While every study on the subject tends to conclude that using LLMs is actually slower than writing code yourself, let’s admit that advantage. CONS: Alienate a part of the community that rejects vibecoded software. In some FLOSS circles, that may include very influential users. Developing your project become increasingly dependent of on expensive and completely proprietary software over which you have no control. So, in the short term, adopting AI mostly alienates some community members and abandons your independence in order to improve some (perceived) productivity. Rejecting AI PROS: Strong support from the “ethical” part of the community (see the growing number of anti-AI software lists) Nothing changes. CONS: Alienate some contributors who really want to use AI. When you think about it, contributors who are completely turned away by the fact that they can’t use LLMs are probably contributors you don’t want in your project, even if you have a Debian-like “moderate use of AI” position. People who don’t want to contribute without LLMs are probably not able to review and understand the code by themselves (or they will lose that ability soon enough). To illustrate this, see the number of Pull Requests on Github were the author admits "not having the knowledge to test their own code". So refusing contributions from those people is probably more of an advantage than a disadvantage. More importantly, rejecting AI will not alienate any users. Nobody in the world is saying "I’m refusing to use this software because it was made by humans". The longer-term perspective One of the main problems with using generated code is that we still don’t know what impact it could have in the long term. What will the codebase look like when each contribution is less and less understood by humans? What if AI assistants become suddenly too expensive to use and nobody understand the architecture anymore? What if huge portions of your code are, in fact, copy-pasted from another project using a different incompatible license? Cory Doctorow compares slop to asbestos: it looks nice, shiny and it is easy to put it everywhere. But if you ever need to regain control or remove the slop, it will take years of work, at best. Your own version of Pascal’s wager While mass marketing is trying to instil a Fear of Missing Out hysteria, the most rational and pragmatic approach is to strongly reject all AI-generated contributions to your projects. For now. Someday, we might realise that LLMs are doing good in the world, that they are evolving toward ethical, reliable, sustainable solutions, and that people who use them are happier (try to read that sentence again without rolling your eyes). If that really happens, you could always change your AI policy. It will cost you nothing. But if you let the slop in now, you may regret it forever… You may be forced to abandon your project. On the other hand, if you refuse AI-generated contributions to your project right now, the worst very hypothetical regret you could ever have is "I should probably have done it sooner". The conclusion is simple: If you are AI-agnostic, the pragmatic course of action is to strongly refuse any AI-generated contribution to your project. Picture of a Pascaline by Rama About the author I’m Ploum, a writer and an engineer. I like to explore how technology impacts society. You can subscribe by email or by rss. I value privacy and never share your adress. I write science-fiction novels in French. For Bikepunk, my new post-apocalyptic-cyclist book, my publisher is looking for contacts in other countries to distribute it in languages other than French. If you can help, contact me!
If something feels wrong, it is useful to articulate very precisely why that is
Ridgeline subscribers — For the last ten days I’ve been walking around London. Mostly in a little corner of it in the northeast part of the city. But can you even call a part a “corner” when the city extends in every direction without stopping? Whatever you call it, I’ve been in my little northeast section (if not corner) spending mornings reading and writing until I’m cross-eyed and then afternoons walking the streets over and over again.