- PVSM.RU - https://www.pvsm.ru -

Добровольцы поддерживают критические части опенсорса. Но продолжают выгорать и срываться

Добровольцы поддерживают критические части опенсорса. Но продолжают выгорать и срываться - 1


За пару десятилетий важность опенсорса (FOSS) кардинально выросла [1]. Сейчас от «любительских» библиотек зачастую зависят важные части инфраструктуры, как в классическом xkcd [2]. И эти проекты неожиданно стали критически важными для индустрии, что брутально продемонстрировал инцидент с Log4j [3].

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

▍ На мейнтейнеров накладывают всё больше ответственности

Зависимость от опенсорса в индустрии постоянно растёт. Одновременно растут и негласные требования к мейнтейнерам [4]. Считается само собой разумеющимся, что автор обязан обкладывать тестами и тестировать свою программу, проверять её на уязвимости и обязательно исправлять найденные баги — ради миллионов юзеров, которые используют его софт. Но почему он обязан это делать и соблюдать всё новые «требования к безопасности», которые для него принимают посторонние лица?

Коммерческие компании используют FOSS, но зачастую сами не инвестируют время и деньги в его разработку и проверку — они полагают, что этим занимается «сообщество Open Source». А сами просто берут готовый продукт и пользуются им для получения выгоды, благо свободная лицензия это позволяет.

Как помочь мейнтейнерам опенсорсных проектов? Естественно, наилучшая помощь — финансовая, в форме пожертвований или прямой поддержки (например, корпорация может предложить независимому разработчику ежемесячное вознаграждение, что-то вроде зарплаты или гранта).

Есть и другие попытки помощи. Чтобы катастрофа с Log4j не повторилась, в рамках инициативы Alpha-Omega [5] начали искать критически важные проекты для помощи разработчикам. Или вот мейнтейнерам 1% самых важных пакетов PyPi бесплатно раздают флешки для 2FA-авторизации [6].

Добровольцы поддерживают критические части опенсорса. Но продолжают выгорать и срываться - 2

Вот такая мера по улучшению безопасности инфраструктуры.

Конечно, это несерьёзно и даже немного смешно. Попытки решить проблему понятны, но фундаментально ничего не меняется. Участие в опенсорсе накладывает на разработчиков всё больше ответственности, которую они не просили и не хотят. Ничего удивительного, что некоторые отказываются от поддержки своих проектов [7], просят вычеркнуть программу из списка «критических» и забыть их имена. Но им объясняют, что так не получится [8]: если проект признали «критически важным», то это уже навсегда. Мол, товарищ, однажды вляпался в это дело — тяни до конца.

Добровольцы поддерживают критические части опенсорса. Но продолжают выгорать и срываться - 3

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

Ну а что делать автору — попросить всех людей прекратить использование его библиотеки? Как вариант, советчики предлагают [9] опубликовать новую версию с предупреждением типа DeprecationWarning, чтобы уведомить всех пользователей об окончании поддержки.

В итоге развернулась действительно бурная дискуссия [10], можно ли разрешать удаление проектов из репозитория PyPi? К единому мнению так и не пришли. Но некоторые считают, что удаление своего проекта, от которого зависят другие — это «антисоциальный акт». Разумеется, он противоречит модной сейчас концепции эффективного альтруизма [11].

Один из ведущих разработчиков фреймворка Django Джеймс Беннетт прямо сказал [12]: «Опубликовав проект в открытом доступе, вы [автоматически] несёте определённую ответственность, хотите вы этого или нет». (Хотя в целом список обязанностей мейнтейнера невелик и сводится к одному простому правилу: «Не быть засранцем»).

Участие в опенсорсе не даёт практически никакой финансовой выгоды — много вы видели там миллионеров? Ну понятно, что лучшие представители человечества по определению не озабочены жаждой наживы, поэтому неизвестно, где причина и следствие. Но факт остаётся фактом: финансовые стимулы в опенсорсе практически отсутствуют.

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

А что касается ответственности разработчиков, то дело доходит уже до реальных уголовных дел, и это не шутка.

▍ За участие в опенсорсе можно попасть в тюрьму

В августе 2022 года произошёл вопиющий случай — один из контрибьюторов опенсорсного некоммерческого проекта Tornado Cash [13], 29-летний программист Алексей Перцев [14], был арестован в Нидерландах [15], а сам проект внесли в санкционный список Минфина США [16].

Миксер Tornado Cash — простой смарт-контракт, который выполняет смешивание криптовалют из разных источников. Он использовался для отмывания ETH после нескольких крупных взломов, как показано на диаграмме [17] (с указанием количества отмытых монет):

Добровольцы поддерживают критические части опенсорса. Но продолжают выгорать и срываться - 4

Теперь никто не гарантирует, что после Алексея облава не продолжится на других разработчиков и контрибьюторов. И вообще, что список «запрещённых» программ не вырастет.

Поскольку проект внесён в санкционный список США, он был удалён с сайта Github (который принадлежит Microsoft). По американским законам, санкции могут распространиться на любого, кто вступит во взаимодействие с объектом из списка. То есть это «вирусная» модель распространения санкций, способная распространиться как угодно далеко на другие проекты и других разработчиков.

Что это значит для индустрии свободного ПО? Если действительно дело дойдёт до судебного приговора для Перцева, то это вообще ставит под сомнение решение Верховного суда 1995 года [18], которое приравняло свободу написания кода к свободе слова.

Расправа над Tornado Cash должна стать показательным примером для криптоиндустрии, которую принуждают к подчинению государственным процедурам и банковским стандартам типа проверки личности (KYC) и источников происхождения средств (AML). Но по факту это угроза фундаментальным свободам и правам человека.

Общий ущерб от действий властей США очень велик. Кто-то считает этот ущерб сопутствующим и непреднамеренным [19], видя в нём простую глупость. В силу отсутствия профессиональных знаний политики думают, что они могут удалить некий программный код из реальности (или запретить его выполнение). Хотя на самом деле код смарт-контракта скопирован на тысячах зеркал. Даже на самом Github в первый же день был создан список форков/зеркал [20]. Даже Фонд электронных рубежей одобрил эту идею [21] ради свободы слова.

Однако из этого следует вывод. Теперь при участии в опенсорсных проектах разработчикам следует сохранять анонимность. Особенно если теоретически в будущем кто-то может объявить эту разработку вне закона — и задним числом начать аресты разработчиков, всех причастных к проекту за прошедшие десятилетия. Кажется, Сатоши Накамото понимал это с самого начала и сохранил анонимность.

Да, Bitcoin пока не объявили вне закона, а разработчиков Bitcoin Core не начали задерживать, как это произошло с Tornado Cash. Но такое несложно представить. И это может произойти практически с любым опенсорсным проектом, в первую очередь — с другими миксерами [17]. Последствия облавы несложно представить [22]: разработчики станут более анонимными, а проекты — более открытыми.

Всё это лишь увеличивает давление на мейнтейнеров и контрибьюторов опенсорсных проектов. Казалось бы, отправил коммит в какой-нибудь анализатор пакетов… Но вдруг эту программу использует КНДР для шпионажа? И вот вас вносят в список SDN [23], вы становитесь «врагом народа» и друзья боятся с вами здороваться, чтобы не попасть тоже под санкции. Всякое безумие возможно, если мы сейчас свернём на неправильную дорожку. Один маленький шажок способен привести к серьёзным последствиям в будущем.

Такая печальная картина представляется, если дело дойдёт до обвинительного приговора. Будем надеяться, что здравый смысл всё-таки восторжествует и этого не произойдёт. Подписи за освобождения Алексея собирают здесь [14].

Добровольцы поддерживают критические части опенсорса. Но продолжают выгорать и срываться - 5

▍ Чем заняться после программирования

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

Но жизнь не заканчивается. В конце концов, есть куча интересных дел, которыми можно заняться после основной карьеры в IT. По опыту некоторых друзей, когда-то горевших программированием, после выгорания на рубеже 40–50 лет бывшие «сеньоры» любят создавать что-то материальное. У всех по-разному. Например, укладывать итальянскую плитку, строить дом, выращивать растения, плотничать [24] (стулья и прочие деревянные изделия), рисовать, винодельничать, мастерить всякие штуки из металла и других материалов. В общем, всё такое, что можно сделать собственными руками, проявить мастерство и немножко креативности. Эта странная закономерность прослеживается с работниками и других умственных профессий, не только IT.

Конечно, необязательно навсегда уходить из профессии. Можно просто совмещать разные занятия (для снятия стресса). Иногда спасает саббатикал на год-два, чтобы полностью перезагрузиться. К счастью, увлекательных занятий в жизни огромное количество, кроме компьютера и цифровых абстракций.

Telegram-канал [25] и уютный чат [26] для клиентов

Автор: Анатолий Ализар

Источник [27]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/programmirovanie/378886

Ссылки в тексте:

[1] кардинально выросла: https://www.perforce.com/press-releases/openlogic-perforce-and-open-source-initiative-announce-results-open-source-survey

[2] классическом xkcd: https://xkcd.com/2347/

[3] инцидент с Log4j: https://www.washingtonpost.com/technology/2021/12/20/log4j-hack-vulnerability-java/

[4] растут и негласные требования к мейнтейнерам: https://opensource.com/article/21/8/open-source-maintainers

[5] Alpha-Omega: https://openssf.org/community/alpha-omega/

[6] бесплатно раздают флешки для 2FA-авторизации: https://pypi.org/security-key-giveaway/

[7] отказываются от поддержки своих проектов: https://lucumr.pocoo.org/2022/7/9/congratulations/

[8] так не получится: https://discuss.python.org/t/a-defunct-project-of-mine-has-been-categorized-as-critical/17219/2

[9] предлагают: https://discuss.python.org/t/a-defunct-project-of-mine-has-been-categorized-as-critical/17219/11

[10] бурная дискуссия: https://discuss.python.org/t/stop-allowing-deleting-things-from-pypi/17227

[11] эффективного альтруизма: https://en.wikipedia.org/wiki/Effective_altruism

[12] сказал: https://www.b-list.org/weblog/2022/jul/11/pypi/

[13] Tornado Cash: https://en.wikipedia.org/wiki/Tornado_Cash

[14] Алексей Перцев: https://setalexfree.nl/

[15] арестован в Нидерландах: https://www.fiod.nl/arrest-of-suspected-developer-of-tornado-cash/

[16] внесли в санкционный список Минфина США: https://home.treasury.gov/news/press-releases/jy0916

[17] диаграмме: https://www.slowmist.com/report/first-half-of-the-2022-report(EN).pdf

[18] решение Верховного суда 1995 года: https://en.wikipedia.org/wiki/Bernstein_v._United_States

[19] сопутствующим и непреднамеренным: https://lwn.net/Articles/904960/

[20] список форков/зеркал: https://github.com/tornado-repositories

[21] одобрил эту идею: https://www.eff.org/deeplinks/2022/08/code-speech-and-tornado-cash-mixer

[22] несложно представить: https://twitter.com/cz_binance/status/1559257987360985091

[23] список SDN: https://en.wikipedia.org/wiki/Specially_Designated_Nationals_and_Blocked_Persons_List

[24] плотничать: https://www.zainrizvi.io/blog/why-software-engineers-like-woodworking/

[25] Telegram-канал: https://bit.ly/3KZeaxv

[26] уютный чат: https://bit.ly/3qoIOXs

[27] Источник: https://habr.com/ru/post/687176/?utm_source=habrahabr&utm_medium=rss&utm_campaign=687176