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.
This is a great thing!
Impressive progress since the last time I tried this module, congratulations to the author.
I was able to migrate my module to Dist::Zilla in an hour or so. The hardest part was to examine all the numerous plugins for it and decide which suites for me:
Everything "Just Worked" and its now so much easier to maintain the CPAN module. Highly recommended.
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.
The easiest way I found to streamline my CPAN releases.
It takes care of most of the work out-of-the-box, and the extensible architecture allows further tweaks like SCM integration (tagging the release).
1 hidden unhelpful review