Что мы на самом деле открываем?
Я буквально чудом поднял для EvertyDesk крутой автотестовый стенд, на котором сейчас гоняю кучу разных сценариев. Иногда у меня уходят недели просто на то, чтобы воспроизвести какую-то маленькую аномалию, понять, существует ли она вообще, поймать нужное состояние и наконец разобраться, что именно происходит.
И в какой-то момент я поймал себя на довольно неприятной мысли.
Есть люди с деньгами, большими лимитами и доступом к невероятным современным моделям ии. Есть сами модели, которые уже умеют разбирать большие кодовые базы, искать связи, читать тесты, объяснять архитектуру. И я не знаю, будет ли это в десять раз быстрее или в сто — да это, наверное, и неважно.
Важно другое.
Я трачу недели на то, чтобы получить ответ. А если потом просто открою весь репозиторий, кто-то другой начнёт уже с этого ответа.
Он получит не только код. Он увидит, что я тестирую, какие состояния считаю важными, где ставлю проверки, какие ошибки вообще допускаю возможными, как воспроизвожу редкие случаи и почему какие-то части системы выглядят именно так.
И вот тут у меня впервые появился очень простой вопрос.

Если всё это всё равно когда-нибудь унесут, разберут, повторят или сделают по-своему — есть ли вообще смысл отдавать это сразу?
Или иногда стоит хотя бы побороться за то, чтобы унесли чуть позже?
Цена первооткрывателя
Мне кажется, мы немного недооцениваем одну вещь.
Код — это не только результат работы. Код очень часто является следом работы.
За условными десятью строками может стоять неделя, в течение которой ты вообще не понимал, где искать проблему. Потом появилась первая гипотеза. Она оказалась неправильной. Потом вторая. Потом выяснилось, что проблема вообще находится не там, куда ты смотрел.
В репозитории этого почти не видно.
Там остаётся красивый финал.
Тест.
Проверка.
Название состояния.
Какой-нибудь timeout.
Комментарий.
Иногда маленький if, существование которого понятно только тому, кто однажды три дня смотрел на совершенно невозможное поведение системы.
И когда ты открываешь исходники, ты открываешь не просто инструкции процессору.
Ты отдаёшь огромное количество уже сделанных выводов.
Получается довольно странная асимметрия.
У автора путь может выглядеть так:
аномалия
↓
непонятно, существует ли она вообще
↓
сбор телеметрии
↓
неудачные гипотезы
↓
переделка стенда
↓
ещё тесты
↓
нахождение причины
↓
фикс
↓
регресс-тестА следующий человек начинает отсюда:
архитектура
+ тесты
+ названия сущностей
+ выбранные границы модулей
+ обработанные edge cases
+ фиксы
+ история коммитов
+ CIИ сегодня сверху на всё это можно поставить модель и спросить: почему здесь сделано именно так? Какие части системы связаны? Где находится логика восстановления? Какие тесты описывают конкретный сбой? Что отсюда можно выкинуть, если я хочу сделать минимальную версию?
Она не проживёт путь автора.
Но, возможно, ей это уже и не нужно.
Вот поэтому меня всё меньше волнует слово «украдут».
Украдут — слишком детская формулировка.
Мне интереснее другое понятие.
Стоимость воспроизведения.
И здесь для меня появилось довольно простое правило:
стоимость копирования была больше, чем стоимость купить твой продукт / конкурировать с тобой нормально.
Если конкуренту дешевле просто купить продукт, интегрироваться с ним или потратить свои силы на что-то другое — прекрасно.
Если же ты сам отдаёшь ему карту местности, список мин, историю экспедиций и ещё переводчика, который за несколько часов объяснит, почему дорога проходит именно здесь, ситуация становится чуть интереснее.
Это не значит, что надо всё спрятать.
Это значит только то, что цена решения «открыть» изменилась.
Код никогда не был единственным барьером
При этом я совсем не хочу изображать из себя человека, который написал настолько великий remote desktop, что Microsoft, Google и половина Китая сидят и ждут мой git push.
Это было бы смешно.
EvertyDesk можно повторить.
Удалённый доступ существовал до меня и будет существовать после меня. Есть RDP, VNC, RustDesk, AnyDesk, TeamViewer, Sunshine, Moonlight, WebRTC и огромное количество других технологий.
Мой тестовый стенд тоже может оказаться совершенно бесполезным другому разработчику. У него другая архитектура, другие ограничения и вообще другой взгляд на задачу.
И именно поэтому мне нравится другая формулировка:
Я не считаю, что мой исходный код невозможно повторить. Наоборот — проблема именно в том, что повторить его становится всё дешевле.
Вот это уже интересно.
Потому что раньше открытый репозиторий всё равно имел сопротивление.
Его надо было читать.
Надо было понять структуру.
Разобраться, где важный код, а где исторический мусор.
Запустить проект.
Воспроизвести окружение.
Потратить время.
Сегодня это сопротивление никуда не исчезло. Но оно уменьшается.
А значит, меняется и экономика открытого кода.
А потом я открываю GitHub
И тут становится ещё страннее.
За последние несколько лет мы уже видели десятки проектов, которые буквально за несколько дней становились центром мира.
AutoGPT.
BabyAGI.
GPT Engineer.
Первые волны локальных LLM-интерфейсов.
Потом агенты.
Потом инструменты для RAG.
Потом очередные «убийцы IDE».
Потом проекты вокруг генерации интерфейсов.
Потом очередной фреймворк, который обещает наконец нормально связать модели, инструменты и память.
Некоторые из них живы и отлично развиваются до сих пор.
Некоторые изменились.
Некоторые растворились.
Но меня здесь интересует даже не судьба конкретного проекта.
Меня интересует скорость.
Я прекрасно помню это ощущение: сегодня половина интернета говорит об одном репозитории. Через две недели появляется другой, который делает почти то же самое, только немного иначе. Потом третий. Потом сто форков. Потом SaaS. Потом переписывание на другом языке. Потом статья «почему X умер». Потом уже никто не помнит, почему X вообще казался революцией.
И эта картина всё меньше напоминает обычное развитие технологий.
Она напоминает какой-то бешеный метаболизм.
Проект появляется, размножается, мутирует и растворяется в экосистеме быстрее, чем автор успевает осознать, что произошло.
Клубника и кабачок
Самое смешное, что происходит это далеко не только с кодом. Я открываю Instagram — там у клубники рождается кабачок. Следующее видео. Ещё кабачок. Кот работает сварщиком. Наполеон ведёт подкаст. Какой-то младенец объясняет ипотеку. И через минуту я не помню ничего из увиденного.
Мне иногда кажется, что нам впервые дали телефон, сказали, что звонки на 8-800 бесплатные, и мы решили обзвонить вообще все номера.
Не потому, что нам всем срочно есть что сказать - просто потому, что теперь звонок почти ничего не стоит.
С созданием контента происходит что-то похожее.
Картинка стала дешёвой, видео стало дешёвым, текст стал дешёвым, прототип стал дешевле и написать первые десять тысяч строк проекта стало намного проще.
И я не говорю, что сделать хороший продукт теперь легко. Совсем нет.
Но сам акт создания перестал быть тем фильтром, которым был раньше.
Когда-то человек мог несколько месяцев носить идею в голове просто потому, что воплотить её стоило огромного количества сил.
Сегодня вечером можно хотя бы попробовать.
Завтра показать.
Послезавтра выложить.
А через неделю уже забыть.
И, возможно, именно здесь происходит самый интересный сдвиг:
Просто раньше дефицитом было создание.
А:

Не написать программу а сделать так, чтобы через год она ещё была кому-то нужна.
Не выпустить репозиторий а сделать так, чтобы автор через два года всё ещё отвечал на issue.
Не показать идею а дожить вместе с ней до момента, когда первоначальный хайп закончился.
Проекты теперь рождаются рядом со своими копиями
Есть ещё одна вещь, которую мне трудно нормально сформулировать.
Раньше хорошая идея могла довольно долго оставаться одна не потому, что никто другой не мог её придумать а просто повторение тоже стоило дорого.
Нужно было найти инженеров, разобраться в предметной области, написать реализацию, пережить все ошибки первого автора.
Сегодня проект часто появляется в мире уже вместе со своими потенциальными копиями.
Ты публикуешь библиотеку.
Через несколько дней появляется форк.
Кто-то переносит её на другой язык.
Кто-то оставляет только самую интересную часть.
Кто-то делает SaaS.
Кто-то склеивает её с тремя другими проектами.
Кто-то просит модель прочитать исходники и написать «что-то похожее, но проще».
Это не обязательно кража.
Иногда это вообще прекрасная вещь.
Так и развивается технология.
Но скорость изменилась и вместе со скоростью меняется психологическое ощущение от публикации.
Раньше открыть означало показать.
Сегодня открыть всё чаще означает ещё и отдать вещь в огромную машину переработки.
После этого она продолжает существовать.
Но уже не только у тебя.
Что вообще остаётся твоим?
И здесь легко уйти в паранойю.
Можно закрыть репозиторий.
Спрятать документацию.
Обфусцировать клиент.
Не рассказывать про архитектуру.
А потом конкурент просто сделает иначе.
И будет прав.
Поэтому секретность сама по себе ничего не решает.
Но мне кажется интересным другой вопрос: если сам код перестаёт быть главным дефицитом, где тогда находится настоящая ценность продукта?
Наверное, частично в продолжении.
Можно скопировать сегодняшнюю версию EvertyDesk.
Нельзя скопировать мой следующий год.
Нельзя скачать баг, который я ещё не встретил.
Нельзя заранее получить разговор с пользователем, после которого я решу выкинуть половину архитектуры.
Нельзя форкнуть решение, которое ещё не принято.
Получается немного странная вещь.
Защитой становится не столько то, что ты спрятал, сколько то, что ты продолжаешь двигаться.
Репозиторий — фотография.
Продукт — процесс.
И возможно, именно процесс сегодня стоит дороже всего.
Тогда зачем вообще открывать?
Вот тут я не хочу приходить к удобному выводу «надо всё закрыть».
Я сам слишком много получил от открытого кода, чтобы всерьёз такое говорить. Мы все живём внутри огромного наследства людей, которые когда-то решили не запирать свою работу в шкафу.
Linux, PostgreSQL, LLVM, FFmpeg, Blender, Rust
Тысячи библиотек, без которых большинство современных продуктов просто не существовало бы.
Open source дал нам невероятную инженерную культуру.
И именно поэтому вопрос для меня сложнее.
Я не хочу отказаться от открытости.
Я хочу перестать воспринимать её как автоматический моральный выбор.
Открытый исходный код перестал быть для меня моральным default. Теперь это сделка.
Если я открываю код — хорошо. Но тогда мне хочется понимать, зачем.
Чтобы получить распространение?
Хорошо.
Чтобы построить экосистему?
Хорошо.
Чтобы другие начали писать интеграции?
Отлично.
Чтобы технология стала стандартом?
Тем более.
Чтобы получить доверие пользователей, аудит, контрибьюторов, продажи, узнаваемость?
Это обмен.Но если единственный аргумент звучит как «ну open source же хорошо», мне его становится мало.
Потому что я уже знаю, сколько стоит путь до некоторых строк этого open source.
И, наверное, поэтому я вообще написал этот текст
Мне всю жизнь тяжело давалась математика — я написал MathRoots.
Я много лет работал айтишником — потом полез делать удалённый доступ.
Большинство моих проектов появлялось не потому, что однажды утром мне захотелось ещё один репозиторий.
Сначала была какая-то заноза, потом вопрос, потом попытка разобраться.
И только потом код.
А сейчас я смотрю на мир, в котором код появляется быстрее вопросов.
И мне пока непонятно, что из этого получится.
Может быть, ничего страшного.
Может быть, наоборот, начинается самая интересная эпоха разработки.
Когда миллион людей наконец сможет попробовать сделать то, что раньше никогда бы не сделал.
Но одновременно мне всё труднее отделаться от чувства, что мы пока ведём себя как люди, впервые получившие бесплатный телефон.
Звоним во все номера.
Генерируем всё.
Открываем всё.
Публикуем всё - Просто потому, что можем.
А потом удивляемся, почему ничего не успевает задержаться в памяти.
Поэтому я не хочу заканчивать призывом.
Не хочу говорить «закрывайте исходники».
И не хочу говорить «открывайте всё».
У меня самого нет ответа.
Есть только вопрос, который теперь возникает каждый раз, когда я смотрю на кнопку Public.
Что именно я сейчас открываю?
Набор файлов?
Алгоритм?
Архитектуру?
Месяц своих ошибок?
Несколько лет опыта?
И если создание этого знания стоило мне недели или годы, а извлечь его завтра станет ещё дешевле, то что я хочу получить взамен?
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.