Last active
December 15, 2021 05:42
-
-
Save zbraniecki/c42d24eb55983904cf4f2a3d3b59ea2a to your computer and use it in GitHub Desktop.
ICU4X Licenses (Dec 2021)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## Current Library Structure in the repo | |
// | |
├─ components/ | |
│ ├─ component1/ | |
│ │ ├─ src/ | |
│ ├─ component2/ | |
│ │ ├─ src/ | |
│ │ ├─ data/ | |
│ │ │ ├─ from_unicode/ | |
│ ├─ component3/ | |
│ │ ├─ src/ | |
│ │ ├─ tools/ | |
│ │ │ ├─ from_icu/ | |
├─ utils/ | |
│ ├─ util1 | |
│ │ ├─ src/ | |
│ ├─ util2 | |
│ │ ├─ src/ | |
LICENSE-FULL = Apache+MIT + ICU for imported + Unicode for data | |
========================== | |
In this scenario, only library called `component2` has data from Unicode and only `component3` has code from ICU. | |
This means that the LICENSE as written is APACHE+MIT on everything plus ICU for `component3` and Unicode for `component2`. | |
But the way we distribute all of those libraries is this: | |
// | |
├─ components/ | |
│ ├─ component1/ | |
│ │ ├─ src/ | |
│ │ ├─ LICENSE-FULL.txt | |
│ ├─ component2/ | |
│ │ ├─ src/ | |
│ │ ├─ data/ | |
│ │ │ ├─ from_unicode/ | |
│ │ ├─ LICENSE-FULL.txt | |
│ ├─ component3/ | |
│ │ ├─ src/ | |
│ │ ├─ tools/ | |
│ │ │ ├─ from_icu/ | |
│ │ ├─ LICENSE-FULL.txt | |
├─ utils/ | |
│ ├─ util1 | |
│ │ ├─ src/ | |
│ │ ├─ LICENSE-FULL.txt | |
│ ├─ util2 | |
│ │ ├─ src/ | |
│ │ ├─ LICENSE-FULL.txt | |
LICENSE-FULL = Apache+MIT + ICU for imported + Unicode for data | |
That means that we ship two utils and three components each saying that they're Apache+MIT | |
plus ICU *if there is data* and Unicode *if there is imported ICU code*. Those `ifs` are true | |
just for `component2` and `component3` but we carry them in each library and let the user notice | |
that nothing is covered by those last two parts. | |
===== PROPOSAL ==== | |
// | |
├─ components/ | |
│ ├─ component1/ | |
│ │ ├─ src/ | |
│ │ ├─ LICENSE-APACHE-MIT.txt | |
│ ├─ component2/ | |
│ │ ├─ src/ | |
│ │ ├─ data/ | |
│ │ │ ├─ from_unicode/ | |
│ │ ├─ LICENSE-FULL.txt | |
│ ├─ component3/ | |
│ │ ├─ src/ | |
│ │ ├─ tools/ | |
│ │ │ ├─ from_icu/ | |
│ │ ├─ LICENSE-FULL.txt | |
├─ utils/ | |
│ ├─ util1 | |
│ │ ├─ src/ | |
│ │ ├─ LICENSE-APACHE-MIT.txt | |
│ ├─ util2 | |
│ │ ├─ src/ | |
│ │ ├─ LICENSE-APACHE-MIT.txt | |
LICENSE-FULL = Apache+MIT + ICU for imported + Unicode for data | |
LICENSE-APACHE-MIT = Apache+MIT | |
With this change, we now distribute `util1`, `util2` and `component1` with zero friction with | |
the Rust community under dominant license scheme and only the relevant `component2` and `component3` | |
are affected by our unique licensing scheme. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment