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

Update Royalty-free license #5257

Merged
merged 2 commits into from
May 31, 2024
Merged

Update Royalty-free license #5257

merged 2 commits into from
May 31, 2024

Conversation

aurindam
Copy link
Member

Based on feedback from /slint-ui/slint/pull/3063


Desktop Application, Mobile Application, and Web Application are hereafter referred to as **Application**.
Desktop Application, Mobile Application, and Web Application is hereafter referred to as **Application**.
Copy link
Member

Choose a reason for hiding this comment

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

I think "are" is the correct verb for a plural subject (list).

Suggested change
Desktop Application, Mobile Application, and Web Application is hereafter referred to as **Application**.
Desktop Application, Mobile Application, and Web Application are hereafter referred to as **Application**.

@@ -30,6 +30,8 @@ You may distribute the Software as part of an Application, modified or unmodifie

The license does not permit to distribute or make the Software publicly available alone and without integration into an Application. For this purpose you may use the Software under the GNU General Public License, version 3.

The distribution of the Software as part of a Desktop, Mobile, or Web Application is permitted in object code form only.
Copy link
Member

Choose a reason for hiding this comment

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

This new term - while I agree with it - justifies IMO giving this license a version 1.3.

Choose a reason for hiding this comment

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

This prevents you from distributing application in the source code form? Why?

Copy link
Member

Choose a reason for hiding this comment

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

Why does it prevent you from distributing the application source code? The “Software” refers to Slint here, not the application source code.

Copy link

Choose a reason for hiding this comment

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

This indeed forbids vendoring Slint, right? Is using git submodules for Slint then allowed? If so, how is that different from vendoring? If not so then how is using git submodules different just pulling Slint through the package manager?
Also you can still distribute patches to slint, and they can be applied automatically by the build system.
The clause is very weird.

I mean I kinda get the point why it was added, as you can work around distributing Slint by itself by just making a very dumb application right now. I think that's the reason why it was added? I've seen such workarounds in real life, you can ship batteries on a plane by putting them in something like a 0.5$ flashlight. But I'm not sure it helps much in this case.

Copy link
Member

Choose a reason for hiding this comment

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

Distributing a git repository where one of the files contained within (.gitmodules) contains the url to the slint repo does IMO not constitute distribution of the Slint sources (merely a url to it).

I think the scenario to address here is that somebody decides to license Slint under the terms of the royalty free license, wraps it (Slint; the “Software”) into their own SDK (let’s call it Flint) and sells Flint as GUI toolkit for Rust and C++ developers.

@aurindam is that accurate in terms of intent?

Copy link
Member Author

Choose a reason for hiding this comment

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

Yes, I think we have the same understanding.. that is, to explicitly prevent the scenarios like below:

I think the scenario to address here is that somebody decides to license Slint under the terms of the royalty free license, wraps it (Slint; the “Software”) into their own SDK (let’s call it Flint) and sells Flint as GUI toolkit for Rust and C++ developers.

and

I mean I kinda get the point why it was added, as you can work around distributing Slint by itself by just making a very dumb application right now.

Maybe a simpler way to phrase it would be - "You are not allowed to resell Slint" instead of restricting distribution to object code since thats the root issue.

@@ -28,7 +30,7 @@ You may distribute the Software as part of an Application, modified or unmodifie

## 3. Limitations

The license does not permit to distribute or make the Software publicly available alone and without integration into an Application. For this purpose you may use the Software under the GNU General Public License, version 3.
The License does not permit to sell, rent, or lease the Software, or distribute or make the Software publicly available alone and without integration into an Application. For this purpose you may use the Software under the GNU General Public License, version 3.

Choose a reason for hiding this comment

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

Suggested change
The License does not permit to sell, rent, or lease the Software, or distribute or make the Software publicly available alone and without integration into an Application. For this purpose you may use the Software under the GNU General Public License, version 3.
The License does not permit to sell, rent, or lease the Software. Additionally you may not distribute or make the Software publicly available alone and without integration into an Application. For this purpose you may use the Software under the GNU General Public License, version 3.

This is two different statements right? "available alone and without integration into an Application" refers only to the second one? Maybe better to split them.

It seems to prohibit you from selling the Application that integrates Slint.
Do you want to allow using this license for commercial purposes in general?
I don't think there is a clear way of prohibiting selling GUI toolkits that use Slint while allowing most of the typical applications, because that is a very subjective thing.

If you want to permit selling: I've looked at how the non-free licenses worded https://www.gnu.org/licenses/license-list.html and I think what you should do instead is to add termination clause and/or request user to receive permission to sell the software as part of the application. This allows for SixtyFPS to decide to terminate "inappropriate" uses of the license if they wish, post-factum and/or beforehand. Of course this seems like a rule that is too powerful, you should mention specific cases for when SixtyFPS may decide to terminate the program if you decide to add that.

Copy link
Member Author

Choose a reason for hiding this comment

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

Maybe better to split them.

Yes, that would be better. Thanks.

Do you want to allow using this license for commercial purposes in general?

Yes, we want to allow building commercial / proprietary applications.

I don't think there is a clear way of prohibiting selling GUI toolkits that use Slint ...

I think a GUI toolkit that uses Slint would not be considered as an application rather it would be classified as an SDK, right? And this license only permits creation of an application.

Choose a reason for hiding this comment

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

I think a GUI toolkit that uses Slint would not be considered as an application rather it would be classified as an SDK, right? And this license only permits creation of an application.

To make it clear, my points were that:

  1. With how Application is defined here it would include libraries
  2. Quite a lot of SDKs are just a regular GUI applications, for example game engines (editors), embedded tookits (speaking of vivado), some GUI toolkits (although not as popular there), care is needed to handle such cases
  3. Term SDK is not defined here, and it is as clear to me as the difference between a "library" and the "framework" (not clear at all, is web browser a SDK?)

The points were addressed more or less in the new version.

@aurindam aurindam force-pushed the Update-Royalty-free-license branch from 5acea83 to c05afe7 Compare May 30, 2024 13:28
@tronical
Copy link
Member

It looks like that there are a few files that still need updating?

# BAD LICENSES

'LicenseRef-Slint-Royalty-free-1.2' found in:
* internal/compiler/tests/syntax/functions/functions_purity_recursive_5220.slint
* internal/compiler/tests/syntax/lookup/issue_5246_states_function.slint
* tests/cases/issues/issue_5260_init_inlined.slint
* tools/lsp/preview/text_edit.rs

The license does not permit the use of the Software within Embedded Systems. An **Embedded System** is a computer system designed to perform a specific task within a larger mechanical or electrical system.
The License does not permit the use of the Software within Embedded Systems. An **Embedded System** is a computer system designed to perform a specific task within a larger mechanical or electrical system.

The License does not permit the distribution of Application that exposes the APIs, in part or in total, of the Software.

Choose a reason for hiding this comment

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

This is now much better than previous attempts, although still handwavy with the word "exposes", I think the intention is understandable, thought about making suggestion like this too.
As an another alternative was thinking of defining "Applications that are expected to be used as buildings blocks of other Applications" but that prohibits usecases like game engines, and would be even harder to define correctly, and probably is not the direction you want to go to.
Good job with listening to the feedback.

Copy link

Choose a reason for hiding this comment

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

Ah, also another another way was to restrict Slint uses for applications that explicitly advertise themselves as GUI toolkits.
The term "GUI toolkit" then would need to be expanded on, obviously.

Copy link
Member Author

Choose a reason for hiding this comment

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

@kanashimia Thanks for the feedback. We want to keep the text as simple as possible. If the intention is understandable (like you mentioned) then its already good. We can always clarify on a case-by-case basis.

Add clarification that Application may not expose Slint APIs
@aurindam aurindam force-pushed the Update-Royalty-free-license branch from ae8e8bc to 1e78790 Compare May 31, 2024 08:04
@aurindam aurindam merged commit 9a3aa26 into master May 31, 2024
36 checks passed
@aurindam aurindam deleted the Update-Royalty-free-license branch May 31, 2024 08:53
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.

None yet

3 participants