.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35)
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" Set up some character translations and predefined strings.  \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
.\" nothing in troff, for use with C<>.
.tr \(*W-
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
.    ds -- \(*W-
.    ds PI pi
.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
.    ds L" ""
.    ds R" ""
.    ds C` ""
.    ds C' ""
'br\}
.el\{\
.    ds -- \|\(em\|
.    ds PI \(*p
.    ds L" ``
.    ds R" ''
.    ds C`
.    ds C'
'br\}
.\"
.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\"
.\" If the F register is >0, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
.\" entries marked with X<> in POD.  Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.\"
.\" Avoid warning from groff about undefined register 'F'.
.de IX
..
.nr rF 0
.if \n(.g .if rF .nr rF 1
.if (\n(rF:(\n(.g==0)) \{\
.    if \nF \{\
.        de IX
.        tm Index:\\$1\t\\n%\t"\\$2"
..
.        if !\nF==2 \{\
.            nr % 0
.            nr F 2
.        \}
.    \}
.\}
.rr rF
.\" ========================================================================
.\"
.IX Title "List::MoreUtils::Contributing 3pm"
.TH List::MoreUtils::Contributing 3pm "2019-10-18" "perl v5.30.0" "User Contributed Perl Documentation"
.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
.nh
.SH "NAME"
List::MoreUtils::Contributing \- Gives rough introduction into contributing to List::MoreUtils
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
List::Moreutils has a turbulent history and a strong approach. Before
going further, please step to
Open Source Contribution Etiquette <http://tirania.org/blog/archive/2010/Dec-31.html>
and then come back.
.PP
The current distribution is a balance between finishing the history and
claiming for future requirements. Therefore some components will receive
a rewrite on purpose \- others won't.
.PP
For the moment \- it's not the primary goal to clean up the configuration
stage, until the primary goals and prerequisites are done.
.PP
To contribute to List::MoreUtils, one has to arrange with the current
situation, dig into details and ask for clarifying when parts are
incomprehensible.
.SS "Primary Goals"
.IX Subsection "Primary Goals"
The very first primary goal is to clear the backlog. These are primarily
the open issues, feature requests and missing infrastructure elements.
.PP
As example see RT#93207 or RT#75672 for missing configure time checks,
while RT#93207 radiates until test \- but doesn't affect runtime nor
installation (beside test failures).
.SS "Secondary Goals"
.IX Subsection "Secondary Goals"
Secondary goals are harmonizing the function names and calling convention
(see RT#102673), tidying the infrastructure of the distribution and remove
unnecessary complexity (while protecting the necessary).
.PP
One example of removing unnecessary infrastructure could be to move
Data::Tumbler and Test::WriteVariants into authoring mode, when
imrpoved test for RT#93207 could be reasonably done by a module which
is recommended for test. The recommendation of
Graham Knop's Makefile.PL#L82 <https://github.com/haarg/List-MoreUtils/blob/dd877f963deead742fc90005636c72c6be9060fc/Makefile.PL#L82>
in PR#9 <https://github.com/perl5-utils/List-MoreUtils/pull/9> a desirable
one.
.SS "Orientation Guide"
.IX Subsection "Orientation Guide"
List::MoreUtils configuration stage heavily depends on Config::AutoConf
and Data::Tumbler. A few prerequisites of both modules aren't available
for Perl 5.6 \- which leads to a tiny emulation layer t the begin of
\&\f(CW\*(C`Makefile.PL\*(C'\fR.
.PP
The reason for Config::AutoConf is quite simple \- the opportunities
for checking the environment cover a much wider range than a simple test
whether there is a working compiler. It requires a lot of improvements
since it's fundament ExtUtils::CBuilder was never designed to support
that kind of solutions \- but there is \fIWork In Progress\fR. To finally
solve issues as RT#75672 even in cross-compile environments \- there is
no way around such a checking tool.
.PP
The reason for Data::Tumbler in combination with Test::WriteVariants
are extensible tests with reasonable effort and easy figuring out which
extra condition causes failures. Also \- missing pre-conditions should
result in failing tests i some cases \- what is fully supported by the
logic behind Data::Tumbler in combination with Test::WriteVariants.
.PP
Finally \- inc::latest glues the stuff in a bundle together to allow
people with older toolchains to use List::MoreUtils out of the box (maybe
with reduced quantity but full quality).
.SH "SEE ALSO"
.IX Header "SEE ALSO"
Config::AutoConf, Data::Tumbler, Test::WriteVariants,
ExtUtils::MakeMaker::Extensions
.SH "AUTHOR"
.IX Header "AUTHOR"
Jens Rehsack <rehsack \s-1AT\s0 cpan.org>
.SH "COPYRIGHT AND LICENSE"
.IX Header "COPYRIGHT AND LICENSE"
Copyright 2015,2016 by Jens Rehsack
.PP
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself, either Perl version 5.8.4 or,
at your option, any later version of Perl 5 you may have available.
