I’m also supportive of making this behavior pluggable, and starting with an out-of-tree implementation.
I do think we need to extend ICompressor to differentiate between compression format and implementation to make this work nicely. A new QatZstdCompressor should be read and write compatible with in-tree ZstdCompressor, and a user should be able to enable QatZstdCompressor on a single node to evaluate it, without thinking about file compatibility.