Резюме
Недавно я разговаривал с создателем фреймворка, от которого зависит одно из моих приложений. Во время этого разговора он упомянул, что если бы я просто связал его фреймворк с моим приложением и предоставил конечному пользователю версию, которая, как я знал, была совместима с моим кодом, то это сделало бы мою жизнь проще. Интуитивно я всегда старался избегать этого, и, на самом деле, я старался сегментировать свой собственный код, чтобы его части можно было перераспределить, не занимая весь проект (даже когда имелся очень мало шансов, что кто-нибудь когда-либо повторно использует любой из Это). Однако, обдумав это в течение некоторого времени, я не смог придумать особенно вескую причину , почему я делаю это. На самом деле, теперь, когда я об этом подумал, я вижу довольно убедительный случай объединения всех моих меньших зависимостей. У меня есть список плюсов и минусов, и я надеюсь, что кто-то может указать на все, что мне не хватает.
1012 * Pros *
- Согласованность версий означает проще
тестирование и устранение неисправностей.
- Приложение может расшириться
аудитория, так как, кажется,
меньше компонентов для установки.
- Небольшие изменения в зависимости
легче сделать вниз по течению и
поставляется с приложением,
а не ждать их
просачиваться в исходную кодовую базу.
Минусы
- Более сложный процесс упаковки, чтобы включить
зависимостей.
- Пользователь может получить несколько копий
зависимости от их машины.
- Согласно ответу борцмейера, существуют потенциальные проблемы безопасности, связанные с невозможностью обновления отдельных компонентов.
Примечания
Для справки, мое приложение написано на Python, а зависимости, на которые я ссылаюсь, «легкие», под которыми я подразумеваю малое и не очень распространенное использование. (Таким образом, они не существуют на всех машинах или даже во всех репозиториях.) И когда я говорю «пакет с» моим приложением, я имею в виду распространение под моим собственным исходным деревом, а не установку со сценарием, который находится внутри моего пакета, поэтому не будет никаких шансов противоречивых версий. Я также занимаюсь разработкой исключительно для Linux, поэтому нет проблем с установкой Windows.
Несмотря на это, мне интересно услышать любые мысли по более широкой (не зависящей от языка) проблеме упаковочных зависимостей. Есть ли что-то, чего мне не хватает или это простое решение, которое я просто обдумываю?
Приложение 1
Стоит отметить, что я также весьма чувствителен к потребностям упаковщиков нижнего потока. Мне бы хотелось, чтобы было как можно проще заключить приложение в дистрибутив Deb или RPM.