Skip to content

A conjunctive licence expression carries a term 0103's set names in neither half #268

Description

@iderex

0103's licence set is an explicit enumeration with an admitted half and a refused
half. One expression in the graph 0243 decides on is in neither.

The evidence

Read in a scratch crate outside this tree declaring rustls = "0.23" and
rustls-platform-verifier = "0.7", with the toolchain rust-toolchain.toml
pins, resolving rustls v0.23.43 and rustls-platform-verifier v0.7.0:

cargo metadata --format-version 1 --locked | jq -r '.packages[] | "\(.name) \(.license)"' | grep unicode-ident
unicode-ident (MIT OR Apache-2.0) AND Unicode-3.0

The term is conjunctive rather than a dual offer, so 0103's sentence about a dual
offer does not reach it, and Unicode-3.0 is named in neither half of that
record's set:

git rev-parse origin/main
ded6d1fcbd9ad65b5a04fbf58c0a7d0e34dd2c10
git show origin/main:docs/decisions/0103-what-admits-a-dependency-and-what-is-refused.md | grep -c 'Unicode-3.0'
0

It is present on exactly two of the seven triples 0113 names, and it arrives
through a proc-macro rather than through anything linked into a client:

cargo tree -e normal --target TRIPLE --prefix none | grep -c '^unicode-ident'
aarch64-linux-android     3
armv7-linux-androideabi   3
aarch64-apple-ios         0
aarch64-apple-tvos        0
aarch64-apple-darwin      0
x86_64-pc-windows-msvc    0
x86_64-unknown-linux-gnu  0

Every other expression in that graph is satisfied by 0103's admitted set,
including the conjunctive ones, because every member of each conjunction is in
the set.

Why this needs answering rather than noting

The two triples are the Android phones, tablets and televisions, which
.github/targets/targets calls the widest single entry in the set. Until this is
answered, that half of the means 0243 decides is a dependency this board has not
licensed, and the answer is a change to 0103's enumeration rather than a judgement
somebody makes at a manifest.

The question is narrower than "is this licence acceptable". It is whether an
enumerated set can be applied to a conjunctive expression at all, since a
conjunction is satisfied only if every member is, and 0103's set was written for
a single term or a dual offer.

What this produces

A record naming what happens to a conjunctive licence expression carrying a term
the set does not name: admitted by extending the enumeration, refused, or
admitted for a package that reaches no client binary with the reason that
distinction is real.

Done when

The record is in docs/decisions/, unicode-ident is decided by it rather than
by a reading, and 0243's open collision is closed by name.

Metadata

Metadata

Assignees

Labels

decisionAn architecture decision that must be written down with its reasonslegalLicensing, data protection, and the intended-use position

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions