This issue was automatically generated. Feel free to close without ceremony if
you do not agree with re-licensing or if it is not possible for other reasons.
Respond to @cmr with any questions or concerns, or pop over to
#rust-offtopic on IRC to discuss.
You're receiving this because someone (perhaps the project maintainer)
published a crates.io package with the license as "MIT" xor "Apache-2.0" and
the repository field pointing here.
TL;DR the Rust ecosystem is largely Apache-2.0. Being available under that
license is good for interoperation. The MIT license as an add-on can be nice
for GPLv2 projects to use your code.
The MIT license requires reproducing countless copies of the same copyright
header with different names in the copyright field, for every MIT library in
use. The Apache license does not have this drawback. However, this is not the
primary motivation for me creating these issues. The Apache license also has
protections from patent trolls and an explicit contribution licensing clause.
However, the Apache license is incompatible with GPLv2. This is why Rust is
dual-licensed as MIT/Apache (the "primary" license being Apache, MIT only for
GPLv2 compat), and doing so would be wise for this project. This also makes
this crate suitable for inclusion and unrestricted sharing in the Rust
standard distribution and other projects using dual MIT/Apache, such as my
personal ulterior motive, the Robigalia project.
Some ask, "Does this really apply to binary redistributions? Does MIT really
require reproducing the whole thing?" I'm not a lawyer, and I can't give legal
advice, but some Google Android apps include open source attributions using
this interpretation. Others also agree with
it.
But, again, the copyright notice redistribution is not the primary motivation
for the dual-licensing. It's stronger protections to licensees and better
interoperation with the wider Rust ecosystem.
To do this, get explicit approval from each contributor of copyrightable work
(as not all contributions qualify for copyright, due to not being a "creative
work", e.g. a typo fix) and then add the following to your README:
## License
Licensed under either of
* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
* MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
at your option.
### Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any
additional terms or conditions.
and in your license headers, if you have them, use the following boilerplate
(based on that used in Rust):
// Copyright 2016 gfx Developers
//
// Licensed under the Apache License, Version 2.0, <LICENSE-APACHE or
// http://apache.org/licenses/LICENSE-2.0> or the MIT license <LICENSE-MIT or
// http://opensource.org/licenses/MIT>, at your option. This file may not be
// copied, modified, or distributed except according to those terms.
It's commonly asked whether license headers are required. I'm not comfortable
making an official recommendation either way, but the Apache license
recommends it in their appendix on how to use the license.
Be sure to add the relevant LICENSE-{MIT,APACHE} files. You can copy these
from the Rust repo for a plain-text
version.
And don't forget to update the license metadata in your Cargo.toml to:
license = "MIT OR Apache-2.0"
I'll be going through projects which agree to be relicensed and have approval
by the necessary contributors and doing this changes, so feel free to leave
the heavy lifting to me!
To agree to relicensing, comment with :
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
Or, if you're a contributor, you can check the box in this repo next to your
name. My scripts will pick this exact phrase up and check your checkbox, but
I'll come through and manually review this issue later as well.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0
license, allowing licensees to chose either at their option.
On 11 Jan 2016 16:13, "red75prime" [email protected] wrote:
I license past and future contributions under the dual MIT/Apache-2.0
license, allowing licensees to chose either at their option.—
Reply to this email directly or view it on GitHub
https://github.com/gfx-rs/gfx/issues/847#issuecomment-170422297.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I approve the relicensing of my contributions.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
Pinging due to @-mention limit:
@jahfer
@leonkunert
@mzmonsour
@ReadmeCritic
@AnthIste
@sbward
@alexcrichton
@tomjakubowski
@yuriks
@gaudecker
@ahtn
@qres
@tioover
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to choose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
Ping:
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
Ping
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
Is it still realistical that gfx can move to the dual licensing scheme? I'm seeing 130 contributors to the repo right now, and only 63 people listed in this issue. Also, any new contributor would have to sign this off. I think if you want to pull this through, you should put a note into the README that any future contributions will have to be dual licensed.
Unfortunately, IANAL. @est31 do you think it is possible for us to announce that we are transitioning to a new license, and every contributor has, let's say 10 days, to express their objections?
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
@kvark IANAL either so I can't say anything definite, but I don't think that not giving an answer qualifies as consent in this case. What you can do however is to remove components written by people who didn't agree or who you couldn't reach and get them replaced or rewritten.
As gfx keeps getting more successful (a very good thing!) this licensing move keeps getting harder and harder.
A good plan for a grown project like this is to:
There will most likely be a long tail, people going to vacation, some completely leaving github, etc etc.
@est31 thank you, this is very helpful!
I updated the README by adopting the pieces from the one you linked.
One thing is not clear to me. If we can remove/rewrite any contributions of authors who don't give their consent, can we then only be concerned about authors who have at least a single line of the actual master branch (as opposed to all the contributors)? This is super important because the code base has mostly been rewritten, and we don't have nearly as many contributions left as the statistics may imply.
I'd also wonder if you know the tools at hand that would gather us the list of authors having at least a single line of code.
Running the (adopted) bash command from stackoverflow
git ls-tree -r -z --name-only HEAD -- . | xargs -0 -n1 git blame --line-porcelain HEAD |grep "^author " -a|sort|uniq -c|sort -nr
on 4dfa4f1f80ede68b5c0c77b1847791ef42aecb35 gives me 68 lines, so a considerably smaller list of people. Exchanging author with author-mail gives e-mail addresses. This blame based approach isn't perfect of course, some authors may slip through the cracks. E.g. someone contributes, and someone else then runs rustfmt. In blame, only the rustfmt change will show up. In the end all things are approximations of the perfect. I don't know of anything better (other than manually checking whether someone's contributions have really all disappeared already which is quite a large task). Your choice :).
Finding out github usernames is a bit tough, as github's api doesn't have a function that for a given email gives you an username. However there is a trick that I've done by searching for commits by those authors instead, and the github account is part of the json response of the github API see this post for more (you'll probably have to obtain an api token and send it along your requests). That particular command has obtained everyone who ever contributed which is different though.
Obligatory IANAL, due to the fact I've made a few judgment calls as to whether something is copyrightable. I've sat down and gone through the list of every committer and these are the people left as far as I have worked out. I have a spreadsheet with more information, however, I won't share it here as it contains some reasonably private information.
I also have most peoples email addresses if it ever needs to be stepped up a notch but I am currently unsure of the best way to go about doing that.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0
license, allowing licensees to chose either at their option.
On 19 March 2018 at 16:33, AIOOB notifications@github.com wrote:
Obligatory IANAL, due to the fact I've made a few judgment calls as to
whether something is copyrightable. I've sat down and gone through the list
of every committer and these are the people left as far as I have worked
out. I have a spreadsheet with more information, however, I won't share it
here as it contains some reasonably private information.I also have most peoples email addresses if it ever needs to be stepped up
a notch but I am currently unsure of the best way to go about doing that.
- @ahmedaliadeel https://github.com/ahmedaliadeel
- @AIOOB https://github.com/aioob
- @alexheretic https://github.com/alexheretic
- @AlphaModder https://github.com/alphamodder
- @Androcas https://github.com/androcas
- @Binero https://github.com/binero
- @bjadamson https://github.com/bjadamson
- @burtonageo https://github.com/burtonageo
- @ColinKinloch https://github.com/colinkinloch
- @davll https://github.com/davll
- @Diggsey https://github.com/diggsey
- @djmcgill https://github.com/djmcgill
- @ebaklund https://github.com/ebaklund
- @ebkalderon https://github.com/ebkalderon
- @eugene2k https://github.com/eugene2k
- @felipeagc https://github.com/felipeagc
- @ForestSharp https://github.com/forestsharp
- @ForsakenHarmony https://github.com/forsakenharmony
- @grovesNL https://github.com/grovesnl
- @grtlr https://github.com/grtlr
- @Haggus https://github.com/haggus
- @HeroesGrave https://github.com/heroesgrave
- @icefoxen https://github.com/icefoxen
- @jamiltron https://github.com/jamiltron
- @JohnColanduoni https://github.com/johncolanduoni
- @jplatte https://github.com/jplatte
- @keringar https://github.com/keringar
- @Kerollmops https://github.com/kerollmops
- @lxnt https://github.com/lxnt
- @manuel-rhdt https://github.com/manuel-rhdt
- @mitchmindtree https://github.com/mitchmindtree
- @msiglreith https://github.com/msiglreith
- @nical https://github.com/nical
- @oli-obk https://github.com/oli-obk
- @omni-viral https://github.com/omni-viral
- @paezao https://github.com/paezao
- @phlmn https://github.com/phlmn
- @scoopr https://github.com/scoopr
- @serprex https://github.com/serprex
- @snuk182 https://github.com/snuk182
- @tocubed https://github.com/tocubed
- @torkleyy https://github.com/torkleyy
- @vitvakatu https://github.com/vitvakatu
- @zakorgy https://github.com/zakorgy
- Chris Dolby - account deleted
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/gfx-rs/gfx/issues/847#issuecomment-374276870, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABOyBfqwwEQiOSZdrvV0PuJDBeuy80ptks5tf93vgaJpZM4HB7yp
.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
Wow somebody mailed me....
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option. @ahmedaliadeel
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.
This comment is here to document the exact state of the master branch as of gfx-rs/gfx@6fc06dac6d9f5b71b80910ed64bac3c6bf69b371. All changes following gfx-rs/gfx@4dfa4f1f80ede68b5c0c77b1847791ef42aecb35 were licensed under the dual license due to the update of the README that occurred in that commit. As authors of pull requests that were open at the time may not have seen this change consent was explicitly obtained from them. The list of merged and open PRs with their authors is:
PR | Author
----- | --------
This information can be obtained from these two search queries:
is:pr created:<=2018-01-27 closed:>=2018-01-27
is:pr is:open created:<=2018-01-27
Most contributors have agreed to this change explicitly on this issue, an archive of which can be obtained here. The table that follows is a list of the status, I have decided on, of every person who authored a contribution to the repository before 4dfa4f1f. This list of people can be obtained by running this python script:
https://gist.github.com/AIOOB/ad135e29c9bc67822fa0b061ad6cdca2
There are some inconsistencies due to name changes, people deleting their github account, etc. These are:
In the following table:
Agreed means the user has explictly agreed to the new licenseNone Remaining means the users contributions no longer exist in the codebase at 6fc06dac6d9f5b71b80910ed64bac3c6bf69b371No Copyrightable Remaining means that the users contributions that remain in the codebase at 6fc06dac6d9f5b71b80910ed64bac3c6bf69b371 are not copyrightableAuthor | Status
----------------|-------
abonander | Agreed
AdamRzepka | None Remaining
aepsil0n | Agreed
ahmedaliadeel | Agreed
ahtn | Agreed
AIOOB | Agreed
alexcrichton | Agreed
alexheretic | Agreed
AlphaModder | Agreed
ama0 | None Remaining
amaranth | Agreed
andrew-d | Agreed
Androcas | No Copyrightable Remaining
anthiste | None Remaining
Anttonii | None Remaining
asheb | Agreed
axelmagn | None Remaining
Bastacyclop | Agreed
bfops | Agreed
Binero | Agreed
bjadamson | Agreed
boguszaur | None Remaining
bors | Bot
brendanzab | Agreed
burtonageo | Agreed
bvanevery | None Remaining
bvssvni | Agreed
CensoredUsername| None Remaining
Chase-C | None Remaining
Chris Dolby | No Copyrightable Remaining
cl91 | Agreed
cmr | Agreed
ColinKinloch | Agreed
csherratt | Agreed
DaseinPhaos | None Remaining
dati91 | None Remaining
davll | Agreed
delehef | No Copyrightable Remaining
Diggsey | Agreed
djmcgill | Agreed
dylanede | Agreed
ebaklund | No Copyrightable Remaining
ebkalderon | Agreed
escalant3 | None Remaining
eugene2k | Agreed
farism | Agreed
felipeagc | Agreed
fkaa | Agreed
flodiebold | Agreed
ForestSharp | Agreed
ForsakenHarmony | Agreed
freebroccolo | Agreed
fungos | Agreed
gaudecker | Agreed
grovesNL | Agreed
grtlr | Agreed
guycook | None Remaining
Haggus | Agreed
hannobraun | Agreed
HeroesGrave | Agreed
hexpointer | None Remaining
homu | Agreed
icefoxen | Agreed
jahfer | Agreed
jamiltron | Agreed
jeremija | Agreed
JohnColanduoni | Agreed
juxiliary | None Remaining
jplatte | Agreed
keringar | Agreed
Kerollmops | Agreed
Kimundi | Agreed
KokaKiwi | Agreed
kvark | Agreed
leonkunert | Agreed
lidavidm | None Remaining
linuxaged | None Remaining
LPGhatguy | None Remaining
lucidd | Agreed
lxnt | No Copyrightable Remaining
lynks-- | None Remaining
MaikKlein | Agreed
manuel-rhdt | Agreed
martinlindhe | No Copyrightable Remaining
mattbazooka | No Copyrightable Remaining
matthew-mcallister| None Remaining
mike-marcacci | Agreed
mitchmindtree | Agreed
msiglreith | Agreed
mtsr | Agreed
mttr | Agreed
munshkr | Agreed
mzmonsour | Agreed
nical | Agreed
nicholasbishop | Agreed
Nitori- | No Copyrightable Remaining
notriddle | None Remaining
nulldatamap | Agreed
oli-obk | Agreed
olsonjeffery | Agreed
omni-viral | Agreed
ozkriff | None Remaining
paezao | Agreed
pcstl | None Remaining
petevine | Agreed
phlmn | Agreed
photex | Agreed
Potpourri | None Remaining
pravic | None Remaining
qres | Agreed
readmecritic | Agreed
red75prime | Agreed
rhaps0dy | None Remaining
Rhuagh | Agreed
sbward | None Remaining
scoopr | Agreed
sectopod | Agreed
Seeker14491 | None Remaining
serpis | Agreed
serprex | Agreed
snuk182 | Agreed
stjahns | Agreed
thehydroimpulse | Agreed
tioover | Agreed
tocubed | Agreed
tomaka | Agreed
tomjakubowski | None Remaining
toqueteos | Agreed
torkleyy | Agreed
ucarion | No Copyrightable Remaining
vickenty | Agreed
Vinatorul | None Remaining
vitvakatu | Agreed
xales | None Remaining
xtian | No Copyrightable Remaining
yuriks | Agreed
zakorgy | Agreed
Another archive was made on archive.org after this commit was posted to allow you to see what edits were made if any occur.
Someone really should check this table for correctness, as it will be the reference in case of any future problems. The program and data I have provided should alleviate some of the work but peoples identities whether or not they have agreed or got any copyrightable contributions remaining all needs to be verified by another person.
This will take some time but if you are willing to help look up the bystander effect and then get checking!
After this, all that's needed is to update the license in the README on the master branch, the state of licensing before that commit can only be taken as Apache-2.0. All the of the pre-ll gfx branches will remain licensed as they were.
wow @AIOOB, thanks for taking care of this! I know how much work it is to put that together.
I've gone ahead and checked it myself and there are only a few corrections/comments that I want to make:
Bot rather than as AgreedNone Remaining option so take every user labelled as None Remaining to actually be No Copyrightable Remaining. This makes no difference to the ability to relicense the project but just improves the correctness of the transition.And with that, I think it is done!
Github now tracks comment edits, but is something to be aware of.
Comment deletions are still an issue though, so we should find a way to archive the hidden comments as well.
Github API to the rescue! The entire issue as of 2018-06-09 14:30 is:
https://web.archive.org/web/20180609133239/https://api.github.com/repos/gfx-rs/gfx/issues/847
https://web.archive.org/web/20180609133101/https://api.github.com/repos/gfx-rs/gfx/issues/847/comments?per_page=100&page=1
https://web.archive.org/web/20180609133146/https://api.github.com/repos/gfx-rs/gfx/issues/847/comments?per_page=100&page=2
We did it! As of 68d1539f57d1b363c72c76ca46c98e7a687ba7ad the master branch is now dual licensed.
Thank you to the 96 of you who agreed to the license change it made my life much easier!
Most helpful comment
Beginning of the end
This comment is here to document the exact state of the master branch as of gfx-rs/gfx@6fc06dac6d9f5b71b80910ed64bac3c6bf69b371. All changes following gfx-rs/gfx@4dfa4f1f80ede68b5c0c77b1847791ef42aecb35 were licensed under the dual license due to the update of the README that occurred in that commit. As authors of pull requests that were open at the time may not have seen this change consent was explicitly obtained from them. The list of merged and open PRs with their authors is:
PR | Author
----- | --------
1565 | kvark
1570 | davll
1665 | AIOOB
1765 | msiglreith
1768 | kvark
This information can be obtained from these two search queries:
is:pr created:<=2018-01-27 closed:>=2018-01-27
is:pr is:open created:<=2018-01-27
Most contributors have agreed to this change explicitly on this issue, an archive of which can be obtained here. The table that follows is a list of the status, I have decided on, of every person who authored a contribution to the repository before 4dfa4f1f. This list of people can be obtained by running this python script:
https://gist.github.com/AIOOB/ad135e29c9bc67822fa0b061ad6cdca2
There are some inconsistencies due to name changes, people deleting their github account, etc. These are:
In the following table:
Agreedmeans the user has explictly agreed to the new licenseNone Remainingmeans the users contributions no longer exist in the codebase at 6fc06dac6d9f5b71b80910ed64bac3c6bf69b371No Copyrightable Remainingmeans that the users contributions that remain in the codebase at 6fc06dac6d9f5b71b80910ed64bac3c6bf69b371 are not copyrightableAuthor | Status
----------------|-------
abonander | Agreed
AdamRzepka | None Remaining
aepsil0n | Agreed
ahmedaliadeel | Agreed
ahtn | Agreed
AIOOB | Agreed
alexcrichton | Agreed
alexheretic | Agreed
AlphaModder | Agreed
ama0 | None Remaining
amaranth | Agreed
andrew-d | Agreed
Androcas | No Copyrightable Remaining
anthiste | None Remaining
Anttonii | None Remaining
asheb | Agreed
axelmagn | None Remaining
Bastacyclop | Agreed
bfops | Agreed
Binero | Agreed
bjadamson | Agreed
boguszaur | None Remaining
bors | Bot
brendanzab | Agreed
burtonageo | Agreed
bvanevery | None Remaining
bvssvni | Agreed
CensoredUsername| None Remaining
Chase-C | None Remaining
Chris Dolby | No Copyrightable Remaining
cl91 | Agreed
cmr | Agreed
ColinKinloch | Agreed
csherratt | Agreed
DaseinPhaos | None Remaining
dati91 | None Remaining
davll | Agreed
delehef | No Copyrightable Remaining
Diggsey | Agreed
djmcgill | Agreed
dylanede | Agreed
ebaklund | No Copyrightable Remaining
ebkalderon | Agreed
escalant3 | None Remaining
eugene2k | Agreed
farism | Agreed
felipeagc | Agreed
fkaa | Agreed
flodiebold | Agreed
ForestSharp | Agreed
ForsakenHarmony | Agreed
freebroccolo | Agreed
fungos | Agreed
gaudecker | Agreed
grovesNL | Agreed
grtlr | Agreed
guycook | None Remaining
Haggus | Agreed
hannobraun | Agreed
HeroesGrave | Agreed
hexpointer | None Remaining
homu | Agreed
icefoxen | Agreed
jahfer | Agreed
jamiltron | Agreed
jeremija | Agreed
JohnColanduoni | Agreed
juxiliary | None Remaining
jplatte | Agreed
keringar | Agreed
Kerollmops | Agreed
Kimundi | Agreed
KokaKiwi | Agreed
kvark | Agreed
leonkunert | Agreed
lidavidm | None Remaining
linuxaged | None Remaining
LPGhatguy | None Remaining
lucidd | Agreed
lxnt | No Copyrightable Remaining
lynks-- | None Remaining
MaikKlein | Agreed
manuel-rhdt | Agreed
martinlindhe | No Copyrightable Remaining
mattbazooka | No Copyrightable Remaining
matthew-mcallister| None Remaining
mike-marcacci | Agreed
mitchmindtree | Agreed
msiglreith | Agreed
mtsr | Agreed
mttr | Agreed
munshkr | Agreed
mzmonsour | Agreed
nical | Agreed
nicholasbishop | Agreed
Nitori- | No Copyrightable Remaining
notriddle | None Remaining
nulldatamap | Agreed
oli-obk | Agreed
olsonjeffery | Agreed
omni-viral | Agreed
ozkriff | None Remaining
paezao | Agreed
pcstl | None Remaining
petevine | Agreed
phlmn | Agreed
photex | Agreed
Potpourri | None Remaining
pravic | None Remaining
qres | Agreed
readmecritic | Agreed
red75prime | Agreed
rhaps0dy | None Remaining
Rhuagh | Agreed
sbward | None Remaining
scoopr | Agreed
sectopod | Agreed
Seeker14491 | None Remaining
serpis | Agreed
serprex | Agreed
snuk182 | Agreed
stjahns | Agreed
thehydroimpulse | Agreed
tioover | Agreed
tocubed | Agreed
tomaka | Agreed
tomjakubowski | None Remaining
toqueteos | Agreed
torkleyy | Agreed
ucarion | No Copyrightable Remaining
vickenty | Agreed
Vinatorul | None Remaining
vitvakatu | Agreed
xales | None Remaining
xtian | No Copyrightable Remaining
yuriks | Agreed
zakorgy | Agreed
Another archive was made on archive.org after this commit was posted to allow you to see what edits were made if any occur.
Next steps
Someone really should check this table for correctness, as it will be the reference in case of any future problems. The program and data I have provided should alleviate some of the work but peoples identities whether or not they have agreed or got any copyrightable contributions remaining all needs to be verified by another person.
This will take some time but if you are willing to help look up the bystander effect and then get checking!
After this, all that's needed is to update the license in the README on the master branch, the state of licensing before that commit can only be taken as
Apache-2.0. All the of the pre-ll gfx branches will remain licensed as they were.