"Blead-upstream" versus "CPAN-upstream"

Perl ships with a large number of libraries mainly written in the form of modules (*.pm files).

lib/ and ext/ Modules

Many of these libraries have no existence independent of the Perl 5 core distribution. Those are found in the lib/ and ext/ directories in the core distribution.

$ find lib -type f -name '*.pm' | sort | head -n 5
lib/AnyDBM_File.pm
lib/B/Deparse.pm
lib/Benchmark.pm
lib/blib.pm
lib/B/Op_private.pm

$ find ext -type f -name '*.pm' | sort | head -n 5
ext/Amiga-ARexx/ARexx.pm
ext/Amiga-Exec/Exec.pm
ext/attributes/attributes.pm
ext/B/B/Concise.pm
ext/B/B.pm

Dual-Life: cpan/ Modules

Others -- the two flavors of the so-called "dual-life" distributions -- can and often do have an independent existence on CPAN. For some -- those found in the cpan/ directory in core -- the source code is primarily maintained upstream on CPAN.

$ find cpan -type f -name '*.pm' | sort | head -n 5
cpan/Archive-Tar/lib/Archive/Tar/Constant.pm
cpan/Archive-Tar/lib/Archive/Tar/File.pm
cpan/Archive-Tar/lib/Archive/Tar.pm
cpan/autodie/lib/autodie/exception.pm
cpan/autodie/lib/autodie/exception/system.pm

These libraries have designated maintainers and releasors like any CPAN library. Their bugs are tracked outside of the core distribution's issue tracker, generally on either RT or on GitHub. Examples:

Bug Tracker on rt.cpan.org

Issue Tracker on GitHub

Their code is intended to be installable against many older versions of perl and is tested for that installability on CPANtesters. Example:

Test-Simple on CPANtesters

These libraries, which we refer to as cpan-first or cpan-upstream, periodically get new versions released to CPAN; only later are they "synched" into the core distribution.

Dual-Life: dist/ Modules

There's another kind of dual-life distribution, which we refer to as blead-first or blead-upstream. Changes to these libraries are made first inside the Perl 5 core distribution and only later released to CPAN. Their bugs are tracked in the core distribution's issue tracker. These distributions are found underneath the dist/ directory in the core distribution.

$ find dist -type f -path '*lib/*' -name '*.pm' | grep -v 't/lib' | sort | head -n 5
dist/Attribute-Handlers/lib/Attribute/Handlers.pm
dist/autouse/lib/autouse.pm
dist/base/lib/base.pm
dist/base/lib/fields.pm
dist/Carp/lib/Carp/Heavy.pm

There are both advantages and disadvantages to having a given dual-life library be 'cpan-first' or 'blead-first'. Whether a particular dual-life library is 'cpan-first' or 'blead-first' is often due to historical contingencies rather than any overpowering logic. In either case, the rationale for a separate CPAN release of a library that ships with core is that improvements to such a library may be of significant benefit to people running older versions of perl in production. (How sound is that rationale? That's a topic for another post.)