Большие сервисы часто зависимы от открытого ПО. Но иногда система даёт сбой. Недавно автор популярных бесплатных библиотек сознательно их испортил. Это привело к проблемам в работе всемирной паутины.
С чего всё началось
Разработчик под ником Marak выложил в общий доступ десятки библиотек. Особенно популярными оказались colors.js и faker.js. Первая добавляет в консоль отображение цветных символов, вторая генерирует случайные данные для тестирования софта. Сейчас colors.js загружают 23,1 млн раз в неделю, faker.js — 2,4 млн раз. Фрагменты плагинов используются в крупных IT-системах вроде Amazon Cloud Development Kit, без которой сложно представить современный онлайн.
8 января 2022 года Marak обновил библиотеки: они начали выводить в консоли слово LIBERTY и бессмысленный набор нечитабельных символов. Судя по всему, автор сделал это специально: ещё в ноябре 2020-го он писал, что больше «не собирается поддерживать компании из списка Fortune 500 своим бесплатным трудом». Сейчас все изменения отменены — видимо, с программистом удалось договориться.
Были и другие случаи
Почему сбой в одной библиотеке сказывается на общей работе известных интернет-сервисов? Среди разработчиков на языке JavaScript стандартом стал менеджер пакетов NPM. В нём хранятся массивы открытого кода с прописанными зависимостями.
Например, если программисту нужен плагин A, который задействует фрагменты плагинов B и C, менеджер пакетов загрузит их в одну команду. Эта система функционирует, пока не исчезнет одна из зависимых библиотек. Недавно нечто подобное случилось с пакетом kik.
Одноимённый мессенджер владеет товарным знаком Kik, поэтому автора библиотеки попросили сменить название проекта. Договориться не удалось, представители мессенджера потребовали у NPM удалить библиотеку из каталога. После этого программисты начали получать сообщения об ошибке. Проблема оказалась настолько серьёзной, что не было возможности обновлять большие приложения и сервисы. В итоге пришлось вернуть спорную библиотеку.
Интернет не такой надёжный, как кажется
Вырисовывается следующая ситуация: высоконагруженные веб-сервисы вроде Facebook и Google зависят от малоизвестных строк кода, написанных другими специалистами. Это удобно для разработчиков: не нужно создавать заново простые функции, которые уже опубликованы другими. Но стоит случиться тому, что произошло с colors.js или kik, — и вся пирамида рушится.