Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Relicense Bevy under dual MIT/Apache-2.0 #2373

Closed
cart opened this issue Jun 22, 2021 · 290 comments
Closed

Relicense Bevy under dual MIT/Apache-2.0 #2373

cart opened this issue Jun 22, 2021 · 290 comments
Labels
A-Meta About the project itself C-Feature A new feature, making something new possible
Milestone

Comments

@cart
Copy link
Member

cart commented Jun 22, 2021

What?

We would like to relicense Bevy under the "dual MIT / Apache-2.0 license". This allows users to select either license according to their own preferences. There are Very Good Reasons for this (see the "Why?" section below). However I can't just arbitrarily relicense open source code, despite being the maintainer / lead developer. Bevy has hundreds of contributors and they all agreed to license their contributions exclusively under our current instance of the MIT license.

If you are mentioned in this issue, we need your help to make this happen

To agree to this relicense, please read the details in this issue, then leave a comment with the following message:

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to choose either at their option.

If you disagree, please respond with your reasoning (just don't expect us to change course at this point). Anyone who doesn't agree to the relicense will have any Bevy contributions that qualify as "copyrightable" removed or re-implemented.

Why?

I originally chose to license Bevy exclusively under MIT for a variety of reasons:

  1. People and companies generally know and trust the MIT license more than any other license. Apache 2.0 is less known and trusted.
  2. It is short and easy to understand
  3. Many people aren't familiar with the "multiple license options ... choose your favorite" approach. I didn't want to scare people away unnecessarily.
  4. Other open source engines like Godot have had a lot of success with MIT-only licensing

However there were a variety of issues that have come up that make dual-licensing Bevy under both MIT and Apache-2.0 compelling:

  1. The MIT license (arguably) requires binaries to reproduce countless copies of the same license boilerplate for every MIT library in use. MIT-only engines like Godot have complicated license compliance rules as a result
  2. The Apache-2.0 license has protections from patent trolls and an explicit contribution licensing clause.
  3. The Rust ecosystem is largely Apache-2.0. Being available under that license is good for interoperation and opens the doors to upstreaming Bevy code into other projects (Rust, the async ecosystem, etc).
  4. The Apache license is incompatible with GPLv2, but MIT is compatible.

Additionally, Bevy's current MIT license includes the Copyright (c) 2020 Carter Anderson line. I don't want to force Bevy users to credit me (and no one else) for the rest of time. If you agree to the relicense, you also agree to allow us to remove this copyright line crediting me.

What will this look like?

After getting 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), we will add the following file to our 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.

We will add LICENSE-{MIT,APACHE} files containing the text of each license. We will also update the license metadata in our Cargo.toml to:

license = "MIT OR Apache-2.0"

Contributor checkoff

  • @0x22fe
  • @8bit-pudding
  • @aclysma
  • @adam-bates
  • @adamaq01
  • @aevyrie
  • @ak-1
  • @akiross
  • @Alainx277
  • @alec-deason
  • @alexb910
  • @alexschrod
  • @alice-i-cecile
  • @alilee
  • @AlisCode
  • @aloucks
  • @amberkowalski
  • @AmionSky
  • @anchpop
  • @andoco
  • @andreheringer
  • @andrewhickman
  • @AngelicosPhosphoros
  • @AngelOnFira
  • @Archina
  • @ashneverdawn
  • @BafDyce
  • @bgourlie
  • @BimDav
  • @bitshifter
  • @bjorn3
  • @blaind
  • @blamelessgames
  • @blunted2night
  • @Bobox214
  • @Boiethios
  • @bonsairobo
  • @BoxyUwU
  • @Byteron
  • @CAD97
  • @CaelumLaron
  • @caelunshun
  • @cart
  • @CGMossa
  • @CleanCut
  • @ColdIce1605
  • @Cupnfish
  • @dallenng
  • @Dash-L
  • @Davier
  • @dburrows0
  • @dependabot[bot]
  • @deprilula28
  • @DGriffin91
  • @dintho
  • @Dispersia
  • @DivineGod
  • @Divoolej
  • @DJMcNab
  • @e00E
  • @easynam
  • @ElArtista
  • @eliaspekkala
  • @enfipy
  • @figsoda
  • @fintelia
  • @Fishrock123
  • @FlyingRatBull
  • @forbjok
  • @frewsxcv
  • @freylint
  • @Frizi
  • @FSMaxB
  • @FuriouZz
  • @GabLotus
  • @gcoakes
  • @gfreezy
  • @Git0Shuai
  • @giusdp
  • @GrantMoyer
  • @Gregoor
  • @Grindv1k
  • @guimcaballero
  • @Halfwhit
  • @Havvy
  • @HackerFoo
  • @Hugheth
  • @huhlig
  • @hymm
  • @ifletsomeclaire
  • @iMplode-nZ
  • @Incipium
  • @iwikal
  • @Ixentus
  • @J-F-Liu
  • @jacobgardner
  • @jak6jak
  • @jakerr
  • @jakobhellermann
  • @jamadazi
  • @Jbat1Jumper
  • @JCapucho
  • @jcornaz
  • @Jerald
  • @jesseviikari
  • @jihiggins
  • @jleflang
  • @jngbsn
  • @joejoepie
  • @JohnDoneth
  • @Josh015
  • @joshuajbouw
  • @julhe
  • @kaflu
  • @karroffel
  • @kedodrill
  • @kokounet
  • @Kurble
  • @lachlansneff
  • @lambdagolem
  • @lassade
  • @lberrymage
  • @lee-orr
  • @logannc
  • @Lowentwickler
  • @lukors
  • @Lythenas
  • @M2WZ
  • @marcusbuffett
  • @MarekLg
  • @marius851000
  • @MatteoGgl
  • @maxwellodri
  • @mccludav
  • @memoryruins
  • @mfrancis107
  • @MGlolenstine
  • @MichaelHills
  • @MilanVasko
  • @MinerSebas
  • @mjhostet
  • @mkhan45
  • @mnmaita
  • @mockersf
  • @Moxinilian
  • @MrEmanuel
  • @mrk-its
  • @msklywenn
  • @mtsr
  • @multun
  • @mvlabat
  • @naithar
  • @NathanSWard
  • @navaati
  • @ncallaway
  • @ndarilek
  • @Nazariglez
  • @Neo-Zhixing
  • @nic96
  • @NiklasEi
  • @Nilirad
  • @no1hitjam
  • @notsimon
  • @nside
  • @ocornoc
  • @Olaren15
  • @OptimisticPeach
  • @payload
  • @Philipp-M
  • @Plecra
  • @PrototypeNM1
  • @r00ster91
  • @Ratysz
  • @RedlineTriad
  • @refnil
  • @reidbhuntley
  • @Restioson
  • @RichoDemus
  • @rmsc
  • @rmsthebest
  • @RobDavenport
  • @robertwayne
  • @rod-salazar
  • @rparrett
  • @ryanleecode
  • @sapir
  • @saveriomiroddi
  • @sburris0
  • @schell
  • @sdfgeoff
  • @ShadowMitia
  • @simensgreen
  • @simlay
  • @simpuid
  • @SmiteWindows
  • @smokku
  • @StarArawn
  • @stefee
  • @superdump
  • @SvenTS
  • @sY9sE33
  • @szunami
  • @tangmi
  • @tarkah
  • @TehPers
  • @Telzhaak
  • @termhn
  • @tiagolam
  • @the-notable
  • @thebluefish
  • @TheNeikos
  • @TheRawMeatball
  • @therealstork
  • @thirdsgames
  • @Tiagojdferreira
  • @tigregalis
  • @Toniman20
  • @toothbrush7777777
  • @TotalKrill
  • @tristanpemble
  • @trolleyman
  • @turboMaCk
  • @TypicalFork
  • @undinococo
  • @verzuz
  • @Veykril
  • @vgel
  • @VitalyAnkh
  • @w1th0utnam3
  • @W4RH4WK
  • @Waridley
  • @Weibye
  • @Weibye-Breach
  • @wilk10
  • @will-hart
  • @willcrichton
  • @WilliamTCarroll
  • @woubuc
  • @wyhaya
  • @Xavientois
  • @YohDeadfall
  • @yrns
  • @zaszi
  • @zgotsch
  • @zicklag
  • @Zooce

Contributors with "obsolete" changes (no need for approval)

  • adekau
  • ColonisationCaptain
  • temhotaokeaha

Contributors with "trivial" changes that are ok to keep

  • follower
  • HyperLightKitsune
  • liufuyang
  • Raymond26
  • themilkybit
  • walterpie
  • EthanYidong

Contributors with changes we reverted to unblock the relicense

  • TomBebb
@cart cart added C-Feature A new feature, making something new possible S-Needs-Triage This issue needs to be labelled labels Jun 22, 2021
@zicklag
Copy link
Member

zicklag commented Jun 22, 2021

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to choose either at their option.

1 similar comment
@YohDeadfall
Copy link
Member

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to choose either at their option.

@cart
Copy link
Member Author

cart commented Jun 22, 2021

I will now mention people in chunks of 50, as that is the max number of mentions per message.

@ColdIce1605
Copy link
Contributor

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to choose either at their option.

@bonsairobo
Copy link
Contributor

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to choose either at their option.

10 similar comments
@adam-bates
Copy link
Contributor

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to choose either at their option.

@frewsxcv
Copy link
Contributor

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to choose either at their option.

@OptimisticPeach
Copy link
Contributor

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to choose either at their option.

@wyhaya
Copy link
Contributor

wyhaya commented Jun 22, 2021

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to choose either at their option.

@aevyrie
Copy link
Member

aevyrie commented Jun 22, 2021

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to choose either at their option.

@robertwayne
Copy link
Contributor

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to choose either at their option.

@alice-i-cecile
Copy link
Member

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to choose either at their option.

@zgotsch
Copy link
Contributor

zgotsch commented Jun 22, 2021

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to choose either at their option.

@will-hart
Copy link
Contributor

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to choose either at their option.

@Cupnfish
Copy link
Contributor

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to choose either at their option.

@gcoakes
Copy link
Contributor

gcoakes commented Jun 22, 2021

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to choose either at their option. To go a step further, you can do so for any other license you might add in the future.

I think I only bumped a dependency in Cargo.toml. Makes me laugh, the idea that you would have to "reimplement" that. It would be like claiming plagiarism for the phrase, "in conclusion."

@joshuajbouw
Copy link
Member

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to choose either at their option.

6 similar comments
@Jerald
Copy link
Contributor

Jerald commented Jun 22, 2021

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to choose either at their option.

@CleanCut
Copy link
Member

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to choose either at their option.

@Waridley
Copy link
Contributor

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to choose either at their option.

@fintelia
Copy link
Contributor

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to choose either at their option.

@JohnDoneth
Copy link
Contributor

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to choose either at their option.

@jak6jak
Copy link
Contributor

jak6jak commented Jun 22, 2021

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to choose either at their option.

@zmerp
Copy link

zmerp commented Apr 22, 2022

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to choose either at their option.

1 similar comment
@TheArchitect4855
Copy link

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to choose either at their option.

@nihohit
Copy link
Contributor

nihohit commented Apr 25, 2022

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to choose either at their option.

1 similar comment
@The5-1
Copy link

The5-1 commented Apr 25, 2022

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to choose either at their option.

aevyrie pushed a commit to aevyrie/bevy that referenced this issue Jun 7, 2022
…gine#4252)

This reverts commit 08ef2f0.

# Objective

- bevyengine#4225 was merged without considering the licensing considerations.
- It merges in code taken from https://github.com/cart/ecs_bench_suite/tree/bevy-benches/src/bevy.
- We can safely assume that we do have a license to cart's contributions. However, these build upon cart/ecs_bench_suite@377e96e, for which we have no license. 
- This has been verified by looking in the Cargo.toml, the root folder and the readme, none of which mention a license. Additionally, the string "license" [doesn't appear](https://github.com/rust-gamedev/ecs_bench_suite/search?q=license) in the repository.
- This means the code is all rights reserved.
- (The author of these commits also hasn't commented in bevyengine#2373, though even if they had, it would be legally *dubious* to rely on that to license any code they ever wrote)
- (Note that the latest commit on the head at https://github.com/rust-gamedev/ecs_bench_suite hasn't had a license added either.)
- We are currently incorrectly claiming to be able to give an MIT/Apache 2.0 license to this code.

## Solution

- Revert it
@KirmesBude
Copy link
Contributor

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to choose either at their option.

ItsDoot pushed a commit to ItsDoot/bevy that referenced this issue Feb 1, 2023
…gine#4252)

This reverts commit 08ef2f0.

# Objective

- bevyengine#4225 was merged without considering the licensing considerations.
- It merges in code taken from https://github.com/cart/ecs_bench_suite/tree/bevy-benches/src/bevy.
- We can safely assume that we do have a license to cart's contributions. However, these build upon cart/ecs_bench_suite@377e96e, for which we have no license. 
- This has been verified by looking in the Cargo.toml, the root folder and the readme, none of which mention a license. Additionally, the string "license" [doesn't appear](https://github.com/rust-gamedev/ecs_bench_suite/search?q=license) in the repository.
- This means the code is all rights reserved.
- (The author of these commits also hasn't commented in bevyengine#2373, though even if they had, it would be legally *dubious* to rely on that to license any code they ever wrote)
- (Note that the latest commit on the head at https://github.com/rust-gamedev/ecs_bench_suite hasn't had a license added either.)
- We are currently incorrectly claiming to be able to give an MIT/Apache 2.0 license to this code.

## Solution

- Revert it
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-Meta About the project itself C-Feature A new feature, making something new possible
Projects
None yet
Development

Successfully merging a pull request may close this issue.