Page 1 of 4

Licence violations and incompatibilities

Posted: Mon Aug 01, 2011 8:59 pm
by Paradox
(Note: Originally posted at http://mystonline.com/forums/viewtopic.php?t=24900. Cyan has locked all their open-source forums, which feels a bit like they have no intention of actively participating (or resolving these issues))

With Plasma released under a plain GPLv3 licence, there are a few problems that need to be addressed. Sooner is better, especially since Microsoft might not be too happy about having some of their code inadvertently released as GPL.

The first part of the problem is where Cyan used 3rd party code in Plasma under a licence like the MIT licence, but then copy-pasted a GPLv3 header on all the files when the code was released.
In particular, PubUtilLib/plWinStrBlock/strblock.h and PubUtilLib/plWinStrBlock/strblock.cpp are copyright by Microsoft.
Also the files in FeatureLib/pfStackTrace (such as pfStackTrace.cpp, pfPrintStackTrace.cpp, and pfMapFile.h) are copyright by Jani Kajala, who also demands that the copyright notice be made visible in all supporting documentation.

There's also two classes in PubUtilLib/plWndCtrls (basewnd and webhost) that have the following comment:
Stolen from: http://www.mvps.org/user32/webhost.cab
No copyright notices, so I assume it's public domain -Colin

I'm entirely sure that Cyan had no intention of violating these licences when they released the code (and as far as I know, both licences allow the code to be used in GPL software). The problem is that they've pasted the GPL licence on top of the existing licences. It's always best to be careful around the GPL, as it has caused problems in the past for companies (like the infamous DLink case).


The next issue in licensing is that Cyan didn't add provisions for linking against PhysX or the 3DS Max SDK. It's also a bit unclear whether a special clause is needed for linking against OpenSSL (on Linux I don't believe it is, but for Windows it might be).
Without these provisions, nobody can (legally) distribute a compiled binary. Of course, it's very unlikely that anyone would try to stop you, since that would be entirely against Cyan's interest in open-sourcing the code. But technically, it is still a violation of copyright to distribute any compiled Plasma code.

This was originally mentioned months ago, when the code was first released. The problem now is that in order to change the licence to add these provisions, Cyan needs the permission of everyone who has contributed code to the project. That number is starting to grow, as can be seen on the contributors list for the GoW fork.

At this point, it seems more likely that PhysX will be stripped out and replaced with Bullet before Cyan has a chance to update the licence. This solves the problem for the client, but the Max plugin is still a problem because it links against the Max SDK.

Re: Licence violations and incompatibilities

Posted: Wed Aug 03, 2011 9:25 pm
by Stucuk
When it comes to files which Cyan have claimed as theres can't you just replace them with the Original versions of the file? That should be the simplest way around it. When it comes to PhysX/3DS Max SDK's it shouldn't be a problem as Cyan are not likely to sue people for compiling them in with the CWE Engine(Only Cyan can sue as its there License people would be violating).

Re: Licence violations and incompatibilities

Posted: Fri Aug 05, 2011 5:27 am
by branan
Anyone who's contributed code under the GPL (without an exception) could sue, actually. For small contributions we can just remove them, but it's still not a spectacular situation.

Re: Licence violations and incompatibilities

Posted: Fri Aug 05, 2011 5:32 am
by Hoikas
Nvidia can sue
PhysX SDK EULA wrote:5. Restrictions. You will not, and will not permit others to: (a) modify, translate, decompile, bootleg, reverse engineer, disassemble, or extract the inner workings of any portion of the PhysX SDK except the Sample Code and PhysX Extensions (which include Vehicle and Character Controllers), (b) copy the look-and-feel or functionality of any portion of the PhysX SDK except the Sample Code; (c) remove any proprietary notices, marks, labels, or logos from the PhysX SDK or any portion thereof; (d) rent, transfer or use as a service bureau all or some of the PhysX SDK without NVIDIA’s prior written consent, except in the form of Physics Applications and subject to the requirements of this Agreement; (e) utilize any computer software or hardware which is designed to defeat any copy protection device, should the PhysX SDK be equipped with such a protection device; or (f) use the PhysX SDK in any manner that would cause the PhysX SDK to become subject to an Open Source License. "Open Source License" includes, without limitation, a software license that requires as a condition of use, modification, and/or distribution of such software that the PhysX SDK be (i) disclosed or distributed in source code form; (ii) be licensed for the purpose of making derivative works; or (iii) be redistributable at no charge. Unauthorized copying of the PhysX SDK, or failure to comply with any of the provisions of this Agreement, will result in automatic termination of this license.
Can't argue with the facts.

Re: Licence violations and incompatibilities

Posted: Fri Aug 05, 2011 12:55 pm
by andylegate
Here is the full EULA for the PhysX Software Developers Kit (PhysX SDK):

http://developer.download.nvidia.com/as ... EULA_3.pdf

Re: Licence violations and incompatibilities

Posted: Fri Aug 05, 2011 5:25 pm
by Stucuk
branan wrote:Anyone who's contributed code under the GPL (without an exception) could sue, actually. For small contributions we can just remove them, but it's still not a spectacular situation.
I stand corrected, forgot about the GPL's retarded "Everything becomes GPL even if its got another license embedded in it" rubbish.

Is it possible for you to add your own exceptions to code which you add to the project? If so can't you just remove all the offending code, add exceptions and then add the original versions of that code?

Re: Licence violations and incompatibilities

Posted: Fri Aug 05, 2011 8:27 pm
by Mac_Fife
Stucuk wrote:Is it possible for you to add your own exceptions to code which you add to the project? If so can't you just remove all the offending code, add exceptions and then add the original versions of that code?
No. Only the holder of the copyright of the GPL'ed work can designate what exceptions can be permitted. Because of GPL's "copyleft" nature, all derivative works must inherit the original license terms, so you can't add or remove license terms in any derivative.

On a side note, that clause in the PhysX SDK License that Hoikas pointed out is kinda typical of the redundant over-statement that is sadly typical in many (commercial) restrictive licenses. It's one of a number of clauses in legalese that basically claims a protection that they inherently already get from asserting copyright :? - these licenses typically amount to a list of things that the licensor won't permit you to do (some of which are often argued to run against the fundamental rights of a consumer). "Open" or "Free" licenses tend to work the other way round by first asserting the copyright of the originator and then expressing what you can do with the product.

Re: Licence violations and incompatibilities

Posted: Sat Aug 06, 2011 12:42 am
by Skoader
This is unfortunate.

What's the best way to move forward? Can we get permission from Cyan to add the necessary exceptions ourselves?

Re: Licence violations and incompatibilities

Posted: Sat Aug 06, 2011 12:55 am
by JWPlatt
Sorry to have been mute on this issue for so long. The same thread seems to be popping up everywhere. (o.O) I've been heavily on a CK project that is further along now, and other real life matters as the summer season moves nicely along.

I'm/we're going to see about discussing GPL exceptions and also asset licensing with Cyan sometime in the next two to four weeks, depending on how busy we all are.

If you want to provide a list of exactly which exceptions we need, the wording, etc, etc, etc, or which license to use for the assets, feel free, though our moderator at large may split that off into its own topic if there's much response.

Re: Licence violations and incompatibilities

Posted: Sat Aug 06, 2011 1:54 am
by Hoikas
Some interesting reading regarding the 3ds Max plugin.

JWPlatt: I know that the GNU GPL is seen as the "open source license" but it tries to enforce freedom upon us in such a way that it's actually restricting our freedom at this point. Even if we do get an exception for PhysX, there may be future issues (like the Max SDK problems). I think we would be better served by moving to the Apache or MIT license, which has no viral clauses requiring us to release source code for all third party libraries, SDKs, etc. that we may use.

----EDIT----
Another example for "problems with the GPL" is that the secure file preloader violates the GPLv3's anti-tivoization clause. The external releases prevent you from running modified python. So, technically, Cyan is violating their own license by distributing the UruExplorer.exe on MOULa with dragossh's GPLv3 contributions.