Port tails-iuk to a more lightweight set of dependencies
tails-iuk and a couple of tails-perl5lib Perl modules it uses are the last pieces of Tails code we have that are implemented using Moose + Method::Signatures::Simple + Path::Class. Everything else was ported to a more lightweight stack (Moo + Function::Parameters + Path::Tiny) already.
Porting this remaining code to the stack we’re using in the rest of our codebase has a number of advantages:
- less RAM consumption at runtime: I’ve measured 30MB saving just for the frontend process; presumably every child process sees similar gains; at most stages of the upgrade we run 2 such processes at any given time, so this translates to 50+ MB savings.
- shorter feedback loop while working on this codebase: I’ve measured 25-45% shorter test suite runs in iuk.git, keeping in mind that a lot of the time spent that’s left is spent on the test suite machinery (generating SquashFS, tarballs, etc.) and not in the code paths that our users run
- more consistent codebase, so I don’t have to wonder how subtle differences between Moo and Moose impact the Perl code I’m modifying
- slightly smaller ISO and USB images: Moose and friends pull a lot of dependencies in our images; in 4.0~rc1, APT tells me that recursively deinstalling this set of dependencies saves 8.2 MB (uncompressed); granted, this probably does not translate to significant savings once SquashFS’ed but every byte counts
- tighter scope for my volunteer work in the Debian Perl group: I can focus on the Moo ecosystem instead of Moo + Moose
That’s something I’ve been wanting to do for 5 years (#6876-note_1) and given I’ll soon have to work quite a bit on this codebase for #15281, I figured I would spend a rainy Sunday implementing it on my copious volunteer free time ().
Feature Branch: feature/17152-port-to-moo, iuk:feature/17152-port-to-moo, perl5lib:feature/17152-port-to-moo
Parent Task: #6876
Original created by @intrigeri on 17152 (Redmine)