Debloated distribution: base-modules-doc #328
Description
Hi
In company I'm working for we use Docker extensively.
One of the issues we're struggling with is the fact that Perl package became huge bloatware - full installation size exceeds 50MB and consists of:
- 2MB Perl interpreter itself
- 5MB core stuff (unicode definitions, common pragmas)
- 0.5MB of weird tools (zipdetails, perlivp, ...)
- 0.5MB of diagnostic tools (perlbug, podchecker, ...)
- 45MB of 350(!) CPAN modules (some of them like Memoize::NDBM_File are included without evaluation of nowadays usage stats, some made obsolete by better alternatives like Time::Piece vs DateTime, some like Tap::* or Pod::* namespaces are used only during development and make no sense on production machines).
- 7 MBs of PODs and manpages
This "distribution" approach made sense in 90's, when internet connection was not common / slow and it was reasonable to provide user as feature-rich ecosystem as possible for local installation. However in Docker service-oriented environments this bloats FS layer in every container that wants to use cperl by 50 MB, which causes slow production deploys and docker-compose pulls for developers to get updated environment. Not to mention it looks bizarre if 50MB Perl package is applied to 5MB Alpine container for example :)
My humble request is to add bare core installation option to Makefile: interpreter + unicode defs + pragmas + minimal set of modules required to get cpanm rolling. Something like Debian did with splitting Perl distribution into perl-base, perl-modules and perl-doc: https://packages.debian.org/search?keywords=perl-base . It's much more easier nowadays to compose slim and well-tuned environment directly from CPAN than to clog every service with hundreds of modules and scripts bundled with Perl that will never be used.
Thanks!