Description
The EXCEPTIONS list lists license exceptions.
After reviewing a few of them, they seem to be out of date, and some that were copyleft are now permissive, and some have the proper license.
The purpose of this list is primarily to prevent non-permissively-licensed code from entering the Rust codebase, particularly the runtime. Permissively licensed code here effectively means "MIT or weaker", though as structured currently it actually makes anything without an MIT license an exception (BSD licenses are considered exceptions). This is fine and simplifies std's license (it's all MIT and most can be Apache, with the unfortunate exception of libbacktrace, which is BSD-3-Clause, and not represented in the exception list, potentially because of rust-lang/backtrace-rs#234).
They should all be re-triaged, and re-commented or removed from the exception list as appropriate. Here are some examples from a quick look:
- thread-id - now Apache-2.0/MIT, was Apache-2.0, no longer an exception
- ryu - now Apache-2.0/BSL-1.0 (nice decision @dtolnay w/ the permissive license + runtime exception). Still an exception per the rules in this file because it doesn't carry MIT. Aside: Apache-2.0/MIT/BSL-1.0 would be a good relicense for Rust. I'd prefer ryu be tri-licensed with MIT just for uniformity with the rest of the Rust MIT-licensed ecosystem.
- utf8parse - Apache-2.0/MIT, not an exception
- vte - Apache-2.0/MIT, not an exception