fmtlib / fmt

A modern formatting library
https://fmt.dev
Other
20.74k stars 2.49k forks source link

Contributing licensing rules are badly written and partly nonsensical #3313

Closed chris-morgan closed 1 year ago

chris-morgan commented 1 year ago

By submitting a pull request or a patch, you represent that you have the right to license your contribution to the {fmt} project owners and the community,

But you’re not licensing it to them alone: you’re licensing it to everyone. Such is open source.

(There’s arguably three-way grammatical ambiguity here, but in the context of the full sentence I’m reasonably confident this is the parse that was intended.)

agree that your contributions are licensed under the {fmt} license,

This is not good wording: “the {fmt} license” implies the name of a license, in normal usage of the phrase. You should either identify the license (which is “MIT with a custom exception”, so you’d need to link to LICENSE.rst also), or specify “the same terms as the {fmt} project”.

and agree to future changes to the licensing.

This is nonsensical: who is permitted to change the licensing? You need to specify it, or else it’s left to interpretation, and “anyone” is a legitimately reasonable interpretation. Common sense says this won’t be the intent, so then, considering the nature of open source, “anyone who has contributed to the repository” is the next most likely answer.

It’s also unnecessary and arguably unwise and contrary to the spirit of Open Source since the only legitimate reason for using it is approximately nefarious (restricting licensing, since there’s not much more freedom that can be added).

(Both copyright assignment and proactive limited-offer unlimited relicensing grants are contrary to the spirit of Open Source, because of the asymmetry they produce.)


All up, I suggest something more like https://developercertificate.org/ (though it doesn’t work directly exactly since that requires per-file licensing), or like this:

By submitting a patch, you agree to license your contribution under the terms outlined in LICENSE.rst (MIT with an optional exception to allow binary distribution without notices), and represent that you have the right to do so.

(LICENSE.rst also needs a change to the copyright line to cover everyone else—“and {fmt} project contributors” or similar.)

vitaut commented 1 year ago

Good suggestions, I applied some of them in https://github.com/fmtlib/fmt/commit/48dfbcaa95f2043d29e3591ffd3090af4a5f33e2. We no longer need a part about license change at all.