Skip to content

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)

Edited by intrigeri
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information