I’m not very used to that whole licensing stuff, so I better ask (probably newbie questions):
I’d like to use some code from Poly2Tri for one of my packages (my package is source only, no DLL). I want to strip stuff I don’t need and change other parts to better interoperate with Unitys data types.
But I got a couple of questions regarding the Poly2Tri license (New BSD License/BSD-3-Clause) and what I am allowed to do or not:
Am I allowed to add some individual classes only to my package (leaving the file’s P2T CopyRight notice as is, just adding that I did some personal changes) ? If that’s not allowed, is it legal to bake an unmodified DLL and add this to my project?
If I want to sell a (source) package containing the above (preferable partial and modified classes) under the AssetStore’s default license, what do I need to do to respect the Poly2Tri license? Do I need to mention Poly2Tri in my Docs/ReadMe? (would do this anyway)
You surely should be asking the folk that wrote the new BSD license, not users of the Unity forums, but first read the license in it’s entirety.
If that where a LGPL license you’d be forced to given un your source code free under the LGPL license terms to others. That’s the main reason all these other Open Source SW licenses have come into existence and what you want to avoid if you’re to make a living as a SW engineer.
but generally in all these open source licenses 1. partial use of code is allow but you have to tell where to fetch the whole package, if not necessarily provide for the distribution of the entire package 2. You really need to read the license. At a minimum the license should be referenced in the files that use it’s source code and a separate text file that contains the full text of the license should be distributed with your package.
You may need to, but it’s still a legally binding document. And if one is still unsure after reading it (BSD should be pretty straight-forward though), then it’s best to either ask a lawyer or not use whatever the license is applying to.
I am not a lawyer, but with regards to permissive open source projects and the Asset Store, from my own experience:
I recommend building your files into a binary (partial or full), and linking to your license in the documentation (be sure to state that this license only covers the open source library). If you want to provide source, you can either put it up on GitHub, include it in a separate ZIP, or give the users a way to get the source from you.
The reason for this is while technically you can just include the code and make sure the license header is present for all library-related code, you may still get rejected from the Asset Store. The Asset Store team tries to ensure that there isn’t confusion between the Asset Store EULA and open source licenses, and potential users can get confused about what your software is covered under. Separating out that code just makes it easier for everyone involved.
Things get a lot more hairy if you’re using a copyleft license (Poly2Tri is not copyleft) - I wouldn’t recommend those at all, unless you very clearly understand the licensing terms. Some of them are not even compatible with the Asset Store EULA at all.
Provider represents and warrants that its Assets shall not contain any software licensed under the GNU General Public License or GNU Limited (Lesser) General Public License, or any other license with terms that include a requirement to extend such license to any modification or combined work and provide for the distribution of the combined or modified product’s source code upon demand so that Customer content becomes subject to the terms of such open source license; or (ii) any software that is a modification or derivative of any software licensed under the GNU General Public License, Limited (Lesser) Public License, or license with terms similar thereto so that Customer content become subject to the terms of such open source license.
Well that answers the latter part of what I said - pretty much any copyleft license is explicitly incompatible with the Asset Store EULA. However, Poly2Tri isn’t under a copyleft license, so that clause wouldn’t apply. In fact, I’m pretty sure P2T is already in the Asset Store (part of Poly2Tri is used in Farseer Physics, which has a version on the store, for example)
It’s pretty wide spread in the AssetStore, GameDraw uses it as well. I’ve now built a DLL from it and will add it together with a License.txt containing it’s license, also P2T will be mentioned in the docs and it’s disclaimer added. I should be fine with this.
Note that the License.txt isn’t required if you mention the license in your documentation. I’ve gotten rejected for having one hanging around, even though I made it clear that the license only applies to the library. I was told that it should still be removed in order to prevent confusion.
In addition to knowing what you can and cannot provide, the most important thing to look at is:
“Do any of the licensing terms apply restrictions to derivative works?”
If any of the terms of a component license apply any restrictions to a derivative work (i.e. the end users’ projects), then it cannot be used. This is why the GNU licenses (and likely any attribution type license as well) will not work with the Asset store. MIT license will, however, as it poses no restrictions to either your use of the content or what the end user does with it other than that you need to provide the same license with your modification of the MIT licensed code, although you’re not required to provide source.
Jake - contact the author(s) of the project via their project home page and just ask. When working at Elluminate (now Blackboard) I had a huge fight with management to allow me to incorporate an embedded DBMS (mckoi) into our web admin tool. So instead of arguing with them about lawyers, cost, etc… I just pinged the guy and asked ‘how much for X?’. It ended up being quite inexpensive, they were happy to work with us and wrote a nice contract that gave us everything we needed.
In short - contact author and discuss, you might be surprised how well things can work out.