Not only hard, but dangerous… due to the lack of “true” standards and creative usage of overly flexible formats. It’s an absolute nightmare to maintain compatibility and interoperability between various other media products, especially when you support a large list of formats like Firefly does today.
IMHO, I’d make it very low on the target list. It opens up a huge can of worms…
As a first-pass, I was actually thinking of saving new metainfo to the “side” of the file, and writing contrib scripts to merge saved metainfo back into the file. So it might be stored in a “.tag” file (or whatever) with the same name as the song.
Would be non-destructive, although messy.