Обновление популярной библиотеки на JavaScript обрушило миллионы проектов
Свежее обновление миниатюрной библиотеки is-promise, используемой во множестве программных продуктов, привело к невозможности запустить последние. 26 апреля об этом сообщает ресурс ZDNet.
Библиотека написана на языке JavaScript и включена в 3,4 млн проектов напрямую только на GitHub. Кроме того, ее используют фреймворки для построения веб-интерфейсов таких гигантов, как Facebook, Google, Amazon и других.
Сама библиотека состоит из пяти строчек кода, причем непосредственно логика размещается в одной строке. Единственный метод библиотеки проверяет, является ли переданный параметром объект так называемым «промисом» — популярным инструментом асинхронного программирования, и возвращает булево значение («истина» или «ложь»).
Поскольку свежая версия библиотеки вызвала ошибку уже на стадии сборки проектов, то ее разработчику сообщили о проблеме сразу. Пока ошибку не смогли устранить и последнюю версию заменили на предыдущую.
Возникшая менее дня назад, но уже нашумевшая в среде программистов, ошибка наглядно демонстрирует один нюанс, связанный с разработкой программного обеспечения (ПО).
С одной стороны, современная разработка ПО без использования готовых компонентов от сторонних разработчиков просто невозможна. Написание больших современных программных систем без использования библиотек будет столь долгим, что ко времени выпуска в эксплуатацию они просто будут уже никому не нужны.
Кроме того, использование готовых компонентов зачастую и удобно. Некоторая относительно узкая задача закрыта и поддерживается своей командой разработчиков. Они следят за актуальностью, исправлением ошибок, требуемыми нововведениями. Другие команды разработчиков используют готовое отточенное решение.
С другой стороны, такие проблемы могут возникать как непреднамеренно, как в данном и подавляющем большинстве случаев, так и сознательно.
Да, от этого пострадает репутация разработчика. Да, задача проверки на совместимость со своим продуктом — дело разработчиков конечного продукта. Есть еще и механизм защиты в виде открытости исходного кода, который при должной популярности наблюдают тысячи и миллионы людей.
Но разработка ПО в целом в существующем мире обрастает все большим количеством проблем, которые без системного подхода хотя бы на национальном или отраслевом уровне не решить.