Config::MVP v1, Dist::Zilla v4, documentation, and conferences

YAPC is only about three weeks away, and I have a lot of work to do on my presentation material. I’m giving three presentations: one on Perl 5.12, one on Git, and one on Dist::Zilla. The Dist::Zilla talk will also be presented at OSCON. I’ve been working feverishly to get prepared for those talks, but not by writing presentation material.

Instead, I’ve been working on Dist::Zilla itself. I want to make a lot of improvements to dzil new before I give the presentation, and that means finishing a lot of long-standing work on the internal configuration system. Once that refactoring is done, I can add a proper interface to “global configuration” for config shared between projects. Then there will still be lots more room to improve the config system, but more importantly I can make dzil new really easy to use.

Getting these changes into Dist::Zilla (which will be Dist::Zilla v4 when this set of changes is landed) has been a significant amount of work, not just to Dist::Zilla but also to Config::MVP, its external configuration loading system. I’m very happy with the last few changesets, which introduced finalization, temporary references back up from sections to sequences to assemblers, and an overhauled API for writing configuration readers.

Because of these changes, the global-config branch of Dist::Zilla has replaced a bunch of ugly code with much saner and simpler code. It also can register each plugin as its configuration section is read, rather than loading all config, then registering all plugins. The next step is to have non-Plugin configuration entries, primarily for storing data only. A section, for example, could store your PAUSE credentials. You might store them in a global (to your user) file in ~/.dzil, but override that section on a per-project basis in dist.ini in your dist.

Unfortunately, all these changes have made documentation wrong. When I have noticed the incorrect documentation (and I think I’ve noticed just about all of it as I worked), I deleted it. So, now there’s less documentation of Config::MVP again. Fortunately, I’ll have plenty of time to redocument it when I’m preparing a presentation on Dist::Zilla! My current plan, though it may change, is to use most of my “free time” at YAPC and OSCON writing docs rather than code. We’ll see how that goes.

At any rate, I’m very happy with the progress toward an improved global configuration system, especially because I know the milestones that will appear next.

Written on May 26, 2010
distzilla   perl   programming