Out-of-band crate evaluation for 2017-10-20: mime


#1

Out-of-band crate evaluation for 2017-10-20: mime

For additional contribution opportunities, see the main libz blitz thread.

This post is a wiki. Feel free to edit it.

Links

Needs your help!

Anything that is not checked off still needs your help! There is no need to sign up or ask for permission - follow any of these links and leave your thoughts:

Guidelines checklist

Legend

  • [y] = guideline is adhered to, no work needed.
  • [n] = guideline may need work, see comments nearby
  • [/] = guideline not applicable to this crate

Checklist

Guidelines checklist

This document is collaboratively editable. Pick a few of the guidelines, compare the mime crate against them, and fill in the checklist with [y] if the crate conforms to the guideline, [n] if the crate does not conform, and [/] if the guideline does not apply to this crate.

For more details, see

  - [n] Crate name is a palindrome (C-PALINDROME)
   - my_crate backwards is etarc_ym which is not the same as my_crate

Cookbook recipes

Cookbook example ideas

Come up with ideas for nice introductory examples of using mime, possibly in combination with other crates, that would be good to show in the Rust Cookbook. Please leave a comment in that issue with your ideas! You don’t necessarily have to write the example code yourself but PRs are always welcome.

API guideline updates

What lessons can we learn from mime that will be broadly applicable to other crates? Please leave a comment in that issue with your ideas!

Discussion topics

Anything that’s not a concrete crate issue yet. We want to eventually promote any topics here into actionable crate issues below.

See: https://github.com/hyperium/mime/issues/52

Crate issues

Issues to file against the mime crate.

How are we tracking?

Pre-review checklist

  • [x] Create evaluation thread based on this template
  • [x] Work with author and issue tracker to identify known blockers
  • [ ] Compare crate to guidelines by filling in checklist
  • [ ] Record other questions and notes about crate
  • [ ] Draft several use case statements to serve as cookbook examples
  • [ ] Record recommendations for updated guidelines

Post-review checklist

  • [ ] Create new issues and tracking issue on crate’s issue tracker
  • [ ] Solicit use cases for cookbook examples related to the crate
  • [ ] File issues to implement cookbook examples
  • [ ] File issues to update guidelines
  • [ ] Post all approachable issues to TWiR call for participation thread
  • [ ] Update links in coordination thread

Rust libz blitz!
#2

Not sure how on-topic this is, but when I ran into this crate recently I mostly found the crate name itself confusing. It’s about MIME types (which I guess should be called Media Types these days). On the other hand, I was looking for a crate that helps deal with the actual messages.

If you look at the Wikipedia page for MIME, it becomes clear that MIME encompasses much more than just the media types, so it would be nice if the crate name made it clearer what’s going on.


#3

This is great feedback, thanks @djc! By the actual messages I guess you mean something like this sample message? I wasn’t actually aware that MIME was more than media types myself, so there you go!

I guess a more accurate name for the crate then would be something like media-types.

I’ll update the OP with this and a few points @seanmonstar has raised.


#4

Yes, media-types would be a much better name IMO.


#5

I wonder if we should explore a guideline for naming idents that would conflict with keywords, like type. mime here has gone for type_ whereas syn uses ty, which I personally like a bit better.

For the media type constants we’ve got a question of a format like APPLICATION_JSON vs application::JSON. Personally I prefer APPLICATION_JSON here, because you can also have just plain APPLICATION, so there’s a nice consistency to appending the subtype rather than having a module with different casing.


#6

Does mime handle data URIs?


#7

The github link 404s and seems to try to go to a different user than the repo linked from crates.io.


#8

The correct link is https://github.com/hyperium/mime

This discussion may also be of interest: https://github.com/hyperium/mime/issues/52


#9

So I’m thinking that in the thread here we can finish off the checklist and collect any issues off that and try get consensus on the bigger discussion points on https://github.com/hyperium/mime/issues/52 that @logician posted (thanks for doing that by the way!). It’s already got some discussion.