Опять про bundled libs

Сегодня, больше 150 мэйнтейнеров Fedora получили уведомление об открытой заявке в Bugzilla. В ней описывалась дыра в безопасности в одной из популярных JavaScript-библиотек, jQuery. Из-за этой дыры, и из-за того, что jQuery приложена в виде bundled lib во множестве приложений, всем этим мэйнтейнерам придется заняться пересборкой пакетов с исправлением.

Когда говорят о bundled libs, и проблемах, которые они вызывают, то обычно имеют в виду вкомпилированные прямо в приложения исходники библиотек. Среди известных нарушителей можно назвать кросс-платформенные приложения, порой вынужденные ради простоты сборки на проприетарных платформах учитывать бедность их репозитариев. Но на самом деле, именно с этими приложениями мы в целом вопрос решили, и остаются считанные десятки случаев, а теперь у нас основные проблемы с bundled libs вызывают массово копируемые JS-исходники.

Неряшливый подход некоторых frontend-программистов переносится ими на системный уровень. Когда им надо использовать JS-библиотеку, то они ее бросают в исходники, и либо забывают навсегда (отчего в ней заводятся баги), либо безоглядно форкают (отчего она далеко уплывает от оригинала, патчить ее становится сложно, и в ней тоже заводятся баги). Мы попробовали было начать выносить хотя бы jQuery из пакетов, требуя использовать system-wide копию, и даже запланировали было это фичей Fedora 21, но обстоятельства оказались сильнее нас, и фичу перенесли на Fedora 22.

А так ли и надо выносить JS-модули в system-wide пакеты? Конечно, можно и не выносить, но тогда, как сейчас, вместо того, чтобы патчить один пакет силами одного мэйнтейнера, придется патчить целую кучу пакетов силами 156 мэйнтейнеров. К счастью, в апстриме уже начали исправлять проблему, например в CouchDB уже поправили.