Бандленные либы - даже если не брать в расчет чистое вендусятничество такого подхода - это риск того, что кто-то еще попытается их использовать (соответственно, дополнительная головная боль разработчикам и QA репозитория). В случае со статической линковкой такого риска нет.
Несомненно, мы должны преклониться перед могучим умом, который при обострении NIH-синдрома свелосипедил очередной стопицотый плеер, и его мнение принять за абсолютную истину.
Понятно, что тебе слабо признать изначально неправильно выбранный вектор работы.
да ради бога, продолжай мучаться с патчами на форки, и плакаться, что твой велосипед не пускают в приличные дистрибутивы.
лол! да я уже сколько раз писал, и здесь, и в других местах, что мне абсолютно плевать на то, покладут ли пакет в официальные репы. а в ряде случаев — я даже против этого, потому как криворукие сборщики пакетов не могут собрать нормально — в итоге приходится разгребать пачки багрепортов.
кому надо - спокойно качают билды с сайта проекта, и пользуются.
Если разработчик проекта сознательно переписал кучу либ, поломав всю совместимость с оригинальными, и к тому же сделал так, что придётся вырывать эти либы «с мясом» из проекта (типа о вызове напрямую API deadbeaf'а), чтобы заюзать ещё где-нибудь - то почему не начать считать эти либы неотделяемой частью проекта?
Если поломается какая-то совместимость в будущем или уязвимость - то это проблемы только данного проекта. Какая разница - придется фиксить код непосредственно самого проекта или бандленых либ, которые ни с чем не совместимы, и не используются за пределами проекта?
Если кто-то ещё решит заюзать эти перепиленные либы - то все проблемы будут тоже только его, с таким же успехом можно взять любой другой кусок кода из проекта.
Да, это неидеальный путь развития софта. Но нужно быть реалистами. В генте в главном дереве есть не один ебилд проекта (опенсорсного!), где используются bundle-libs без права использовать системные. Если проект заинтересует людей, то, возможно, будут нужные патчи и багфиксы. Если нет - то тихо умрёт. И сейчас просто не добавляется ещё один ебилд при наличии людей, готовых его сопровождать.
К тому же в генте ведь есть keyword'ы и маскировка пакетов.
//и если уж зашла речь так сильно о безопасности и QA - то проприетарщина - это потенциально огромная дырища в этой самой безопасности, намного большая, чем bundle libs. Последние можно хотя бы самостоятельно отдебажить и пофиксить, а не ожидать, пока upstream соизволит это сделать.
UPD: меня интересует эта дискуссия хотя бы потому, что было желание самому сделаться ментейнером некоторых пакетов, но сначала разведка поля битвы - с чем сталкиваются текущие ментейнеры и с чем могу столкнуться в будущем я.
что значит содержать? Если кто-то найдет баг во вложенной либе a он его кому пришлет сейчас? Тебе. А если эта либа отдельно будет лежать, то кому? Правильно -тоже тебе.
не, сложность не в этом. сложность в том, что вместо 1 проекта (как сейчас) получится десяток отдельных проектов, которые поддерживать придется отдельно. отдельные релизы, отдельные фиксы, и т.п.
вспомнил вот. либы говядины не фигурируют в переменных, которые перечисляют пути поиска либ. потому они не попадают в кэш ld потому при вызове по имени либы, либы говядины невидимы потому без хаков типа LD_PRELOAD эти либы не могут быть использованы никем, кроме говядины короче: эти либы глобально невидимы и никто их ненароком использовать не сможет что на это говорят дегенераты от QA? кроме великой левой пятки, конечно
Во-первых, ты можешь общаться с другими без использования слова «дегенераты», пожалуйста? Во-вторых, не знаю, я не член QA team, спроси кого-нибудь из них, если тебе интересно.
Моё мнение на этот счет - то, что с либами нельзя слинковаться(еще бы, они же вложены в тарболл и после статической линковки никем не используются) не отменяет того факта, что это либы.
это значит, что никакой опасности они не представляют так же они не представляют собой проблемы для программ использующих системные либы с тем же именем потому никаких причин не принятия не существует а дегенератов не называть дегенератами == лесть а это ещё хуже короче, QA == некомпетентные дегенераты так и запишем
не толсто это всего лишь значит, что никто кроме говядины не может их использовать а вообще, дай-ка мне официальную гарантию отсутствия уязвимости в любой выбранной тобой библиотеке иначе это пук в лужу и вообще - это совсем другая история, не!? вот и сказочке конец, а ментайнеры - ****!
а вообще, дай-ка мне официальную гарантию отсутствия уязвимости в любой выбранной тобой библиотеки
ок, после того как ты дашь мне гарантию что в либе, которая лежит отдельно их найти также легко, как и в либе, которая статически прилинкована к бинарнику и которую еще надо выявить
это всего лишь значит, что никто кроме говядины не может их использовать
В текущем виде - да, т.к. waker сам сказал что там форкнутые либы, которые без deadbeef тупо не соберутся. Речь не об этом.
Предположим, deadbeef взяли в дерево в текущем состоянии.
Если внести изменения в библиотеку, сломав совместимость с другими пакетами(не со злого умысла, просто так надо), но не трогая возможные уязвимости(которые опять-таки еще надо выявить) мы получаем проблему: в отдельно лежащей либе уязвимость уже вроде как пофиксили, а про вложенную в deadbeef(который допустим приняли в дерево) - забыли. Более того - необходимо проделать дополнительную работу по фиксу этой уязвимости(старый патч может не наложиться - исходный код-то - другой).
И если о каждой такой либе помнить(и помнить - куда она «вложена») - никаких мэйнтэйнеров не хватит
P.S. О чём и говорил Diego в своем блоге, цитата: «there are duplicated bugs that need to be fixed twice»
ок, после того как ты дашь мне гарантию что в либе, которая лежит отдельно их найти также легко, как и в либе, которая статически прилинкована к бинарнику и которую еще надо выявить
слив засчитан
И если о каждой такой либе помнить
когда было иначе? о_О ты вот сейчас спецом херню порешь или реально не догоняешь?
То что существует или существовала хреновая практика, еще не значит что ее надо одобрять и закрывать глаза на нее.
Кратко:
1) нашли уязвимости в либе a, которая со всем линкуется динамически - надо исправить баг 1 раз.
2) Нашли уязвимости в либе b, которая линкуется с чем-то динамически, но с n пакетами - статически(причем используются «вложенные» версии) - баг надо исправлять n раз, заодно потратив время на выяснение чему равно n
2) Нашли уязвимости в либе b, которая линкуется с чем-то динамически, но с n пакетами - статически(причем используются «вложенные» версии) - баг надо исправлять n раз, заодно потратив время на выяснение чему равно n
это не относится к либам говядины осиль сабж для начала почему наличие 2-х прелинков в системе не считается чем-то плохим, почему наличие 2-х кутей не считается чем-то плохим? а вот наличие 2-х ololo.lib.so вдруг стало проблемой - чойта? хватит сливать уже ответы отвечай, а не стрелы метай
Короче. Мы с тобой переливаем воду из пустого в порожнее уже 4 страницу треда из которого самое полезное что я вынес - это позицию waker'а, относительно deadbeef(за разъяснение которой хочу его поблагодарить). Как я уже сказал выше - я не являюсь членом QA team и поэтому некоторые мои утверждения возможно ошибочны, т.к. я мог почерпнуть их из устаревших источников и из неправильно понятой мною «принятой практики». Если тебе нужен четкие и однозначные ответы на твои вопросы - пиши на e-mail/в IRC членам QA team