mime-types 3.0 for Ruby
21 / Nov 2015It’s almost a week later than I had planned, but I released mime-types for Ruby versions 2.99 and 3.0 today. These are hard releases to describe succinctly—there are no new features added to either one, but both are important and I am excited about what will come next.
mime-types 3.0
The release of mime-types 3.0 is a bit more complex. In mime-types 2.6, Jeremy Evans (of Sequel and Roda) implemented a columnar data store for the registry. This reduced the mime-types memory footprint on average 25% percent and in some cases much more. There was much rejoicing by people using Rails or the Mail gem. It’s a good change—but I still marked it experimental. I felt that there could be further improvements, and I was in the process of trying to figure out what mime-types 3.0 would look like.
Over the last few months, the changes and features for version 3 have been considered and reconsidered, and it came down to the following changes:
- Remove all data, methods, and parameters deprecated in mime-types 2.x.
- Move forward on Ruby compatibility, requiring Ruby 2.0 syntax support or better to run (issue #97).
- Relicense mime-types as MIT (issue #95).
- Extract the data from mime-types to permit independent iteration on the releases (as mime-types-data).
- As the release date was approaching, I also decided that it was important to add a code of conduct to the projects under the mime-types organization.
All of these objectives were achieved, and a number of issues were resolved in the process. More code was changed than is visible1, but there are no new features added in this release.
mime-types 2.99
The release of mime-types 2.99 is easier to describe: this release is made to
establish the end of life timeframe and to prepare users of the mime-types
library for mime-types 3.0 while getting the benefit of modern data. It falls
under the code of conduct adopted by the project, and all fields that were
deprecated under mime-types 2.x have been modified to return empty or nil
responses. It also marks the first of nine planned releases before mime-types
2.x reaches end of life (there may be additional releases if there is a
security issue found in mime-types 2.x). Those additional releases will be:
- 2.99.1 - February 2016
- 2.99.2 - May 2016
- 2.99.3 - August 2016
- 2.99.4 - November 2016
- 2.99.5 - February 2017
- 2.99.6 - May 2017
- 2.99.7 - August 2017
- 2.99.8 - November 2017 (EOL release for 2.x)
After 2.99.8, there will be no further releases of mime-types 2.x for any reason, and security release support ends on 2017-11-21.
mime-types 2.99 is still licensed under the original triple disjunctive license (MIT, Perl, and GNU GPL).
- The tests were completely rewritten so that I understood what my tests were actually doing. Some of the tests were ten years old and weren’t entirely relevant to mime-types 2.x or 3.x. ↩