Войти Публичная лента

Open Source as We Know It Is Dead

ссылка · 07.10.2026 · neonxp

Открыть оригинал ↗

Я создал аккаунт на GitHub 17 июня 2011 года. Примерно через две минуты после этого я открыл первый issue: телепортация не работала в TShock, модификации для серверов Terraria, и я хотел понять почему. Не так рано, как некоторые, но достаточно рано, чтобы помнить, как слияние моего PR кем-то совершенно незнакомым казалось маленьким чудом. (С тех пор я был одержим игровыми серверами — теперь это буквально моя работа.)

GitHub не был началом. До этого были проверки SVN, которые ломались, если на них просто посмотреть неправильно, и возня с DarkRP на серверах Garry's Mod, или написание плагинов на SourcePawn для старого Counter-Strike: Source, или серверов Zombie Master. GitHub просто создал ощущение, что все наконец-то оказались в одной комнате.

Открытый исходный код был частью моей жизни почти столько же, сколько я пишу программное обеспечение. Я самоучка, поэтому не будет преувеличением сказать, что без него у меня не было бы карьеры. Большинство того, что я знаю, я узнал, читая чужой код, или открывая issue, который, вероятно, был немного глупым, и получая от мейнтейнера терпеливое объяснение, почему так.

Это нелегко писать, и заголовок немного гиперболизирован. Но честно говоря, именно так я начал чувствовать себя: открытый исходный код, каким я его знал, умирает. И я, к сожалению, думаю, что ИИ — это то, что его убивает.

Это никогда не был только код

Когда люди говорят об открытом исходном коде, они обычно говорят о коде. Лицензии, пакеты, количество загрузок, звезды. Но именно это никогда не заставляло меня возвращаться.

Это были люди. Это было исправление опечатки в README и получение от кого-то благодарности. Это был незнакомец с другой стороны света, нашедший ошибку в моем коде и отправивший исправление еще до того, как я проснулся. Это были споры (вежливые, в основном) в теме issue о правильном API, и в итоге — нечто лучшее, чем то, что мог бы создать каждый из нас в одиночку.

Мои первые настоящие PR на GitHub были в июне 2014 года, ровно через три года после создания аккаунта. Мы использовали PointDNS, и их маленький клиент на Node.js падал с SyntaxError: Unexpected end of input whenever you listed records on a big zone. It wasn't handling chunked responses, so I fixed it. Через два часа, чувствуя себя смелым, я открыл второй PR: «глобальную уборку», которая затронула почти каждую строку в файле. В описании я написал, с той уверенностью человека, который никогда ничего не поддерживал:

We're huge fans of your service, but this node.js module was rather counter-intuitive to use. Hopefully this pull request will help solve that issue for any future developers!

Мейнтейнер слил оба в следующее утро — ни туда-сюда, ни чек-листов, ни ботов. Незнакомец отправил ему 300 строк нежелательных изменений, и он рискнул. Я не могу полностью объяснить, что это дало мне, кроме того, что это заставило меня почувствовать себя своим.

PR — это не просто diff, это чей-то сигнал: «Я использовал ваш проект, мне не всё равно, я сделал его лучше и доверяю вам свою работу». Ревью — это ваш ответ: «Я вижу вас, давайте сделаем это вместе». Именно этот обмен, повторяющийся миллионы раз, и построил Интернет, которым мы все пользуемся каждый день.

Взглянув на тот второй PR, я честно говоря, немного смущаюсь. Несolicited-переписывание от никому не известного человека с немного самоуверенным описанием? Мигель Гринберг, сопровождающий Flask-SocketIO, выразился довольно резко в этом году: «Сегодня несolicited PR — это красный флаг». Если бы мой PR попал в репозиторий сегодня, я бы предположил, что его написал агент, и никто бы не стал винить закрывших его.

Андреас Клинг сказал это лучше всего, когда Ladybird перестал принимать публичные PR: «Значительный патч раньше подразумевал значительные усилия, и эти усилия были разумным индикатором добрых намерений. Это предположение больше не работает». Мой PR написал реальный человек, нервничая и надеясь, что он достаточно хорош. Усилие было сигналом. Вот чего нам не хватает.

Это больше не приносит удовольствия

За последний год что-то изменилось, и это трудно выразить словами.

Откройте PR в популярном репозитории сегодня и посмотрите, что произойдёт. В течение нескольких секунд бот оставит AI-ревью, суммирующее ваши собственные изменения. Другой бот опубликует превью-развёртывание. Третий добавит «проход» с диаграммой последовательности, которую никто не просил. Иногда четвёртый появляется, чтобы ответить на третий. К тому времени, когда человек наконец посмотрит на это, ветка превратится в стену сгенерированного текста, а настоящий разговор (человеческая часть) окажется где-то посередине.

Это идеальный сценарий, когда пулл-реквест (PR) написал человек. Плохой вариант — когда его никто не писал по-настоящему: например, PR, которые «исправляют» несуществующие проблемы, или PR, которые переписывают половину файла уверенным, правдоподобным, но совершенно неверным кодом, или отчёты об уязвимостях, которые выглядят как настоящие, пока ты не понимаешь, что сама уязвимость была сгенерирована галлюцинацией. И, судя по всему, существуют аккаунты, которые создают десятки таких PR в день в сотнях репозиториев, просто чтобы набрать зелёные квадратики в резюме.

Я начал отключать уведомления от репозиториев, которые раньше любил отслеживать, потому что теперь там в основном только шум, и это печалит меня больше, чем я ожидал.

Даже тот самый первый PR для PointDNS, который тихо лежал больше десятилетия, в прошлом ноябре получил цепочку мусорных комментариев от аккаунта, которого я раньше не видел. A #, a ###, сломанная загрузка скриншота. Честно говоря, я не знаю, был ли это бот или человек. В этом и есть суть.

Я совсем не виню мейнтейнеров

PR-запросы с AI-мусором — это худший вид работы. Они выглядят как вклад в проект, поэтому у тебя возникает чувство обязанности прочитать их. На их проверку уходит реальное время, а затем ещё больше времени, чтобы объяснить, почему они неверны, кому-то (или чему-то), кто не слушает. Это время, которое не было потрачено на сам проект, или на семью, или на сон.

И двери закрываются. Быстро.

Не везде и не во всех одинаковых масштабах, но направление движения невозможно не заметить. curl прекратил программу вознаграждений за баги в области безопасности после того как соотношение полезного контента к шуму упало. Даниэль Штенберг написал, что доля реальных отчётов упала ниже 5%: «Даже один из двадцати не был настоящим».

tldraw начал автоматически закрывать внешние PR. Ghostty ужесточил свою политику в отношении ИИ, Митчелл Хашимото написал, что низкокачественные вклады от ИИ увеличили количество «плохих» вкладов «в 10 раз и более». Jazzband, дом для десятков проектов на Python, полностью закрылся, обвиняя GitHub в «затоплении» сгенерированными PR и проблемами.

OpenJDK запретил вклады, сгенерированные LLM, назвав бремя проверки первым риском. Ladybird перестал принимать публичные pull-запросы. Godot теперь требует, чтобы код был написан человеком , и запрещает автономные агенты. COSMIC требует от участников подтвердить, что их PR не содержит кода, сгенерированного LLM, комментариев или описаний. Участники Codeberg проголосовали за запрет в основном проектов, созданных ИИ , на платформе.

Затем 1 октября Синдре Сорхус отключил внешние pull-запросы во всех своих репозиториях:

Из-за ИИ я отключил внешние pull-запросы во всех своих репозиториях. Открытое ПО, каким мы его знали, было увлекательным, пока длилось. (Для меня это было 15 лет)

Если вы писали на JavaScript в последнее десятилетие, вы почти наверняка сталкивались с его кодом.

Детали различаются, но картина одна: мейнтейнеры больше не просто решают, является ли вклад хорошим, они решают, могут ли они позволить себе выяснить это. Я не думаю, что они неправы, и это самая сложная часть. Каждый мейнтейнер, закрывающий дверь, вероятно, делает рациональный выбор для своего проекта, своего времени и своего рассудка. Но когда достаточно людей делают этот же рациональный выбор, открытое ПО начинает превращаться во что-то другое.

А затем на этой неделе, Юсукэ Вада отключил PR от внешних участников в Hono. Это ударило сильно. Hono — один из моих любимых проектов, и я много раз называл его золотым стандартом для разработки Workers.

Грустные новости. Мы отключили PR от внешних участников в honojs/hono ... Hono не стоял здесь без PR. Я никогда не забуду PR, созданный @usualoma для RegExpRouter. Невероятно быстрый HTTP-роутер, который мы никогда не видели! Но PR не работают в эту эпоху. Внесите вклад другими способами. Спасибо

Эта цитата ранит, потому что она содержит всё противоречие. Hono был сформирован PR от аутсайдера, и этот аутсайдер всё ещё вносит в него вклад четыре года спустя. Теперь Hono должен закрыть дверь, через которую они вошли. Я не читаю это как лицемерие, я читаю это как горе.

Даже платформы говорят об этом вслух. В феврале GitHub опубликовал "Добро пожаловать в Вечный сентябрь открытого ПО", что выразил это лучше, чем я: "Стоимость создания снизилась, но стоимость обзора нет." На следующий день они выкатили настройку для полного отключения pull-запросов. С тех пор они добавили лимиты на открытые PR на пользователя (ИИ-агенты учитываются в этом лимите), способ ограничить, кто может создавать issues, и способ архивировать спамные PR чтобы их не видел никто другой. Платформа, сделавшая этот pull request знаменитым, провела весь год, разрабатывая способы отключить эту функцию.

Некоторые проекты не собираются ждать, пока GitHub всё исправит. В прошлом году Zig переехал на Codeberg и всё больше людей разворачивают собственные инстансы Forgejo или Gitea. Я их понимаю, ведь надёжность GitHub в последнее время оставляет желать лучшего. Но каждый уходящий проект уносит с собой свои проблемы, историю и людей в новое место, где нужно заводить ещё одну учётную запись и искать новые пути взаимодействия. Это ещё больше фрагментирует экосистему и делает маловероятным появление новых участников.

Я тоже часть этой проблемы

Я использую ИИ каждый день, и это заставляет меня чувствовать себя немного неловко во время написания этого поста. Я пишу с ним код, проверяю код с его помощью и даже использовал его помощь для структурирования разрозненных заметок, ставших основой этой статьи. Это удивительный инструмент, который сделал меня быстрее и в хорошие дни — лучше в моей работе. Я не призываю никого отказываться от его использования.

Но я думаю, что многие из нас (включая меня) считали его стоимость нулевой. Это не так — просто издержки сместились. Когда создание pull request занимает десять секунд, а его качественная проверка — тридцать минут, вы просто перекладываете работу с того, кто хочет что-то получить, на того, кто должен отказать. А тот, кто отказывает, почти всегда волонтёр, чьи ресурсы и так на пределе.

ИИ сделал вклад в проекты дешёвым. Он не сделал поддержку проектов дешевле — скорее, наоборот, сделал её значительно дороже.

Я не знаю, какое решение

Мне хотелось бы дать чёткий ответ, но его нет.

Запрет pull request, созданных ИИ, кажется многим проектам правильным решением, и я поддержу любого мейнтейнера, который его введёт, — но это грубый инструмент. Он попадает и под того, кто использовал ИИ для написания одного хорошего теста, и под того, кто направил агента на тысячу репозиториев. Он полагается на честность или на детекцию, которая не работает в полной мере, и подталкивает нас к миру, где репозитории закрыты по умолчанию, где нужно получить рекомендацию, прежде чем вам разрешат помочь, и где ответ незнакомцу по умолчанию — отказ.

Возможно, это просто наше будущее — меньшие, доверительные круги, с открытым исходным кодом, но с возможностью вклада только по приглашению. Возможно, это даже нормально, и я просто ностальгирую по версии Интернета, которая всё равно не могла длиться вечно.

Но версия меня из начала 2010-х, нервно отправляющая незнакомцу 300 строк с просьбой «навести порядок», не прошла бы через эту дверь. Я думаю, мы теряем что-то важное, когда такие люди больше не могут войти.

Я не знаю, какое решение. Я просто знаю, что мне не хватает того ощущения, которое было раньше.

I made my GitHub account on June 17, 2011. About two minutes later, I opened my first issue: teleporting was broken in TShock, a Terraria server mod, and I wanted to know why. Not as early as some, but early enough to remember when getting a PR merged by a complete stranger felt like a small miracle. (I've been obsessed with game servers ever since - it's literally my job now.)

GitHub wasn't really the start, either. Before that, it was SVN checkouts that broke if you looked at them wrong, and tinkering with DarkRP on Garry's Mod servers, or writing SourcePawn plugins for old Counter-Strike: Source, or Zombie Master servers. GitHub just made it feel like everyone was finally in the same room.

Open source has been a part of my life for almost as long as I've been writing software. I'm self-taught, so it's not an exaggeration to say I wouldn't have a career without it. Most of what I know, I learned by reading someone else's code, or opening an issue that was probably a bit dumb, and having a maintainer patiently explain why.

This isn't easy to write and the title is a bit hyperbolic. But it's honestly how I've started to feel: open source, as I've known it, is dying. And I sadly think AI is what's killing it.

It was never just the code

When people talk about open source, they usually talk about code. Licenses, packages, download counts, stars. That was never the part that kept me coming back though.

It was the people. It was fixing a typo in a README and having someone say thanks. It was a stranger on the other side of the world finding a bug in my code and sending a fix before I'd even woken up. It was arguing (politely, mostly) in an issue thread about the right API, and ending up with something better than either of us would've built alone.

My first real GitHub PRs were in June 2014, three years to the day after I made that account. We were using PointDNS, and their little Node.js client crashed with SyntaxError: Unexpected end of input whenever you listed records on a big zone. It wasn't handling chunked responses, so I fixed it. Two hours later, feeling brave, I opened a second PR: a "global tidy up" that touched almost every line in the file. My description said, with all the confidence of someone who had never really maintained anything:

We're huge fans of your service, but this node.js module was rather counter-intuitive to use. Hopefully this pull request will help solve that issue for any future developers!

A maintainer merged both the next morning - no back and forth, no checklist, no bots. A stranger sent them 300 lines of unsolicited changes, and they took a chance on it. I can't fully explain what that did for me, except that it made me feel like I belonged.

A PR isn't just a diff - it's someone saying "I used your thing, I cared enough to make it better, and I'm trusting you with my work." Reviewing it is you saying "I see you, let's do this together." That exchange, repeated millions of times, is what built the Internet we all use every day.

Looking back at that second PR, I'm honestly a little embarrassed. An unsolicited rewrite from someone nobody had heard of, with a slightly cocky description? Miguel Grinberg, who maintains Flask-SocketIO, put it bluntly this year: "Today, an unsolicited PR is a red flag." If mine landed in a repo today, I'd assume an agent wrote it too, and I wouldn't blame anyone for closing it.

Andreas Kling said it best when Ladybird stopped accepting public PRs: "A substantial patch used to imply substantial effort, and that effort was a reasonable proxy for good faith. That assumption no longer holds." A real person wrote my PR, nervous, hoping it was good enough. The effort was the signal. That's what's gone.

It's not fun anymore

Something shifted over the last year or so, and it's been hard to put into words.

Open a PR on a popular repo today and observe what happens. Within seconds, a bot leaves an AI review summarizing your own change back to you. Another bot posts a preview deployment. Another posts a "walkthrough" with a sequence diagram nobody asked for. Sometimes a fourth shows up to respond to the third. By the time a human actually looks at it, the thread is a wall of generated text, and the real conversation (the human part) is buried somewhere in the middle.

That's the good case, where a human wrote the PR. The bad case is when nobody really did, like PRs that "fix" issues that don't exist, or PRs that rewrite half a file with confident, plausible, completely wrong code, or security reports that read like the real thing until you realize the vulnerability was hallucinated. And there are apparently accounts opening dozens of these a day across hundreds of repos, just farming green squares for a résumé.

I've started muting notifications from repos I used to love following since it's mostly just noise now, and that makes me sadder than I expected it to.

Even that first PointDNS PR, sitting quietly for over a decade, picked up a string of junk comments last November from an account I'd never seen. A #, a ###, a broken screenshot upload. I honestly don't know if it was a bot or a person. That's kind of the point.

I don't blame maintainers one bit

AI slop PRs are the worst kind of work. They look like contributions, so you feel obligated to read them. They take real time to review, and then more time to explain why they're wrong to someone (or something) that isn't listening. That's time not spent on the actual project, or with family, or sleeping.

And the doors are closing. Fast.

Not everywhere, and not all in the same way, but the direction of travel is hard to miss. curl ended its monetary bug bounty after the signal-to-noise ratio collapsed. Daniel Stenberg wrote that the share of real reports had fallen below 5%: “Not even one in twenty was real.”

tldraw started automatically closing external PRs. Ghostty tightened its AI policy, with Mitchell Hashimoto writing that low-effort AI contributions had increased the “bad” count “by 10x if not more.” Jazzband, home to dozens of Python projects, shut down entirely, blaming GitHub’s “slopocalypse” of generated PRs and issues.

OpenJDK banned LLM-generated contributions, naming reviewer burden as the first risk. Ladybird stopped accepting public pull requests. Godot now requires code to be human-authored and bans autonomous agents. COSMIC requires contributors to confirm that their PRs contain no LLM-generated code, comments, or descriptions. Codeberg members voted to ban mostly AI-generated projects from the platform.

Then on October 1, Sindre Sorhus disabled external pull requests across all of his repos:

Due to AI, I have disabled external pull requests on all my repos. Open source, as we have known it, was fun while it lasted. (It's been 15 years for me)

If you’ve written JavaScript in the last decade, you’ve almost certainly run his code.

The details vary, but the shape is the same: maintainers are no longer just deciding whether a contribution is good, they’re deciding whether they can afford to find out. I don’t think they’re wrong, and that's the really difficult part. Every maintainer closing the door is probably making the rational choice for their project, their time, and their sanity. But when enough people make that same rational choice, open source starts to become something else.

And then this week, Yusuke Wada disabled PRs from external contributors on Hono. That one hit hard. Hono is one of my favorite projects, and I've called it the gold standard for Workers development many times.

Sad news. We disabled PRs from external contributors on honojs/hono ... Hono has not stood here without PRs. I will never forget the PR @usualoma created for RegExpRouter. A damn fast HTTP router we have never seen! But PRs don't work in this era. Contribute in other ways. Thanks

That quote hurts because it contains the whole contradiction. Hono was shaped by an outsider’s PR, and that outsider is still contributing to it four years later. Now Hono has to close the door they walked through. I don’t read that as hypocrisy, I read it as grief.

Even the platforms are saying it out loud. In February, GitHub published "Welcome to the Eternal September of open source", which put it better than I can: "The cost to create has dropped but the cost to review has not." The next day, they shipped a setting to turn pull requests off entirely. Since then they've added caps on open PRs per user (AI agents count toward it), a way to restrict who can open issues, and a way to archive spammy PRs so nobody else can see them. The platform that made the pull request famous has spent the year building ways to turn it off.

Some projects aren't waiting around for GitHub to fix it. Zig moved to Codeberg last year, and more and more people are spinning up their own Forgejo or Gitea instances. I don't blame them either, since GitHub's reliability hasn't exactly been great lately. But every project that leaves takes its issues, its history, and its people somewhere new, with yet another account to make and another place to look. It fractures things even further, and makes the next stranger even less likely to wander in.

I'm part of this too

I use AI every single day, and that makes me feel slightly uncomfortable while writing this blog. I write code with it, review code with it, and I even had help organizing the rambling notes that became this post. It's an amazing tool and it's made me faster, and on good days, better at my job. I'm not here to tell anyone to stop using it.

But I think a lot of us (me included) have been treating the cost of it as zero. It isn't - the cost just moved. When generating a PR takes ten seconds and reviewing it properly takes thirty minutes, all you've done is shift the work from the person who wants something onto the person who has to say no - and the person saying no is almost always a volunteer who was already stretched thin.

AI made contributing cheap. It didn't make maintaining any cheaper - if anything, it made it a lot more expensive.

I don't know what the fix is

I wish I had a neat answer here, but I don't.

Banning AI PRs feels like the right call for a lot of projects, and I'll defend any maintainer who makes it - but it's also a blunt tool. It catches the person who used AI to help write one good test alongside the person who pointed an agent at a thousand repos. It relies on honesty, or on detection that doesn't really work, and it nudges us toward a world where repos are closed by default, where you need to be vouched for before you're allowed to help, and where the default answer to a stranger is no.

Perhaps that's just where we're heading - smaller, trusted circles, with source available, but contributions by invitation. Maybe that's even fine, and I'm being nostalgic for a version of the Internet that was never going to last.

But the early 2010s version of me, nervously sending a stranger 300 lines of "tidy up", wouldn't get through that door. I think we lose something real when people like that can't get in anymore.

I don't know what the fix is. I just know I miss how it used to feel.

Комментарии (0)