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

License Export #2900

Open
wants to merge 19 commits into
base: master
Choose a base branch
from
Open

License Export #2900

wants to merge 19 commits into from

Conversation

henrikt-ma
Copy link
Collaborator

This is MCP-0029 License Export. Currently in Draft state to reflect state of being under development.

This PR is the continuation of the issue #2217.

@HansOlsson
Copy link
Collaborator

In order to avoid confusion at least the summary should make it clear that it's not related to licensing (and other proposals for IP-protection) but just about including the license texts.

@HansOlsson
Copy link
Collaborator

Several of the links in the document seem to be broken.

@beutlich
Copy link
Member

beutlich commented Jun 7, 2022

Several of the links in the document seem to be broken.

Resolved by 70f0c49.

@otronarp
Copy link
Member

I miss a general description of the annotation, like where is it allowed (in the example it's on the top-level package and on external functions, but can it be any where?) and what does it mean and what's the expectation on the tool. Now everything is implied from the summary/rationale.

@beutlich
Copy link
Member

beutlich commented Jun 14, 2022

I miss a general description of the annotation, like where is it allowed (in the example it's on the top-level package and on external functions, but can it be any where?) and what does it mean and what's the expectation on the tool. Now everything is implied from the summary/rationale.

Two use cases:

  1. Top level annotation (similar to the existing uses annotation) to specify the license of the Modelica source package.
  2. Annoation for external functions (similar to the existing LibraryDirectory annotation) to specify the third-party licences of external libraries.

@HansOlsson
Copy link
Collaborator

Design meeting:

Seems good - try to make ready for next release.

@HansOlsson HansOlsson added this to the ModelicaSpec3.7 milestone Mar 14, 2023
@HansOlsson
Copy link
Collaborator

HansOlsson commented Jul 7, 2023

Since we now have a prototype implementation I would suggest:

  • Merge master into this branch (to avoid merge conflicts later).
  • Add the few lines needed for the specification.
  • Then review it.

@HansOlsson
Copy link
Collaborator

Since we now have a prototype implementation I would suggest:

  • Merge master into this branch (to avoid merge conflicts later).
  • Add the few lines needed for the specification.
  • Then review it.

I think it would be good if we could progress on this simple (and fairly uncontroversial) MCP.

henrikt-ma and others added 5 commits August 29, 2023 22:06
Co-authored-by: Hans Olsson <HansOlsson@users.noreply.github.com>
Added prototype.
@beutlich
Copy link
Member

Please note, that I rebased and force-pushed the PR branch.

HansOlsson and others added 5 commits September 12, 2023 13:16
Since it can also occur at top-level packages we should likely add that as well
Co-authored-by: Henrik Tidefelt <henrikt@wolfram.com>
Co-authored-by: Henrik Tidefelt <henrikt@wolfram.com>
Add minor specification text corresponding to what has been implemented.
chapters/functions.tex Outdated Show resolved Hide resolved
chapters/annotations.tex Outdated Show resolved Hide resolved
@henrikt-ma
Copy link
Collaborator Author

After dealing with OSS licenses for some years, I prefer to have the utilized third-party licenses explicit set. See modelica/ModelicaStandardLibrary#4268 for what I mean. This way it is clear which licenses are directly produced by the original authors and which one are pulled-in by third-party OSS.

It doesn't sound like a bad idea to me, but I think we need a concrete proposal here, and I don't think modelica/ModelicaStandardLibrary#4268 gives all the answers. In my opinion, having a Licenses/Third-party suggests that no license files should be placed directly under Licenses, but that there should also be a directory for non-third-party licenses next to Third-party. This would make it clear that one always needs to make an active choice of where to place the file, and avoiding that the use of Third-party somehow ends up being interpreted as voluntary.

@HansOlsson
Copy link
Collaborator

Reviewers: Henrik, Elena

Would be good if we could those reviews to move this forward.

@HansOlsson
Copy link
Collaborator

After dealing with OSS licenses for some years, I prefer to have the utilized third-party licenses explicit set. See modelica/ModelicaStandardLibrary#4268 for what I mean. This way it is clear which licenses are directly produced by the original authors and which one are pulled-in by third-party OSS.

Even if I think that it is a good idea, I don't see that we need to standardize this, but that library authors can handle that themselves - including the naming of the license files, and whether non-3rd party licenses should be in a separate directory, or directly under licenses.

To me such over-standardization just risks delaying the development, reduce innovation, with very little gain.

The main part is that it should be clear what licenses apply to what component - for two reasons:

  • Tools can then automatically include them with generated contents.
  • Users can quickly find the licenses and get their legal experts to review them.

@henrikt-ma
Copy link
Collaborator Author

Even if I think that it is a good idea, I don't see that we need to standardize this, but that library authors can handle that themselves - including the naming of the license files, and whether non-3rd party licenses should be in a separate directory, or directly under licenses.

I agree that the standard should not prescribe fixed locations for the license files, as it goes against the idea of using a Modelica URI to locate the file. (If there were fixed locations, we should have simply stated that all relevant license files (and only those) should be placed in modelica:/ModelicaLibraryName/Resources/Licenses.)

If we would like to have special recognition of license files coming from third-party dependencies in the future, we could add another annotation: annotation(ThirdPartyLicense="modelica:/ModelicaLibraryName/Resources/ThirdPartyThing/TheirLicense.txt")

@beutlich
Copy link
Member

I agree with your comments @HansOlsson and @henrikt-ma. The main intention of modelica/ModelicaStandardLibrary#4268 was to increase visibility and transparency what's MA and what's third-party as "explicit is better than implicit".

chapters/annotations.tex Outdated Show resolved Hide resolved
chapters/annotations.tex Outdated Show resolved Hide resolved
chapters/annotations.tex Outdated Show resolved Hide resolved
@henrikt-ma
Copy link
Collaborator Author

The structure of the License-annotation is identical with the styleSheets which was recently added in #3409. Shouldn't we be introducing License in the same modern style (where the inclusion of constant would depend on whether #3448 is merged first)?

constant String[:] Licenses "URIs pointing to license files";

chapters/annotations.tex Show resolved Hide resolved
chapters/annotations.tex Outdated Show resolved Hide resolved
chapters/annotations.tex Outdated Show resolved Hide resolved
Co-authored-by: Henrik Tidefelt <henrikt@wolfram.com>
@HansOlsson
Copy link
Collaborator

Language group: "license text files" seems best, but think of other options during the week. Alternatives are "license conditions", "license agreements", and possibly more.

@HansOlsson
Copy link
Collaborator

Language group: "license text files" seems best, but think of other options during the week. Alternatives are "license conditions", "license agreements", and possibly more.

Looking more I think that even if "license agreements" could work it often refers to other agreements (for patents, trademarks, etc), but these licenses are primarily a copyright-license, so if we wanted to be clear it should be "copyright license agreements".

However it also seems to depend on the kind of license: https://opensource.org/licenses - just calls it licenses, whereas commercial licenses are often called license agreements (including having you actually sign that you agree to them).

According to 2024-02-20 phone meeting.
@henrikt-ma
Copy link
Collaborator Author

I'd simply call it "license file". See also https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/licensing-a-repository#determining-the-location-of-your-license

We're looking for something which is not called just license file to avoid collision with the licenseFile-annotation. I've updated it now to license text file according to #2900 (comment), but I'd be in favor of something more clearly distinct from license file.

@beutlich
Copy link
Member

beutlich commented Feb 27, 2024

I'd simply call it "license file". See also https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/licensing-a-repository#determining-the-location-of-your-license

We're looking for something which is not called just license file to avoid collision with the licenseFile-annotation. I've updated it now to license text file according to #2900 (comment), but I'd be in favor of something more clearly distinct from license file.

Hm, is a file License.md also a license text file or is it a license markdown file? I'd even claim that the annotation name has to match the other wording. I am actually in strong favor to call it license file.

@HansOlsson
Copy link
Collaborator

I'd simply call it "license file". See also https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/licensing-a-repository#determining-the-location-of-your-license

We're looking for something which is not called just license file to avoid collision with the licenseFile-annotation. I've updated it now to license text file according to #2900 (comment), but I'd be in favor of something more clearly distinct from license file.

Hm, is a file License.md also a license text file or is it a license markdown file? I'd even claim that the annotation name has to match the other wording.

I would say that "license text file" refers to the logical contents - i.e., that the "file" contains the "license text" in these cases.
So, whether the file format is plain text, markdown, pdf, or a jpeg with a photo of the license text(!) shouldn't matter here.

It may still be that we should use another name.

@beutlich
Copy link
Member

AI help for the rescue:

grafik

@HansOlsson
Copy link
Collaborator

Another solution would be to describe the other "license files" as something else (the files that actually provide computer-readable licenses).

However, looking closely it seems that when using FlexNet and similar programs the computer-readable files for licenses are often called "license files".

Co-authored-by: Hans Olsson <HansOlsson@users.noreply.github.com>
chapters/annotations.tex Show resolved Hide resolved
@beutlich
Copy link
Member

In preparation of the voting...

  • Is the term license text files finally resolved/decided? It rather looks still pending to me. If it is decided it is inconsistent in one location presumablely and inconsistent with FMI (where it is called license files in https://fmi-standard.org/docs/3.0.1/#structure-of-zip with example given). Note, that I am alo in favour to name it license files and give an example.
  • Apart from this naming issue, it feels confirmative that my MCP-0029 is on the finish line. As usual, the rationale was written within some days, but the final text takes years...

@otronarp
Copy link
Member

In the discussion above it sounds like the location is assumed to be given by a modelica URI. If that's the case, perhaps that should be spelled out more in text and not only in the code snippet. Like it is for the other external function annotations.

...location could be specified by using an URI name for the library directory, see section 13.5.

@HansOlsson
Copy link
Collaborator

In preparation of the voting...

  • Is the term license text files finally resolved/decided?

Yes. It was discussed at the latest phone meeting, and nothing better was found.

  • Apart from this naming issue, it feels confirmative that my MCP-0029 is on the finish line. As usual, the rationale was written within some days, but the final text takes years...

Yes, that is a constant problem. I think this one was unnecessarily delayed since "license" evoked a lot of other license-issues.

@henrikt-ma
Copy link
Collaborator Author

In the discussion above it sounds like the location is assumed to be given by a modelica URI. If that's the case, perhaps that should be spelled out more in text and not only in the code snippet. Like it is for the other external function annotations.

...location could be specified by using an URI name for the library directory, see section 13.5.

This is a good suggestion. Can we consider it Typos and similar trivial changes so that we can fix it during the evaluation period?

\section{License Texts}\label{license-texts}

For a top-level class the {\lstinline!annotation(License="modelica:/ModelicaLibraryName/Resources/Licenses/MyLicense.txt")!}\annotationindex{License}, gives a license text file for the class.
The annotation may give a scalar value or an array of values.
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here is a concrete proposal for addressing @otronarp's #2900 (comment):

Suggested change
The annotation may give a scalar value or an array of values.
The annotation may give a scalar string or an array of strings, where each string is a URI referencing a license text file, see \cref{external-resources}.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
MCP0029 License Export (MCP-0029)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

MCP-0029: Add License Annotation for External Libraries and Include Files
5 participants