-
Notifications
You must be signed in to change notification settings - Fork 6.4k
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 xbox supports expressions for failing ports with copyleft licenses #31770
Conversation
This PR pull a legal perspective in the https://learn.microsoft.com/en-us/vcpkg/reference/vcpkg-json#supports
|
A number of these ports do not build successfully for the Xbox platform as they are. The key point is even if they do happen to technically build with the |
This is normal for new platforms. Platform sub-sets (uwp, xbox) seem to make things worse.
The same is true for iOS as long as you must ship via the App Store. |
This is 'low-hanging fruit' for excluding ports from consideration for xbox. Currently we assume that unless otherwise stated, a If we promote xbox from 'community' we'll likely want to flip the logic, and the more ports we have a firm answer on the better IMO. |
This is forcing rebuilds on all users, no matter if they care for xbox or not. This should only be done if it is meant to stay. Low-hanging fruit is to add those ports to Given that you already touch all those ports, you could cover the topic as well by a dependency on a meta-port |
I agree with @dg0yt. Supports shouldn't be used to exclude platforms for "legal" reasons which might change over time. (since the list includes eigen3 I also think that xbox development currently is a big waste of human time which could otherwise be used to change the agreement ;) ) |
This will be hard to maintain. |
I agree that we also need some better mechanism here, and I believe that we can implement that in the vcpkg tool based on the SPDX identifiers. Note that of the 176 ports updated here, 124 of them fail for the Xbox triplets as they are. There's no sense in expecting these to add xbox support per the comments above, so they should be marked as not supporting xbox based on the build failures alone:
|
Of the remaining 52 ports here that 'build' with WINAPI_FAMILY_GAMES, there are a number of them that simply never apply to the Xbox console platform (i.e. their function does not apply to the console or would never work due to the security model of the platform). In some cases, the libraries are 'header-only' meaning the build success is a false-positive in any case.
For developer-only scenarios, these might be useful since they don't have to use them for their release build.
That just leaves the following ports as the only ones I'm actually removing purely based on the license:
For the ports in the last two categories, I could revert those particular port changes and we can pursue a more code-driven system for warning about the copyleft issue for those. The rest of the expression changes are all valid based on technical support considerations. |
I don't think this is the right approach:
|
For license that have a Note that any commercial licensing has to be handled on a case-by-case basis. The owner of the library would have to themselves sign the Xbox Developer Agreement with a Middleware Addendum.
The purpose of the xbox triplets to enable Xbox developers to consume open source in a way that is compatible with the platform easily and efficiently, as well as making it easier to track dependencies. It also allows package maintainers a way to validate their library for the xbox platform even without access to the Dev Kit. Right now about half the ~2000 packages will build for this platform. Generally speaking, "permissive" open source licenses are totally fine, and that's most of the ports in VCPKG. This PR is focused on the ~1% that uses a "copyleft" license. A "strong copyleft" license is not compatible with a closed platform like Xbox or iOS or any other console from another manufacturers. That fact is not going to change. A "weak copyleft" license is in practice not compatible with closed platforms either as there's no way an end-user can rebuild and replace a LGPL DLL for these platforms. Marking these ports as not supporting xbox is because (a) they already fail to build for xbox, and (b) there's no point in trying to get them to build because they have incompatible licenses. Overall, we are talking about a very small number of ports. If you look at them individually, you'll most of them don't apply anyhow. That said, my primary concern is that through the 'dependency cone' developers or package maintainers could end up consuming a 'copy left' licensed library indirectly for the xbox triplet would ultimately lead to problems for titles trying to use it. |
AFAICS it is the same situation as with iOS (and maybe other fancyOS). |
b6c2a19
to
3ae08be
Compare
I've rescoped this PR to just adding I'm opening a distinct issue for the 'copyleft warning' issue generally. #31820 |
@FrankXie05 This PR is no longer "bloated". It's updating the supports term for xbox for 124 ports that fail to build with that triplet, and there's no reason to expect they every will support xbox. |
You always have to ask the copyright owner(s), if he/they offer the code under other license. As for example ableton / ableton-link: https://github.com/Ableton/link#license |
@JoergAtGithub ableton / ableton-link wouldn't work on xbox anyhow since you can't just connect arbitrary devices to the system anyhow... FWIW. |
Convert this PR to draft. |
I've addressed the concerns here about updating ports purely for licensing reasons. The port edits here are legitimate metadata changes to indicate these ports do not support the xbox platform in the supports expression. All ports that need a 'to be discussed' solution were already reverted and a new tracking issued opened. |
98cad38
to
2dc37ce
Compare
Rebased to resolve conflicts. This is ready to submit. All ports that are "copyleft" and do not fail to build with Xbox despite potential technical issues at runtime or legal concerns are unchanged in this PR and have been added to this tracking issue for future work. All ports updated in this PR are those that currently fail to build with |
Hmmm it isn't clear why this needed a response from @walbourn ? @FrankXie05 can you explain? :) |
Just pushing forward the progress of PR and resolving the conflict between PR and master. :) |
2dc37ce
to
c16a368
Compare
I didn't touch nettle but it's failing in the CI after a rebase. |
Source asset download error. |
14f59a5
to
bbb6c7b
Compare
Rebased again and everything builds. |
bbb6c7b
to
31134c0
Compare
Rebased and resolved conficts again |
31134c0
to
19bb5bb
Compare
Rebased and resolved conflicts again |
/azp run |
Azure Pipelines successfully started running 1 pipeline(s). |
/azp run |
Azure Pipelines successfully started running 1 pipeline(s). |
/azp run |
Azure Pipelines successfully started running 1 pipeline(s). |
Open Source libraries that only offer 'copyleft' style licenses are not compatible with the Xbox developer agreement. Therefore, to avoid developer confusion this PR updates all ports that currently fail to build with the xbox triplet -AND- only offer a copyleft license to indicate they don't support xbox. In other words, there's no reason to "fix" these ports to support xbox given their current licensing model.
Package maintainers can update their ports in future to support xbox if they (a) modify the source to build with WINAPI_FAMILY, and (b) offer a license option compatible with the Xbox Developer Agreement (license: null if a commercial option is available, or adding an "OR" option with a permissive style license).