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

Dual license the source code under MIT/APACHE #70

Merged
merged 2 commits into from
May 16, 2021
Merged

Conversation

Urgau
Copy link
Contributor

@Urgau Urgau commented May 14, 2021

Hello, I want this change to be done for two reasons:

  • First, the Rust port is as of time of writing in an awkward position
    because he is dual license under MIT/APACHE instead of only the
    APACHE license. This change in license should fix this problem.
  • Second, and the most convincing reason for this change to occurred is
    that some discussion as taken place with the Rust Libs Team
    to integrate the Rust port directly into the Rust standard library.
    And for that to happend the change in license is required because
    the code for the Rust repository is dual license against MIT/APACHE.

Peoples who needs to agree to this change (based on code change only):

@timkpaine
Copy link
Contributor

I transfer any rights of my tiny change over to @lemire, you can remove me from the list.

@lemire
Copy link
Member

lemire commented May 14, 2021

I do not think anyone could object to this change, and I am happy to merge. Because we are not a formal organization, the reasonable approach is just to wait some time, to give people a chance to object if they'd like, and then merge.

I would point out that, as far as I can see, there is really no reason for the Rust version to have the same license as the C++ version. I'd like to remind us that there is no copyright on ideas, coding patterns, algorithms or mathematical results. And the Rust code is distinctly different.

@eugenegff
Copy link
Contributor

I transfer any rights of my tiny change over to @lemire, you can remove me from the list too

@wojdyr
Copy link
Contributor

wojdyr commented May 14, 2021

me too (transferring any right to @lemire)

@kitaisreal
Copy link
Contributor

kitaisreal commented May 14, 2021

I transfer any rights of my tiny change over to @lemire.

@lemire
Copy link
Member

lemire commented May 14, 2021

The test failure is bogus, evidently, see #71

This change is done for two reasons:
 - First, the Rust port is, as of the time of writing in an awkward
   position because he is dual license under MIT/APACHE instead of only
   the APACHE license. This change in license should fix this problem.
 - Second, and the most convincing reason is that there have been
   some discussion with the Rust Libs Team to integrate the Rust port
   directly into the Rust standard library.
   The license change is required because the code for every the Rust
   repository need's to dual license against MIT/APACHE.
@Urgau
Copy link
Contributor Author

Urgau commented May 14, 2021

The test failure is bogus, evidently, see #71

+1 I have rebase against main, updated a little bit the commit message and force force (squash). Now the workflows should all be green.

@Urgau
Copy link
Contributor Author

Urgau commented May 14, 2021

I would point out that, as far as I can see, there is really no reason for the Rust version to have the same license as the C++ version. I'd like to remind us that there is no copyright on ideas, coding patterns, algorithms or mathematical results. And the Rust code is distinctly different.

@lemire Yes I agree but the issue is not on copyright but on the license of the source code. This repository use the Apache 2 license, this license defined what the license call "Derived Works", this include translations (both to a different natural language and to a different programming language), but it is not entirely clear how (and if any of) the requirements from the Apache license should be applied when the "Derived Works" is so radically different from the original source.

However what is clear is that under the clause 4.c and 4 (end):

(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works

You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License
.

Every "Derivative Works" must also be license under the Apache 2 license and that re-licensing can be done but only if the license "complies with the conditions stated in this License" which is not the case for the MIT license.
Given this, the fact that the Rust port is actually using the MIT License and if we considered that a port in a different language falls under the "Derived Works", this means that the licensing with the MIT license of the Rust port may not be completely legal.

Given everything else and the fact that the code for the Rust repository is dual license against MIT/APACHE, I think that the Rust peoples might be a little be conservative about what falls under "Derived Works".

In conclusion, dual licensing this source code prevents potential licensing issues with the Rust port and permit the integration of it in the Rust standard library.

Source: License terms when porting free software to another language

PS: I may be completly wrong, in that case do not hesitate to contradict my words.

@nealrichardson
Copy link
Contributor

No objection from me

@lemire
Copy link
Member

lemire commented May 14, 2021

We are just missing @biojppm.

I am sure he will agree, it is simply a matter of getting him to notice us.

@lemire
Copy link
Member

lemire commented May 14, 2021

@Urgau It seems that you are right, legally speaking.

Maybe I should start defaulting on the MIT license then?

@Urgau
Copy link
Contributor Author

Urgau commented May 15, 2021

@Urgau It seems that you are right, legally speaking.

Maybe I should start defaulting on the MIT license then?

You mean only on MIT ? Because with this pull request the code will be under the MIT and APACHE licenses at the option of the one how use it.

But I would suggest to keep MIT/APACHE for "patent" issue. Josh Triplett said:

Requiring both MIT and Apache 2.0 as inbound licenses for contributions means that anyone making a contribution is providing the Apache 2.0 patent grant. And then having MIT and Apache 2.0 as outbound licenses people can use Rust under means that Rust provides widespread compatibility with all sorts of other FOSS licenses, including GPLv2.

@lemire
Copy link
Member

lemire commented May 15, 2021

@Urgau I was thinking about new (future) projects. Ok. MIT + Apache could be a good default in the future.

@Urgau
Copy link
Contributor Author

Urgau commented May 15, 2021

@Urgau I was thinking about new (future) projects. Ok. MIT + Apache could be a good default in the future.

Oh, sorry for misinterpreted your question. In that case, yes MIT + Apache should be a pretty good default for your (and probably most peoples) future projects.

@biojppm
Copy link
Contributor

biojppm commented May 16, 2021

Sorry for the delay. Indeed I do agree.

@biojppm biojppm merged commit ff5ab19 into fastfloat:main May 16, 2021
@joshtriplett
Copy link

Thank you very much!

@lemire @Urgau
This is a tangent for this request, but:
Rust primarily uses the MIT OR Apache-2.0 dual-license because it was the best available option at the time Rust was started to provide a permissive license with an explicit patent grant while preserving widespread compatibility (including with GPLv2). Today, there's a much simpler license for that: https://opensource.org/licenses/BSDplusPatent . That's pretty much 2-clause BSD with the Apache 2.0 patent grant added, and it's GPLv2-compatible. Folks involved with early Rust have said that if that license existed at the time, they would have used it instead. That may help you for new projects.

(For this project, we really appreciate you being willing to match the license of Rust, to simplify integration of the derived Rust version. Thank you!)

@lemire
Copy link
Member

lemire commented May 16, 2021

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants