Skip to content

Relicense Bevy under dual MIT/Apache-2.0 #2373

Closed

Description

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    A-MetaAbout the project itselfAbout the project itselfC-FeatureA new feature, making something new possibleA new feature, making something new possible

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions