HTML Diff
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>