Le 2012-02-28 07:29:24, jeff@imaginative-software.com a écrit :
Show quoted text> I haven't adopted the habit of putting D::Z plugins in my
> distribution. And I doubt I ever will.
This doesn't have to be a habit.
But it is the right and only way to make distribution content generation
as part of a D::Z build process. Bundling custom D::Z plugins in inc/ is
the D::Z counterpart of M::B subclassing.
Show quoted text> This whole discussion about the MANIFEST leads me to think that the
> development model for M::B and EU::MM is somewhat out of date.
> Both of them treat the distribution as something that can be re-
> packaged and re-released. In the past that was usually true, and
> it helped the open source community build itself.
>
> But these days, modern development uses a lot of tools to generate
> code. So the code that is in the distribution could be a long way
> from what was actually authored. Unless I ship the distribution
> with all the authoring tools that I used, then users can't re-
> package the code without getting those same tools for themselves.
The CPAN archive is the only thing I trust because I know it will be
kept forever. But I usually do not trust an author source code
repository due to its relative lifetime. Just see how hundreds of Marcel
Grünauer repositories disappeared one day from GitHub because he decided
to quit. Or see how an author may change of VCS because he prefers it
(at one point Dave Rolsky used Mercurial which almost nobody else is
using in the Perl community).
So I think that any CPAN distribution should be rebuildable from its own
content plus the BackPAN.
This is why I was describing how to do that with D::Z in a way that
still makes the distribution usable and rebuildable without direct
access to the source code repository.
The current M::B-based process is fine too. I have no problem with it
(except that extending M::B for authoring purpose makes the maintenance
of M::B harder). I'm using that myself for my Number::Phone::FR
distribution (which also has code generation) until the day I will take
time to migrate it to D::Z.
Show quoted text> I don't think this is evil -- it's just progress. The development
> process is more sophisticated and the tool chain is longer than it
> used to be. But I don't think I'd want to ship my dist with D::Z
> plugins for the same reasons that I don't ship it with make or vim.
The current trend is to separate the build tools from the install tool.
Our install tools are now big beasts because they are also authoring tools.
I have good hope for Module::Build::Tiny. I plan to work on that at the
QA Hackathon.
Show quoted text> These days, patching is done against the VCS, not the distribution[1].
> So I feel that aspiring to make your distribution re-packagable to
> end users is a noble goal, but it is increasingly impractical. In
> that light, I don't feel so guilty about contorting the default
> M::B and EU::MM workflow to suit our needs. As long as it builds
> "the right way" for end users, then all is well.
You seem to separate the world in two categories:
- committers
- "end users": users of the CPAN distribution
I think that you omit one important category: the occasionnal patch
submitter like myself. (S)He's not a committer on the project. (S)He may
not be familiar with the VCS you are using.
Show quoted text> So after much though, I've concluded
> that I do not agree with Schwern about these so-called "static
> generated files". I generally do believe the in "version control
> dogma" that you should never commit something that you can
> generate.
I'm also of this point of view.
And especially because the generated file depends on the version of the
tool that generates it. For example, META.json is not created by M::B if
you have no JSON module, and so will not be in MANIFEST in that
environment. Think also to differences of default end-of-line
(PolicySummaryGenerator use platform EOL instead of using a fixed Unix
style, so the build toolchain is not portable on Win32).
So generated files in a VCS are painful when different developers have
different tool versions that you can't control.
Of course committing those files can also help to be aware of those
differences, but often with pain.
--
Olivier Mengué -
http://perlresume.org/DOLMEN