rygo6 / GTLogicGraph

A generic graph made off the UIElement GraphView built into Unity.
Other
211 stars 19 forks source link

A question about the license #4

Closed OscarAbraham closed 4 years ago

OscarAbraham commented 4 years ago

I saw that the Shader Graph repository is licensed under the Unity Companion License: https://github.com/Unity-Technologies/ShaderGraph/blob/master/LICENSE.md

It says that: "Unity will own all right, title, and interest to all intellectual property rights (including patent, trademark, and copyright) in the Software and derivative works of the Software, and you hereby assign and agree to assign all such rights in those derivative works to Unity".

Do you think that it would mean that Unity owns this library and any library derived from it? Is the MIT license really valid? Thank you very much for everything.

rygo6 commented 4 years ago

The MIT license is probably not valid. I just clicked MIT because its what I always click. Also I thought I would refactor out more of the unity source than I actually ended up refactoring out and I also didn't really think this repo would get much attention. Technically it should probably be Unity companion license.

I however don't think Unity really cares much. I have never heard of the Unity Companion License being enforced. I assume it's probably in there to prevent a competitor integrating some C# layer on their engine and then stealing a bunch of unity source code. If what your doing is writing something to go on the Unity asset store, then they probably don't care, as that is the very reason they release this stuff, to help developers contribute to their ecosystem.

Personally though, I am basing an editor tool off of this system and have purposely kept this node system seperate from the rest of it for this reason. So the node system is open source, and probably willl be under the unity companion license if I ever got attention from Unity lawyers on it, I still doubt that will happen though. But the actual custom logic nodes I am writing are in a seperate private repo.

OscarAbraham commented 4 years ago

Hey, I understand. What a complicated situation out of something that probably shouldn't matter, but lingers, like a vague ghost. This library is really nice because its graphic part performs well, and because it has a familiar look and feel. It could make the standardization of many community tools and plugins a lot easier. But its license, argh, the very small threat of Unity shutting down either OSS or paid plugins, it kind of worries me. Do you think that if we asked Unity to release this library that they technically own (not the Shader Graph, but your GTLogicGraph) under the MIT license (or another similar one), for the benefit of the Unity ecosystem, they would accede?

rygo6 commented 4 years ago

So I think this remaining under unity companion license is ok. Like I said I've actually been working on something intended to go into the unity asset store with this, but all the "proprietary" code is in an entirely different repo. So if I ever ship, the code from that other repo would be under my closed source commercial license. But the code from this repo would also be included under unity companion license, or actually just MIT until lawyers complain if at all :)

I've purposely set this up so you can create new nodes with it that aren't in this library for that reason.

OscarAbraham commented 4 years ago

Well, but you could not legally sell under the asset store license something that includes this code, could you? You are not allowed to have other license than the asset store license there, and the Companion License seems to be mutually exclusive with that one.

rygo6 commented 4 years ago

So I think clause 1 of the Unity Companion License actually allows that:

  1. Unity Companion Use Only. Exercise of the license granted herein is limited to exercise for the creation, use, and/or distribution of applications, software, or other content pursuant to a valid Unity content authoring and rendering engine software license (“Engine License”). That means while not limited to exercise in the software licensed under the Engine License, exercise may not be for any purpose other than the creation, use, and/or distribution of Engine License-dependent applications, software, or other content. No other exercise of the license granted herein is permitted, and in no event may the Software be used for competitive analysis or to develop a competing product or service.

Specifically this: "exercise may not be for any purpose other than the creation, use, and/or distribution of Engine License-dependent applications"

I'm not a lawyer, so if you have more knowledgable people you could run this by, I would appreciate that. But I interpret that clause to mean you can use the Unity Companion License to make and sell anything that is intended to be for Unity.

I interpret the primary purpose of the license is to prevent people from taking Unity C# code and then getting it to run on top of Unreal or something else with a C# layer.

OscarAbraham commented 4 years ago

I guess you could be right. That sounds more like a clause designed to limit the use of the Software than a clause to allow you to do things with it, though. I mean, it does not even say you are allowed to sell the Software, it just says you are allowed to use it to distribute applications and content that depend on the main Unity License. To distribute applications doesn't even necessarily mean to distribute this Software, it just means to use this Software to distribute applications that you are allowed to distribute. Since Unity owns the Software, under certain interpretations, it means that Unity is not giving you a license to sell the Software (it doesn't say so anywhere, so it would come down to the legal interpretation of "distribute", which depends a lot on the jurisdiction and the matter). There are some very convoluted implications.

Something that is very clear is that it says: "This License, including the copyright notice associated with the Software, must be provided in all substantial portions of the Software and derivative works thereof". That means that it could not have the EULA from the asset store, and one is only allowed to change the asset store license if one has an specific deal with Unity.

It also says: "This License may be modified or updated; upon any such modification or update, you will comply with the terms of the updated License for any use of any of the Software under the updated License". Which means that, even if there were no problems now, there could be later.

I think this license is meant for internal libraries, simple community tools, examples, and, mainly, extra features for Unity packages. It seems to me that Unity doesn't want to allow for the selling of products based on this libraries that compete with features that they are developing. Like, as an example, their own visual code editor. Why else would they include clause 3.2? They would still be protected against someone using their code for stuff not related to Unity by the rest of the license. Owning the derivative software has to serve another purpose. And even if it didn't, or if they didn't have any anti-selling intentions, there are still enough clauses that seem to prevent this from being compatible with their own EULA on the Asset Store. I will investigate though, there are a couple of people I can ask that might know more, then I'll tell you.

Thank you very much for your time. :)

OscarAbraham commented 4 years ago

Hm, I found this: https://support.unity3d.com/hc/en-us/articles/360013314071-Am-I-allowed-to-use-content-that-has-a-license-which-states-I-am-allowed-to-resell-or-distribute-it- So I think it does mean that if the other libraries are only a separate part of your software, you include a ThirdPartyNotices document, and that they don't prohibit anything in the EULA, they can be on the Asset Store (GPL cannot be used because you cannot limit usage with GPL). I'm pretty sure that allows you to use this on the asset store, unless they change the Companion License in the future.

If this license is determined to be enough for relevant uses, I would advise then to change this license to the proper Companion License. My main concern is not so much that Unity could get you in trouble for not following their rules, but that others might not be aware of the legal implications that the Companion License has over this library. Like, how you are taking the precaution to develop some parts of your projects separate from this library, in preparation for the very remote case of some unforeseen practical implications.

That, I think, is kind of your very personal decision, so I'll close this issue if that's OK with you. Thank you a lot for your time. I wish you the best.