Tatsuhiko Miyagawa's Blog

Milla, a Dist::Zilla profile that doesn’t suck (screencast)

March 27, 2013

Ok, that was a little link bait title.

I’ve been a big fan of Module::Install — it automatically figures out the metadata of my module with just all_from, and does the right thing creating META files. Then it bundles itself in inc/ so that if you install from CPAN you don’t need to have Module::Install pre-installed.

But not everybody likes it, especially contributors who need to install plugins before doing anything, or users who want to grab the latest from git.

The problem is, Module::Install is just a wrapper for MakeMaker, and MakeMaker and Module::Build are not the right tool to create a distribution.

Dist::Zilla is a pioneer in this field, to provide the complete authoring environment for the CPAN distribution, while having the ability to export MakeMaker/Module::Build compatible build files, so that end users don’t need to have that upon installation.

However Dist::Zilla kind of sucks. Well, that was a strong word — it has been coded and maintained actively, so it’s great. But its user experience could have a little improvements.

Milla is my first attempt to address that issue. It is a set of profile — PluginBundle, MintingProfile and command line wrapper, so that you can use it with almost zero-configuration and should do the right thing.

There’s some limitation and assumption that do not work for everybody, but at least for me I hope to replace 95% of my CPAN modules with Milla in the coming weeks.

Here’s a screencast to show you how to use it.

If you already have modules written with MakeMaker/Module::Install + ShipIt, see the Migration document for the details. I might make a new screencast just for the migration.

Hope you enjoy Milla. If you dislike the 195 dependencies it needs, check out our sister project Minilla as well.