List::M...ributing(3)

πŸ’… List::MoreUtils::Contributing(3) β€” the contributing guide, bestie edition

So this is a page from the User Contributed Perl Documentation for List::MoreUtils::Contributing, and it's basically the ✨vibe check✨ for anyone who wants to help out with List::MoreUtils. Strap in, it's a whole journey.


🌸 NAME

List::MoreUtils::Contributing β€” gives a rough introduction into contributing to List::MoreUtils. Rough as in "honest", not rough as in "bad". 🫢


πŸ¦‹ DESCRIPTION

Okay so real talk: List::Moreutils has a turbulent history and a strong approach. Before you go any further, bestie, please step over to the Open Source Contribution Etiquette page (<http://tirania.org/blog/archive/2010/Dec-31.html>) and then come back. It's giving required reading. πŸ“š

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. Not me picking favorites, it's just the plan. πŸ™ˆ

For the moment, it's not the primary goal to clean up the configuration stage until the primary goals and prerequisites are done. So don't @ the configure code, it's busy. πŸ’€

To contribute to List::MoreUtils, one has to arrange with the current situation, dig into details, and ask for clarifying when parts are incomprehensible. That's literally it. Ask questions. It's allowed. 🌈


πŸ‘‘ Primary Goals

The very first primary goal is to clear the backlog. These are primarily the open issues, feature requests and missing infrastructure elements. Slay, but make it a to-do list. βœ…

As an 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). Lowkey dramatic, honestly. 😭


🌟 Secondary Goals

Secondary goals are:

  • harmonizing the function names and calling convention (see RT#102673)
  • tidying the infrastructure of the distribution
  • removing unnecessary complexity (while protecting the necessary)

One example of removing unnecessary infrastructure could be to move Data::Tumbler and Test::WriteVariants into authoring mode, when an improved 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>) is a desirable one. Iconic, we stan. πŸ’–


🧚 Orientation Guide

The 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 at the begin of Makefile.PL. Tiny. Emulation. Layer. It's doing its best. πŸŽ€

Note: the original text says "t the begin of Makefile.PL" β€” we're keeping it as "at the begin of Makefile.PL" so it actually reads, but the Makefile.PL bit is character-for-character. 🫑

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 its base ExtUtils::CBuilder was never designed to support that kind of solutions β€” but there is Work In Progress. To finally solve issues as RT#75672 even in cross-compile environments β€” there is no way around such a checking tool. Periodt. πŸ”₯

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 in some cases β€” what is fully supported by the logic behind Data::Tumbler in combination with Test::WriteVariants. Big brain energy honestly. 🧠✨

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). Reduced quantity, full quality β€” that's the motto, ngl. πŸ’―


πŸ’œ SEE ALSO

  • Config::AutoConf
  • Data::Tumbler
  • Test::WriteVariants
  • ExtUtils::MakeMaker::Extensions

Go read them. Iykyk. πŸ‘‘


πŸ“ AUTHOR

Jens Rehsack <rehsack AT cpan.org>


Copyright 2015-2017 by Jens Rehsack

All code added with 0.417 or later is licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

All code until 0.416 is licensed 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.


✿ and that's the whole page, bestie ✿ β€” this was perl v5.42.0, dated 2020-10-22, and the page is List::M...ributing(3). Go contribute, you absolute main character. πŸ’…πŸ¦‹πŸ’–
πŸ“¦ where this page comes from