dzil is a very valuable tool if you have to maintain a significant number of CPAN or darkPAN distributions. Plugins allow to easily improve the quality of your packaging or to increase testing. Plugin bundles allow to standardize your packaging process across multiple projects, and this is very helpful as a CPAN author or in a company.
The IRC support (#dzil on irc.perl.org) is highly responsive and will help you to find a solution to any problem you may encounter.
Unfortunately support for perl < 5.14 has been suddently dropped with dzil 6.0, so I'm stuck with dzil 5.047 (from BackPAN) for a perl 5.10.1 only project until someone implements cross-perl testing.
A nightmare of undocumented behaviour, hundreds upon hundreds of dependency hells, and thousands upon thousands of exasperating quirks all rolled into one gigantic ball of wax. For added fun, many of the dependent modules don't even have their dependencies documented, so you end up in an endless trudge of searching through build logs to find out what dependency failed to install this time. I used Dist::Zilla once, for one module, and I went through about twenty cycles of trying to install dependencies by scraping though build logs. Even then it still would not install cleanly.
It simply is not possible that using this insanity can save anybody any time and effort, so the only conclusion I can come to is that this is some sort of shibboleth for authors or trendy club.
Dist::Zilla makes live easier for original author and hell for all others who want to contribute changes or just simply clone the git repository and update packages from the latest source.
$ cpanm git://github.com/rjbs/Dist-Zilla
Cloning git://github.com/rjbs/Dist-Zilla ... OK
--> Working on git://github.com/rjbs/Dist-Zilla
Configuring /tmp/HzDK1bjyWh ... N/A
! The distribution doesn't have a proper Makefile.PL/Build.PL See /home/user/.cpanm/work/1389790625.12074/build.log for details.
It makes Dist::Zilla broken as design and I strongly advise against using Dist::Zilla on GitHub and other public repositories.
More quotes against Dist::Zilla:
"That's why I stopped contributing to padre after two days wasting my time to distzilla caused problems."
"There have been times when i have intended to submit a patch and then decided not to for that reason."
"Git repositories of distzilla based packages are not usable for rpm packaging."
I love Dist::Zilla. The fact that I can do `dzil release` and Dist::Zilla does all the work of tagging in git, adding version numbers to the modules, running the tests, and uploading to CPAN makes my like so much easier and removes much of the typical human error that can happen when preparing a release.
I just started using Dist::Zilla, because rolling & releasing distributions was getting so onerous that I just couldn't keep up anymore. As a test case I switched Path::Class over to Dist::Zilla and I couldn't be happier. I've deleted so much! The README, the Build.PL, the manual lists of prerequisites, etc. etc. And my release has gotten better at the same time, because now I have the VERSION in the docs, I'm checking against Perl::Critic, my prereqs are in sync with the code, etc. etc.
If you use this module you'll probably run into quaint bugs or odd edge cases. You might also find that the documentation is lacking. All of this is being rapidly improved, especially with Ricardo's current grant work.
Despite those hurdles Dist::Zilla is worth it. If you configure it correctly (like I've done with Dist::Zilla::PluginBundle::AVAR) all the manual labor that goes into making a release can be managed by Dist::Zilla.
You'll never have to make sure to bump all your $VERSION variables, generate a README from your POD or tag the release Git & commit it afterwards. If you don't like the default behavior or would like something new then it's probably trivial to write a plugin that does what you want.
Before Dist::Zilla making releases was an error-prone and manual process. Now I just do `dzil test && dzil release' and it does everything I need it to.
I've used, I think, all of the various packages there are for producing a package to upload to CPAN. None of them can hold a candle to Dist::Zilla. I will be switching all my current and future modules to use Dist::Zilla.
In addition, I had a problem with trying to exclude some files from my package. I didn't know if it was a bug or just me being a noob with Dist::Zilla. I posted to the mailing list, and Ricardo and I went back and forth a bit and discovered it was a bug. And that very same day he released a new version that fixed the problem. Absolutely amazing.
If there were anything to ding about this module it's simply that the plugins don't provide much in the way of documentation. Not that they need a lot, but they could use a bit more than they have. That's probably something users of Dist::Zilla (like myself) could easily contribute.
Overall, Dist::Zilla is an amazing package, and should be used by everybody going forward.
As a beginner CPAN author, I was worried about not getting the distribution building right: Makefiles, META.yaml, Manifest, Manifest.SKIP, tarring, uploading, license, etc. Thank god I found this module. Just copied the dist.ini from the synopsis, fiddled with it a litte bit, ran dzil test, dzil build, dzil release and I was done. It doesn't get any easier than this.