This is an archive of the discontinued LLVM Phabricator instance.

[docs] Add LICENSE.txt to the root of the mono-repo
ClosedPublic

Authored by thieta on Aug 17 2022, 2:31 AM.

Details

Summary

This will make it easier to find the LICENSE and some
software also looks in the root to automatically find it.

Diff Detail

Event Timeline

thieta created this revision.Aug 17 2022, 2:31 AM
Herald added a project: Restricted Project. · View Herald TranscriptAug 17 2022, 2:31 AM
thieta requested review of this revision.Aug 17 2022, 2:31 AM
Herald added a project: Restricted Project. · View Herald TranscriptAug 17 2022, 2:31 AM
kristof.beyls accepted this revision.Aug 17 2022, 2:35 AM

As this is something I suggested - this LGTM.

But please wait for a second opinion. I'm not sure if we have specific reasons to try and avoid adding these kinds of files to the root of the mono-repo.

This revision is now accepted and ready to land.Aug 17 2022, 2:35 AM

As this is something I suggested - this LGTM.

But please wait for a second opinion. I'm not sure if we have specific reasons to try and avoid adding these kinds of files to the root of the mono-repo.

Maybe I should have linked to this conversation: https://github.com/llvm/www-releases/pull/6#discussion_r947661055

It also turns out that if you have a LICENSE file in the root you will get it indexed and shown in github as well. So This will make it even easier to find the license for the repo.

This is a great idea, thank you for doing this. I think we should also point out the sublicenses that are not llvm licensed, e.g. we have a copy of PCRE, googletest etc, and should notify people about these things.

This is a great idea, thank you for doing this. I think we should also point out the sublicenses that are not llvm licensed, e.g. we have a copy of PCRE, googletest etc, and should notify people about these things.

Agreed. We need to make sure that all licenses (ie MIT License as well) are accounted for here otherwise it makes things confusing if someone assumes everything is under only this license.

Otherwise I like this idea. I'm slightly concerned about it getting out of date if we add any other code with some new license.

This is a great idea, thank you for doing this. I think we should also point out the sublicenses that are not llvm licensed, e.g. we have a copy of PCRE, googletest etc, and should notify people about these things.

Agreed. We need to make sure that all licenses (ie MIT License as well) are accounted for here otherwise it makes things confusing if someone assumes everything is under only this license.

Otherwise I like this idea. I'm slightly concerned about it getting out of date if we add any other code with some new license.

I think the current license text already calls this out with this paragraph:

Software from third parties included in the LLVM Project:

The LLVM Project contains third party software which is under different license
terms. All such code will be identified clearly using at least one of two
mechanisms:

  1. It will be in a separate directory tree with its own LICENSE.txt or LICENSE file at the top containing the specific license and restrictions which apply to that software, or
  2. It will contain specific license and restriction terms at the top of every file.

Maybe that could be improved by trying to point to all such different license terms in the tree - but as already mentioned, that has the downside of easily getting out-of-date.

However, maybe this whole point is an orthogonal discussion?
It seems to me that the github interface will just add a hyperlink to the license file, without trying to guess what the license is?

Maybe the only thing to be verified before landing this change is that every sub-directory has an identical LICENSE.TXT file to the one in the LLVM sub-directory? So that the one LICENSE.TXT in the root directory is identical to all LICENSE.TXT files in sub-directories. If so, maybe there would also be no use anymore for the LICENSE.TXT files in the first-level sub-directories?

How about a list of subdirectories with different licenses in the end of the top level LICENSE file? Then there is no need to keep the text in sync but only add / remove to the list in the end of the file when we add or remove a third-party dependency, which should be pretty infrequent.

How about a list of subdirectories with different licenses in the end of the top level LICENSE file? Then there is no need to keep the text in sync but only add / remove to the list in the end of the file when we add or remove a third-party dependency, which should be pretty infrequent.

Before we installed the new license, that is the scheme that we had, see e.g. https://github.com/llvm/llvm-project/blob/eb60fbfdb43cb8583eda1e338b3489ddef332f10/llvm/LICENSE.TXT for what the license file looked like for the llvm sub-directory. You can see that at the end of the license file there is a list of directories that contains differently licensed code.

When we still had that scheme in the LICENSE files, when people asked me what licenses were in an LLVM binary, I pointed to the combined list of directories in those LICENSE files. But also stated that there was no absolute guarantee that they were perfectly kept up to date. Based on that experience, I'd say that just mentioning that there are directories or files with a different license + how you can find them would be good enough, rather than trying to keep the list of directories up to date.
I'm also not opposed to explicitly listing the directories/files in the LICENSE file, i.e. doing what we did before by listing the directories with different licenses - assuming we also somehow state that the list is kept up-to-date based on "best efforts", rather than guaranteed to always be fully correct.

@tonic and @lattner - ping, what do you guys think about this after @kristof.beyls comment?

lattner accepted this revision.Aug 23 2022, 11:34 AM

This LGTM, thank you for the ping!

This revision was automatically updated to reflect the committed changes.

Interestingly, this commit is adding a file "LICENSE.TXT" and in the commit message it says it's adding "LICENSE.txt"...