Dist::Zilla For Everyday Code



Dist::Zilla For Everyday Code

0 0


Dzil-Deck

Slides for my Dist::Zilla presentation

On Github thaljef / Dzil-Deck

Dist::Zilla For Everyday Code

Dist::Zilla Is...

  • A preprocessor
  • A workflow framework
  • Not a build system, per se

Why Use Dist::Zilla?

  • Reduce boilerplate
  • Automate dev processes
  • Enforce consistency

But Why Bother?

  • Development happens in stages
  • E.g. author, test, distribute, install, run, etc.
  • Organize and optimize code for each stage
  • Divide big things into smaller ones
  • Dependency management
  • Enable automation

Reducing Boilerplate

  • Inject $VERSION
  • Generate tests
  • Generate builders
  • Inject POD

Automate Dev Processes

  • Check in and tag code
  • Check that dependencies are indexed
  • Check that change log has (valid) content
  • Check that all tests pass
  • Send emails, update wiki, tweet, etc.
  • Ship code to CI, QA, or PROD

Enforce Consistency

  • Automate stuff we forget or dislike
  • Write once, regenerate everywhere

DEMO

Other Features

  • Bootstrapping (listdeps, authordeps)
  • Plugin bundles
  • Minting
  • Profiles

Drawbacks

  • Requires more tools
  • Is another layer of abstraction
  • Sometimes too opaque
  • Requires trust

Alternatives

  • Module::Starter
  • Dist::Milla
  • Minilla
  • Zilla::Dist

Architecture

  • Moose
  • Large collection of Roles
  • Divided into stages (BeforeBuild, AfterTest, etc.)
  • Sophisticated configuration language and engine
  • Excellent study in metaprogramming and extensibility

Additional Resources

  • http://dzil.org
  • #dzil on irc.perl.org
  • Dist::Zilla::PluginBundle::AUTHOR