0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p><strong>Две популярные JavaScript-библиотеки с открытым исходным кодом -<a>faker.js</a>и<a>colors.js</a>- после обновления перестали работать: при попытке вызвать код из первой возникает ошибка, а вторая запускает бесконечный цикл с выводом в консоль слова "LIBERTY". Судя по твиттеру, разработчик Марак Сквайрс испортил библиотеки сознательно - и это не первый случай, когда популярное ПО с открытым исходным кодом неожиданно перестает работать по вине его создателей. Разбираемся, что делать, если подобная ситуация произошла с вашим приложением.</strong></p>
1
<p><strong>Две популярные JavaScript-библиотеки с открытым исходным кодом -<a>faker.js</a>и<a>colors.js</a>- после обновления перестали работать: при попытке вызвать код из первой возникает ошибка, а вторая запускает бесконечный цикл с выводом в консоль слова "LIBERTY". Судя по твиттеру, разработчик Марак Сквайрс испортил библиотеки сознательно - и это не первый случай, когда популярное ПО с открытым исходным кодом неожиданно перестает работать по вине его создателей. Разбираемся, что делать, если подобная ситуация произошла с вашим приложением.</strong></p>
2
<h2>Содержание</h2>
2
<h2>Содержание</h2>
3
<ul><li><a>Что произошло</a></li>
3
<ul><li><a>Что произошло</a></li>
4
<li><a>Что-то подобное уже случалось?</a></li>
4
<li><a>Что-то подобное уже случалось?</a></li>
5
<li><a>Как защититься от таких ситуаций?</a></li>
5
<li><a>Как защититься от таких ситуаций?</a></li>
6
<li><a>Как выбрать опенсорс-библиотеку</a></li>
6
<li><a>Как выбрать опенсорс-библиотеку</a></li>
7
</ul><h2>Что произошло</h2>
7
</ul><h2>Что произошло</h2>
8
<p>Faker.js - опенсорсный проект, который позволяет генерировать случайные данные для тестирования. Colors.js добавляет в консоль Node.js цвета и форматирование, чем помогает читаемости текста. По данным GitHub, где был опубликован исходных код обеих библиотек, faker.js за последнюю неделю скачали 2,4 млн раз, colors.js - 23 млн раз. По статистике GitHub, эти библиотеки используются в 19 тыс. проектов, среди которых, например, Amazon Cloud Development Kit.</p>
8
<p>Faker.js - опенсорсный проект, который позволяет генерировать случайные данные для тестирования. Colors.js добавляет в консоль Node.js цвета и форматирование, чем помогает читаемости текста. По данным GitHub, где был опубликован исходных код обеих библиотек, faker.js за последнюю неделю скачали 2,4 млн раз, colors.js - 23 млн раз. По статистике GitHub, эти библиотеки используются в 19 тыс. проектов, среди которых, например, Amazon Cloud Development Kit.</p>
9
<p>4 января исходный код faker.js был удален с GitHub, а в описании библиотеки осталась одна строчка: "Что на самом деле произошло с<a>Аароном Шварцем</a>?". Спустя несколько дней перестала работать colors.js - теперь пакет заставляет любое приложение с зависимостью от него бесконечно отрисовывать последовательность случайных символов со словом "LIBERTY", записанным в три строчки.</p>
9
<p>4 января исходный код faker.js был удален с GitHub, а в описании библиотеки осталась одна строчка: "Что на самом деле произошло с<a>Аароном Шварцем</a>?". Спустя несколько дней перестала работать colors.js - теперь пакет заставляет любое приложение с зависимостью от него бесконечно отрисовывать последовательность случайных символов со словом "LIBERTY", записанным в три строчки.</p>
10
<p>В ответ на жалобы пользователей Марак Сквайрс писал, что знает о ситуации и обещал исправить проблемы. 7 января GitHub заблокировал разработчику доступ к его репозиториям.</p>
10
<p>В ответ на жалобы пользователей Марак Сквайрс писал, что знает о ситуации и обещал исправить проблемы. 7 января GitHub заблокировал разработчику доступ к его репозиториям.</p>
11
<p>Сквайерс никак не прокомментировал причины своего поступка. В 2020 году в своем твиттере он писал, что "больше не готов бесплатно поддерживать компании из списка<a>Fortune 500</a>и потребовал либо выдать ему "контракт с шестизначной зарплатой, либо форкнуть проект и заниматься им самостоятельно". После удаления faker.js Сквайерс написал в твиттере "Что на самом деле произошло с Аароном Шварцем?" и приложил ссылку на Reddit, где осуждалась теория заговора о Шварце: якобы он был убит после того, как обнаружил детское порно на серверах Массачусетского технологического института.</p>
11
<p>Сквайерс никак не прокомментировал причины своего поступка. В 2020 году в своем твиттере он писал, что "больше не готов бесплатно поддерживать компании из списка<a>Fortune 500</a>и потребовал либо выдать ему "контракт с шестизначной зарплатой, либо форкнуть проект и заниматься им самостоятельно". После удаления faker.js Сквайерс написал в твиттере "Что на самом деле произошло с Аароном Шварцем?" и приложил ссылку на Reddit, где осуждалась теория заговора о Шварце: якобы он был убит после того, как обнаружил детское порно на серверах Массачусетского технологического института.</p>
12
<h2>Что-то подобное уже случалось?</h2>
12
<h2>Что-то подобное уже случалось?</h2>
13
<p>В 2016 году произошла похожая ситуация - разработчик Азер Кочулу из-за конфликта с мессенджером Kik (это же название носил один из его пакетов) отозвал все 250 созданных им библиотек с открытым исходным кодом для Node.js из пакетного менеджера<a>NPM</a>. В результате менеджер фактически перестал работать - без созданного Кочулу<a>left-pad</a>он не смог установить зависимости между пакетами. Тогда руководство NPM отменило отзыв пакета и запретило удалять библиотеки старше 24 часов.</p>
13
<p>В 2016 году произошла похожая ситуация - разработчик Азер Кочулу из-за конфликта с мессенджером Kik (это же название носил один из его пакетов) отозвал все 250 созданных им библиотек с открытым исходным кодом для Node.js из пакетного менеджера<a>NPM</a>. В результате менеджер фактически перестал работать - без созданного Кочулу<a>left-pad</a>он не смог установить зависимости между пакетами. Тогда руководство NPM отменило отзыв пакета и запретило удалять библиотеки старше 24 часов.</p>
14
<p>Другая история произошла с аналогом faker.js для PHP, Faker. В 2019 году разработчики<a>перестали поддерживать</a>библиотеку, но сообщество сделало форк и<a>продолжает</a>её развивать.</p>
14
<p>Другая история произошла с аналогом faker.js для PHP, Faker. В 2019 году разработчики<a>перестали поддерживать</a>библиотеку, но сообщество сделало форк и<a>продолжает</a>её развивать.</p>
15
<h2>Как защититься от таких ситуаций?</h2>
15
<h2>Как защититься от таких ситуаций?</h2>
16
<p>Существует несколько подходов:</p>
16
<p>Существует несколько подходов:</p>
17
<ul><li><strong>Бэкапы зависимостей.</strong>Например, инфраструктурые инженеры (девопсеры) используют подход, когда репозиторий вместе с кодом для изменения конфигурации содержит зависимости модулей и библиотек. Это помогает защититься в ситуации, если модуль будет внезапно удален. Но у такого подхода есть минус - пакеты реже получают обновления.</li>
17
<ul><li><strong>Бэкапы зависимостей.</strong>Например, инфраструктурые инженеры (девопсеры) используют подход, когда репозиторий вместе с кодом для изменения конфигурации содержит зависимости модулей и библиотек. Это помогает защититься в ситуации, если модуль будет внезапно удален. Но у такого подхода есть минус - пакеты реже получают обновления.</li>
18
<li><strong>Форк библиотеки.</strong>Как в ситуации с Faker, когда исходный код из основного репозитория был удален, а версия сообщества осталась и существует до сих пор.</li>
18
<li><strong>Форк библиотеки.</strong>Как в ситуации с Faker, когда исходный код из основного репозитория был удален, а версия сообщества осталась и существует до сих пор.</li>
19
<li><strong>Дублирование библиотек.</strong>Хранение библиотек в корпоративной сети, например, в закрытом репозитории.</li>
19
<li><strong>Дублирование библиотек.</strong>Хранение библиотек в корпоративной сети, например, в закрытом репозитории.</li>
20
</ul><h2>Как выбрать опенсорс-библиотеку</h2>
20
</ul><h2>Как выбрать опенсорс-библиотеку</h2>
21
<p>Основной риск при выборе пакета с открытым исходным кодом - высокая вероятность того, что в какой-то момент он перестанет поддерживаться и развиваться. Разработчики опенсорс-проектов крайне редко получают деньги за свою работу. Кроме того, они могут перегореть, заболеть или умереть. В этом случае либо в библиотеку перестанут вноситься изменения, либо, как в случае с Faker, будет удален исходный код.</p>
21
<p>Основной риск при выборе пакета с открытым исходным кодом - высокая вероятность того, что в какой-то момент он перестанет поддерживаться и развиваться. Разработчики опенсорс-проектов крайне редко получают деньги за свою работу. Кроме того, они могут перегореть, заболеть или умереть. В этом случае либо в библиотеку перестанут вноситься изменения, либо, как в случае с Faker, будет удален исходный код.</p>
22
<p>Поэтому при выборе библиотеки стоит проверить, как часто происходят изменения в коде, как выглядят issue и pull request, участвует ли разработчик в жизни проекта или активно ли сообщество. Стоит обращать внимание на оценки и количество скачиваний: чем популярнее проект, тем выше вероятность того, что он будет развиваться и не будет удален.</p>
22
<p>Поэтому при выборе библиотеки стоит проверить, как часто происходят изменения в коде, как выглядят issue и pull request, участвует ли разработчик в жизни проекта или активно ли сообщество. Стоит обращать внимание на оценки и количество скачиваний: чем популярнее проект, тем выше вероятность того, что он будет развиваться и не будет удален.</p>
23
<p>Преимущество опенсорса заключается в том, что любой человек может скопировать код и изменить его. Чем больше сообщество у проекта, тем выше вероятность, что он будет существовать долго.</p>
23
<p>Преимущество опенсорса заключается в том, что любой человек может скопировать код и изменить его. Чем больше сообщество у проекта, тем выше вероятность, что он будет существовать долго.</p>