[1d0aa380440cce0a0ca7485c08a92a7b8f71d705] #fun 

Open-source в контексте vibe-programming

Увидел тут в одном заголовке статьи: я переписал ... и ни разу не открыл код.
Надо бы поменять понятие open source. Пускай это будет такой софт/код, который
человек хотя бы посмотрел перед релизом/push.

[оставить комментарий]
комментарий 0:
From: Yarik Sysoev
Date: 2026-07-28 18:44:58Z

Жаль, что мало кто поднимает проблему проектов, которые "технически
открытые".

Одной из "свобод" Столлмана считает "свободу изменять код". Но если ты
генерируешь его через ллмку, то объём произведённого кода на порядок
больше, чем объём, который ты написал и успел бы осмыслить за то же
время "честным" способом. Но для читающего (будь это принимающий патч
или тот, кто пытается сделать форк) объём работы вырос непропорционально
больше, чем у того, кто генерировал (если, конечно, тот не вчитывался в
выхлоп. А он скорее всего - нет). Хотя *технически* никакие свободы не
нарушены - прочитать и модифицировать то ты всё ещё можешь, чего бухтеть?

Защитники ллм называют сами ллмки "компиляторами, но уровнем повыше" и,
как следствие, такая ситуация им не кажется проблемной - "ну так просто
делай через ллмку и рефактор тоже, чего ты как дурак? ты же на выхлоп
objdump не смотришь!"

Только все эти "компиляторы" не работают без подключения к удалённому
серверу, а те, что работают - тоже де-факто бинарные блобы с весами с
нулевой предсказуемостью. (особо отбитый мне однажды на "отсутствие
предсказуемости"  ответил, что это чинится выставлением параметра
температуры в 0). И если аналогию продолжать - почему же тогда в патчах
присылают итоговый код, а не запрос+модель+версию, чтобы получать
воспроизводимый результат?

При этом ситуация с "техническими открытым" ПО не нова. Тот же хромиум.
Исходник есть? есть. Чего бубнить то. То, что протоколы определяются
единственной реализацией и что никакой команды не хватит, чтобы сделать
полноценный браузер - не проблемы гугла.

Или вот язык программирования LEAN от майкрософта. Это язык буквально
для формальной верификации математических выражений. Абстрактнее некуда,
но при этом он гвоздями прибит к vscode в качестве плагина. Технически,
его можно собрать так, чтобы он работал вне него. Как - проблема кого
угодно, но не мелкомягких. У Tsoding-а на трансляции эта настройка
заняла "всего лишь" 40 минут, например.
комментарий 1:
From: Sergey Matveev
Date: 2026-07-30 19:00:34Z

*** Yarik Sysoev [2026-07-28 21:44]:
>генерируешь его через ллмку, то объём произведённого кода на порядок больше ...

Согласен. Поэтому огромные размеры кода в патчах -- один из звоночков
что это сделал не человек и его вряд ли читали, просто вбросив в надежде
что ты с этим сам разберёшься.

>Хотя *технически* никакие свободы не нарушены - прочитать и
>модифицировать то ты всё ещё можешь, чего бухтеть?

Тут вопрос где граница что считать кодом. Ведь никто же не мешает и
машинный код изменить? И дизассемблировать? А кто-то так и делает и
меняет поведение программы (ломает DRM например). Можно ли *_string.go
автоматически сгенерированные go stringer-ом файлы исходным кодом?
Например GNU GPL говорит, что:

      The "source code" for a work means the preferred form of the work
    for making modifications to it.  "Object code" means any non-source
    form of a work.

и, собственно, вопрос что такое preferred form. Обфусцированный код,
если он изначально не пишется человеком (code contest, мазохизм), не
является пригодным и preferred form for modification и не может считать
исходным кодом. Verbose-ная портянка выхлопа из БЯМа тоже наверное может
попасть под категорию unreadable in adequate time by human.

>Защитники ллм называют сами ллмки "компиляторами, но уровнем повыше" и, как
>следствие, такая ситуация им не кажется проблемной - "ну так просто делай
>через ллмку и рефактор тоже, чего ты как дурак? ты же на выхлоп objdump не
>смотришь!"

Ну как бы есть люди которые смотрят и на выхлоп objdump, тем более в
криптографическом коде :-)

>Только все эти "компиляторы" не работают без подключения к удалённому
>серверу, а те, что работают - тоже де-факто бинарные блобы с весами с
>нулевой предсказуемостью. (особо отбитый мне однажды на "отсутствие
>предсказуемости"  ответил, что это чинится выставлением параметра
>температуры в 0). И если аналогию продолжать - почему же тогда в патчах
>присылают итоговый код, а не запрос+модель+версию, чтобы получать
>воспроизводимый результат?

Подпишусь под каждым предложением. Тоже сразу же мысли про удалённый
сервис, затем вопрос детерминированности. Разница между компиляторами в
том, что мы можем конкретно и чётко увидеть в их коде что мы можем
ожидать на выходе. Даже если нам дадут исходные данные использованные
при обучении БЯМа -- мы, как люди, не сможем предсказать что оно будет
генерировать. Да и вроде же даже в моделях прям random вроде бы где-то
применяется при принятии решений? Может ошибаюсь или путаю с чем-то.

>При этом ситуация с "техническими открытым" ПО не нова. Тот же хромиум.
>Исходник есть? есть. Чего бубнить то. То, что протоколы определяются
>единственной реализацией и что никакой команды не хватит, чтобы сделать
>полноценный браузер - не проблемы гугла.

Абсолютно верно! Я поэтому например тот же WebRTC и не воспринимаю как
нечто возможное для рассмотрения решения VoIP. Причём весь код связанный
с передачей данных (не связанный с кодеками и самой мультимедиа) я таки
просмотрел и много тысяч строк модифицировал. Такие объёмы кода
гарантируют, что вообще нет понимания как это будет работать, надёжно
ли, где какие подвохи и прочее. И это ужасный код в лучших традициях
ООП: вместо одного простого действия на строчку, там будет абстракций на
двести строк. Может WebRTC работать? Практика показывает что да. Но это
просто выглядит как нечто работающее, а по факту чёрный ящик. Впрочем, я
потратил только два месяца на возню с ним -- возможно этого недостаточно.
Один коллега попытался в UML взаимосвязи между классами/методами
построить: это просто лютейшее безумие в итоге оказалось. А ведь это
всего-лишь WebRTC! RFC которого можно вполне себе осилить, прочитать и
полностью понять. Далеко не самая сложная вещь. Почему я именно его
вспоминаю? Потому что тоже сторонних реализаций как бы больше и нет.

>Или вот язык программирования LEAN от майкрософта. ...
>собрать так, чтобы он работал вне него. Как - проблема кого угодно, но не
>мелкомягких. У Tsoding-а на трансляции эта настройка заняла "всего лишь" 40
>минут, например.

Я такое же и про Rust говорю. Сами авторы и сообщество растоманов никак
не заботится и не говорит о том, как собрать их же компилятор из исходников.
Кому надо -- тот пускай и ищет как собрать, мол, не их это дело. Я неделю
потратил на сборку mrustc а дальше с полудюжины версий Rust чтобы дойти
до актуальной на тот момент. Причём выполнить это технически было не
возможно на компьютере с 20GB RAM (нужно больше). Причём я почти уверен,
что повторить и воспроизвести ту сборку уже не выйдет (хотя только ради
этого я храню старые версии Devuan дистрибутива, где это делал), так как
вроде бы во время сборки начинает использоваться Cargo, в котором
проблемы уже на тот момент были похлеще чем в PyPI (вопросы
reproducibility) (может дело не в самом Cargo, а том как его при сборке
пытаются использовать, детали не помню).

Недавно я слышал информацию о том, что на каком-то из совещаний чуть ли
не с министрами, была вброшена фраза о том, что "свободное ПО это тоже
не вариант, мол посмотрите на Иран". Я попытался выяснить о чём речь.
Ведь за миром ПО то я слежу, да и за Ираном. Оказалось, что речь про то,
что какие-то сервисы для Ирана отключили (как и для РФ/РБ отключают
услуги и доступ), и какие-то программы (видимо IM-ы), являющиеся
свободным ПО, перестали работать. Мол, надо писать с нуля собственное.
Это меня, мягко говоря, испугало. Если наши министры (неизвестно кто,
возможно всё прошло через не один испорченный телефон) такую чушь могут
снести и не понимают разницу между программой запускаемой локально и
программой запускаемой на чужом компьютере (да, при этом удалённый
доступ (через API) может осуществляться свободным ПО), то ждут
страшнейшие и темнейшие времена. Надежда что всё же будут
консультироваться с настоящими специалистами, кто реально пишет софт. Но
да, не поспоришь, ведь технически же именно свободная программа
перестала работать :-)
комментарий 2:
From: Yarik Sysoev
Date: 2026-07-30 23:11:24Z

 >даже в моделях прям random вроде бы где-то применяется при принятии
решений?

Вот за это параметр "температуры" отвечает. Допустим, "базовый" шанс
выдать токен А - 90%, а токен Б - 10%. Если увеличить температуру, то
тогда Б будет выпадать чаще (но не больше, чем А), если уменьшить до
нуля - никогда не выпадет, то есть нейронка будет выдавать исключительно
самый вероятный выхлоп (при учете текущего контекста). Ну или можно
просто функцию рандома на детерминированную заменить (ну там seed
сбрасывать после каждого запроса, например). Только тут
детерминированность на уровне хеш функций всё равно останется.

 >Сами авторы и сообщество растоманов никак не заботится и не говорит о
том, как собрать их же компилятор из исходников.

Имел счастье застать прекрасный и исключительно любвеобильный диалог
растомана и человека, который портировал софт на Эльбрус и был вынужден
пройти 15 этапов бутстрапа этого самого раста, который был в
зависимостях. Второго, почему-то, не очень сильно впечатлили речи про
"memory-safety", "математическую красоту" и "zero-cost abstractions".

 > какие-то программы (видимо IM-ы), являющиеся свободным ПО, перестали
работать.

Единственное, что в голову из подходящего приходит - signal, но он
"перестал работать" не из-за того, что его "кто-то снаружи" отключил
(хотя и могли в теории). Так что непонятно, в чём их логика.

> Если наши министры (неизвестно кто, возможно всё прошло через не один испорченный телефон) такую чушь могут снести [..]

После просмотра трансляции со Свинцовым вопрос наличия испорченного телефона превращается в вопрос "сколько ж там таких сидит?"

 > Надежда что всё же будут консультироваться с настоящими
специалистами, кто реально пишет софт.

Я слышал, что они "ради безопасности" отказались открывать код для
электронного голосования. После этого надежды нет :(