The spec currently describes requirements (using terms like must, may, etc.), but some sections do not say who these requirements apply to. It's all passive voice.
For example, the spec says a valid Build.PL or Makefile.PL "must be present as a fallback". This looks like an authoring requirement, but is it? Or does it mean a cpan client must generate a Makefile.PL if none exists? Or does it mean a cpan client must check for the presence of such a file and error out if it isn't there?
Then: "It may be copied verbatim to from META.json." Does this mean an author should cp META.json Makefile.PL before creating a distribution tarball, or does it mean the cpan client should overwrite the existing Build.PL/Makefile.PL with data from META.json?
Then: "This action must be done during configure-time." What action is meant here? The "must be present" thing? That's technically not an action, but maybe it means "the Build.PL/Makefile.PL file must be present at configure time"? Or does it refer to the copying action, cp META.json Makefile.PL? But that's an optional action ("may"). Why is it now an absolute requirement ("must")? Or does it refer to the immediately preceding sentence of "The same may be done for MYMETA.yml/META.yml"? That's also optional (and the "may" part isn't even bolded).
The spec currently describes requirements (using terms like must, may, etc.), but some sections do not say who these requirements apply to. It's all passive voice.
For example, the spec says a valid
Build.PL
orMakefile.PL
"must be present as a fallback". This looks like an authoring requirement, but is it? Or does it mean a cpan client must generate aMakefile.PL
if none exists? Or does it mean a cpan client must check for the presence of such a file and error out if it isn't there?Then: "It may be copied verbatim to from
META.json
." Does this mean an author shouldcp META.json Makefile.PL
before creating a distribution tarball, or does it mean the cpan client should overwrite the existingBuild.PL
/Makefile.PL
with data fromMETA.json
?Then: "This action must be done during configure-time." What action is meant here? The "must be present" thing? That's technically not an action, but maybe it means "the Build.PL/Makefile.PL file must be present at configure time"? Or does it refer to the copying action,
cp META.json Makefile.PL
? But that's an optional action ("may"). Why is it now an absolute requirement ("must")? Or does it refer to the immediately preceding sentence of "The same may be done forMYMETA.yml
/META.yml
"? That's also optional (and the "may" part isn't even bolded).