Каковы сильные / слабые стороны ShipIt vs Dist::Zilla?

Я начал использовать Dist::Zilla несколько месяцев назад. Однако в YAPC::NA кто-то упомянул, что они используют ShipIt вместо этого. Затем сегодня я заметил файл.shipit в каталоге cpanminus miyagawa на github, поэтому я решил изучить его еще...

У меня первоначальное впечатление, что у ShipIt есть подмножество того, что доступно с Dist::Zilla, но я не хочу делать поспешные выводы. Итак, каковы сильные и слабые стороны ShipIt vs Dist::Zilla для тех, кто имел опыт работы с обоими?

кросспост в перлмонках

2 ответа

Решение

Я автор Dist::Zilla.

Я довольно тщательно оценил ShipIt, прежде чем пойти дальше и написать Dist::Zilla, и изначально они охватывали почти точно то же самое проблемное пространство: выполняли всю скучную тяжелую работу по созданию и загрузке дистрибутива CPAN. Все функции, которые Dist:: Zilla теперь имеет за пределами ShipIt, являются более поздними дополнениями, более или менее.

Если вам нужны только функции ShipIt, я все же советую вам строго рассмотреть Dist:: Zilla по одной очень простой причине: возможность взлома. Если бы я был в состоянии не написать что-то новое, я бы использовал ShipIt, но я обнаружил, что он недостаточно документирован и его сложно расширять. Его плагины не были достаточно универсальными, а основное поведение делало слишком много предположений о том, как вы хотели бы работать.

Dist:: Zilla был вдохновлен именно этой проблемой: он превратил все в плагин, и каждый плагин получил очень, очень маленький интерфейс, чтобы его предположения были принудительно ограничены.

Одно из преимуществ ShipIt по сравнению с Dist:: Zilla заключается в том, что ShipIt не имеет (насколько мне известно) никаких плагинов, которые бы изменили способ написания вашего кода. Это означает, что ваша документация будет выглядеть так же, у вас все равно будет Makefile.PL, и так далее. Некоторым хакерам не нравится, что так много дисков, основанных на DZ, в корне меняют представления о том, как тестировать и создавать код CPAN из его исходного репозитория. ShipIt никогда не изменит это.

Можно избежать использования любых таких плагинов с Dist::Zilla, но в целом мой опыт показывает, что люди используют их, почти всегда, в той или иной форме.

Насколько я могу судить, мои первые впечатления были правильными.

ShipIt предоставляет функциональность для выпуска дистрибутивов:

  • отслеживание номеров версий
  • интеграция с контролем версий
  • загрузка в CPAN
  • отображение файла журнала изменений в редакторе, чтобы вы могли редактировать его перед выпуском.


По умолчанию Dist::Zilla предоставляет возможность загружать дистрибутивы в CPAN с помощью одной команды (т.е. dzil release). Dist::Zilla также имеет функциональность для создания новых дистрибутивов (т.е. dzil new My::New::Module). Он также автоматически генерирует так много файлов, которые мне приходилось поддерживать вручную.

Используя плагины, Dist::Zilla может предоставить большую часть, если не всю, функциональность, доступную в ShipIt. Также относительно легко добавлять новые функции с помощью плагинов.

Другие вопросы по тегам