Skip to content

Formats to keep/remove for 1.0 #2908

@fintelia

Description

@fintelia

Another topic we should discuss ahead of 1.0 is what formats we want to include. Now that there's image-extras and decoding hooks, we can remove formats from this main crate without totally removing support if a small number of people are still relying on them.

We also have the option of making some formats behind a feature flag but not part of the default feature set.1


Looking at individual formats...

  • dds: Already moved to image-extras.

  • farbfeld: Another we should probably move to image-extras. I haven't come across anyone using this format who didn't add it because we did.

  • exr: This format is implemented via an external crate and has a relatively heavy dependency tree. We've gotten very little in the way of complaints / issues about this one, so I'm not sure how much it gets used? Another candidate to remove.

  • pnm: Not sure about this one. There's definitely a lot of references to PNM in older software. But I don't have a good sense of usage. And Split PNM ImageFormat into subformats for PBM, PGM, etc. #2841 raised the question of how to properly handle subformats which doesn't seem like it has a good option besides treating them as five different formats.

  • qoi: I'd somewhat lean towards keeping this one simply because it isn't too complex and I like the format. But maybe doesn't need to be enabled by default.

  • avif: Our current codecs have a pretty heavy dependency tree, and the decoder isn't enabled by default yet (since we're still waiting to switch to a Rust implementation). I think this could make sense behind a feature flag.

  • tiff: I think we'll want to keep support. Though as we add more functionality upstream like ZStandard compression and such, we might want to consider a feature flag?

  • bmp / gif / hdr / ico / jpeg / png / tga / webp: I think we want to keep all these.

Footnotes

  1. I've been reluctant to allow disabled-by-defaults formats in the past because I feared it would lead to pressure to add tons of obscure/rarely used formats. But I think that's less likely now that there's other avenues for them.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions