За пару десятилетий важность опенсорса (FOSS) кардинально выросла. Сейчас от «любительских» библиотек зачастую зависят важные части инфраструктуры, как в классическом xkcd. И эти проекты неожиданно стали критически важными для индустрии, что брутально продемонстрировал инцидент с Log4j.
Одно дело, если пишешь для души, а другое дело, когда на тебя наваливают груз ответственности за миллионы потенциально уязвимых систем. Какой человек это вынесет?
▍ На мейнтейнеров накладывают всё больше ответственности
Зависимость от опенсорса в индустрии постоянно растёт. Одновременно растут и негласные требования к мейнтейнерам. Считается само собой разумеющимся, что автор обязан обкладывать тестами и тестировать свою программу, проверять её на уязвимости и обязательно исправлять найденные баги — ради миллионов юзеров, которые используют его софт. Но почему он обязан это делать и соблюдать всё новые «требования к безопасности», которые для него принимают посторонние лица?
Коммерческие компании используют FOSS, но зачастую сами не инвестируют время и деньги в его разработку и проверку — они полагают, что этим занимается «сообщество Open Source». А сами просто берут готовый продукт и пользуются им для получения выгоды, благо свободная лицензия это позволяет.
Как помочь мейнтейнерам опенсорсных проектов? Естественно, наилучшая помощь — финансовая, в форме пожертвований или прямой поддержки (например, корпорация может предложить независимому разработчику ежемесячное вознаграждение, что-то вроде зарплаты или гранта).
Есть и другие попытки помощи. Чтобы катастрофа с Log4j не повторилась, в рамках инициативы Alpha-Omega начали искать критически важные проекты для помощи разработчикам. Или вот мейнтейнерам 1% самых важных пакетов PyPi бесплатно раздают флешки для 2FA-авторизации.
Вот такая мера по улучшению безопасности инфраструктуры.
Конечно, это несерьёзно и даже немного смешно. Попытки решить проблему понятны, но фундаментально ничего не меняется. Участие в опенсорсе накладывает на разработчиков всё больше ответственности, которую они не просили и не хотят. Ничего удивительного, что некоторые отказываются от поддержки своих проектов, просят вычеркнуть программу из списка «критических» и забыть их имена. Но им объясняют, что так не получится: если проект признали «критически важным», то это уже навсегда. Мол, товарищ, однажды вляпался в это дело — тяни до конца.
Конечно, нужна определённая смелость, чтобы бросить своё детище и послать окружающих к чёрту. Не у всех хватает решительности и наглости на такой шаг. Если разработчику кажется, что без него всё развалится, то он продолжает сжав зубы тянуть лямку, доводя себя до истощения.
Ну а что делать автору — попросить всех людей прекратить использование его библиотеки? Как вариант, советчики предлагают опубликовать новую версию с предупреждением типа DeprecationWarning
, чтобы уведомить всех пользователей об окончании поддержки.
В итоге развернулась действительно бурная дискуссия, можно ли разрешать удаление проектов из репозитория PyPi? К единому мнению так и не пришли. Но некоторые считают, что удаление своего проекта, от которого зависят другие — это «антисоциальный акт». Разумеется, он противоречит модной сейчас концепции эффективного альтруизма.
Один из ведущих разработчиков фреймворка Django Джеймс Беннетт прямо сказал: «Опубликовав проект в открытом доступе, вы [автоматически] несёте определённую ответственность, хотите вы этого или нет». (Хотя в целом список обязанностей мейнтейнера невелик и сводится к одному простому правилу: «Не быть засранцем»).
Участие в опенсорсе не даёт практически никакой финансовой выгоды — много вы видели там миллионеров? Ну понятно, что лучшие представители человечества по определению не озабочены жаждой наживы, поэтому неизвестно, где причина и следствие. Но факт остаётся фактом: финансовые стимулы в опенсорсе практически отсутствуют.
Если бросить проект нельзя, а развивать его нет сил — то некоторые выбирают компромиссный вариант, когда участие сводится к абсолютному минимуму и становится почти формальным. В этом случае даже устранение уязвимостей исключается из обязанностей мейнтейнера. Мол, кто нашёл баг — пусть сам его исправляет и присылает патч.
А что касается ответственности разработчиков, то дело доходит уже до реальных уголовных дел, и это не шутка.
▍ За участие в опенсорсе можно попасть в тюрьму
В августе 2022 года произошёл вопиющий случай — один из контрибьюторов опенсорсного некоммерческого проекта Tornado Cash, 29-летний программист Алексей Перцев, был арестован в Нидерландах, а сам проект внесли в санкционный список Минфина США.
Миксер Tornado Cash — простой смарт-контракт, который выполняет смешивание криптовалют из разных источников. Он использовался для отмывания ETH после нескольких крупных взломов, как показано на диаграмме (с указанием количества отмытых монет):
Теперь никто не гарантирует, что после Алексея облава не продолжится на других разработчиков и контрибьюторов. И вообще, что список «запрещённых» программ не вырастет.
Поскольку проект внесён в санкционный список США, он был удалён с сайта Github (который принадлежит Microsoft). По американским законам, санкции могут распространиться на любого, кто вступит во взаимодействие с объектом из списка. То есть это «вирусная» модель распространения санкций, способная распространиться как угодно далеко на другие проекты и других разработчиков.
Что это значит для индустрии свободного ПО? Если действительно дело дойдёт до судебного приговора для Перцева, то это вообще ставит под сомнение решение Верховного суда 1995 года, которое приравняло свободу написания кода к свободе слова.
Расправа над Tornado Cash должна стать показательным примером для криптоиндустрии, которую принуждают к подчинению государственным процедурам и банковским стандартам типа проверки личности (KYC) и источников происхождения средств (AML). Но по факту это угроза фундаментальным свободам и правам человека.
Общий ущерб от действий властей США очень велик. Кто-то считает этот ущерб сопутствующим и непреднамеренным, видя в нём простую глупость. В силу отсутствия профессиональных знаний политики думают, что они могут удалить некий программный код из реальности (или запретить его выполнение). Хотя на самом деле код смарт-контракта скопирован на тысячах зеркал. Даже на самом Github в первый же день был создан список форков/зеркал. Даже Фонд электронных рубежей одобрил эту идею ради свободы слова.
Однако из этого следует вывод. Теперь при участии в опенсорсных проектах разработчикам следует сохранять анонимность. Особенно если теоретически в будущем кто-то может объявить эту разработку вне закона — и задним числом начать аресты разработчиков, всех причастных к проекту за прошедшие десятилетия. Кажется, Сатоши Накамото понимал это с самого начала и сохранил анонимность.
Да, Bitcoin пока не объявили вне закона, а разработчиков Bitcoin Core не начали задерживать, как это произошло с Tornado Cash. Но такое несложно представить. И это может произойти практически с любым опенсорсным проектом, в первую очередь — с другими миксерами. Последствия облавы несложно представить: разработчики станут более анонимными, а проекты — более открытыми.
Всё это лишь увеличивает давление на мейнтейнеров и контрибьюторов опенсорсных проектов. Казалось бы, отправил коммит в какой-нибудь анализатор пакетов… Но вдруг эту программу использует КНДР для шпионажа? И вот вас вносят в список SDN, вы становитесь «врагом народа» и друзья боятся с вами здороваться, чтобы не попасть тоже под санкции. Всякое безумие возможно, если мы сейчас свернём на неправильную дорожку. Один маленький шажок способен привести к серьёзным последствиям в будущем.
Такая печальная картина представляется, если дело дойдёт до обвинительного приговора. Будем надеяться, что здравый смысл всё-таки восторжествует и этого не произойдёт. Подписи за освобождения Алексея собирают здесь.
▍ Чем заняться после программирования
Происходящие вокруг события не добавляют радости и оптимизма участникам опенсорсного движения. Ведь они поддерживают любимые проекты в свободное время, жертвуя полноценным отдыхом, поэтому уязвимы для выгорания и депрессии.
Но жизнь не заканчивается. В конце концов, есть куча интересных дел, которыми можно заняться после основной карьеры в IT. По опыту некоторых друзей, когда-то горевших программированием, после выгорания на рубеже 40–50 лет бывшие «сеньоры» любят создавать что-то материальное. У всех по-разному. Например, укладывать итальянскую плитку, строить дом, выращивать растения, плотничать (стулья и прочие деревянные изделия), рисовать, винодельничать, мастерить всякие штуки из металла и других материалов. В общем, всё такое, что можно сделать собственными руками, проявить мастерство и немножко креативности. Эта странная закономерность прослеживается с работниками и других умственных профессий, не только IT.
Конечно, необязательно навсегда уходить из профессии. Можно просто совмещать разные занятия (для снятия стресса). Иногда спасает саббатикал на год-два, чтобы полностью перезагрузиться. К счастью, увлекательных занятий в жизни огромное количество, кроме компьютера и цифровых абстракций.
Telegram-канал и уютный чат для клиентов
Автор: Анатолий Ализар