As far as I understand, one needs to specify explicitly
free = false;
in a license definition to mark it as non-free.
A few of the licenses listed in stdenv.lib.licenses are marked that way (example: amazonsl, epson, geogebra and of course unfree). However, lots of licenses which are not free, nor open source, by any standard do not bear such marking and can thus be wrongly interpreted as free (example: cc-by-nc-sa-20, cc-by-nc-sa-25, cc-by-nc-sa-30, cc-by-nc-sa-40, cc-by-nd-30, inria).
This is especially unfair because inria (INRIA Non-Commercial License Agreement, which is actually the license of CompCert) is no better than the license of GeoGebra for instance. Why would the users of one be hindered by the added complexity of installing non-free software with Nix and the users of the other would not?
A quick fix would be of course to add free = false; to these licenses and I volunteer to do that if it's considered to be the right solution. However, I also think that this issue is strongly linked to #18557, as the lack of documentation for what free/unfree is supposed to mean and how to specify that a license is not free is probably at the heart of the problem.
The other general issue might actually be in the terminology. Is free the right word? It seems that it is used instead to mean "OK to build on Hydra" (as in unfreeRedistributableFirmware). Maybe a specific, separate attribute should be created for this and free be reserved for what it actually means (provided that a definition is chosen: it could be FSF's, it could be Debian's).
I think it should be FSF's (i.e. https://www.gnu.org/philosophy/free-sw.en.html) because the FSF coined "free" (as in, in the "free software" sense), and also it seems to me the most clear and simple definition. Also https://www.gnu.org/licenses/license-list.en.html may help here regardless, it has a lot of licenses with their free/nonfree classification with short explanations (although it doesn't have every license).
Additionally, another reason for the problem I raised in this issue might be the fact that licenses are considered to be free by default. If this was the contrary (non-free unless you put free = true;), it would mean that the persons who adds a new free license knows what they are doing.
Closing, please reopen if there’s still a problem.
It hasn't really been addressed AFAICS. I've just opened #42531 to quickly fix obvious remaining mistakes. As for bigger changes like changing the default, separating the notions of free and redistributable, etc, I'll let this for someone else to do.
I agree. I think this should be reopened and with the topic renamed to something like "Licenses: unfree vs. redistributable".
@Zimmi48 Thanks for the fixes
@oxij I think to make this clearly actionable something to agree with or disagree with about specifying unfree and redistributable has to be written explicitly. Maybe even as a separate issue.
As for defaults for free=, I think that changing the default would create a bit of a gotcha. Maybe just making that field obligatory could be a good idea, though…
(I think everything OSI-approved will end up marked as fully free in any case)
As for defaults for free=, I think that changing the default would create a bit of a gotcha. Maybe just making that field obligatory could be a good idea, though…
Good idea.
(I think everything OSI-approved will end up marked as fully free in any case)
Sure, that's the idea.
If a PR with making free= explicit/mandatory gets stalled, everyone please feel free to ping me.
(also please ping me when it appears; but I will not merge it without giving a bit of time for discussion)