Triangle.h is not MIT
jratcliff63367 opened this issue · comments
So, just as an FYI. This library is labeled as being MIT license. However, it uses 'Triangle.h' which is not at all compliant with an MIT license. So anyone who tries to use this library will have license issues due to that. The code will not work without 'Triangle.h' so really the library as a whole cannot be used in any commercial product or is otherwise not compliant with the strict restrictions found in 'Triangle.h'
Same happens with ManifoldPlus, but Manifold (without the Plus) seems to be compliant with MIT.
https://github.com/artem-ogre/CDT seems like a good candidate for a replacement. It is MPL 2.0.
EDIT: Just saw who you are, glad to see one of the main developers of V-HACD push for the success of other convex decomposition algorithms :)
This library does give slightly better results than V-HACD but it's quite a bit slower too. So I was considering seeing if I could optimize it to make it run faster but when I saw Triangle.h that was a show-stopper. The header file literally says 'Contact us for commercial use'. That's about as far away as you can get from a clean license. Way back when I wrote my first version of convex decomposition I ran into this problem then as well. Doing CSG is non-trivial work. That's the main reason Khaled and I went to voxel space instead.
Solved (partly) by #5, unless there is another MIT CDT library I am not aware of.
I noticed that all problematic third party libraries are only necessary to create manifold meshes for non-watertight inputs.
As an experiment, I removed Eigen, GLM, and IGL/ManifoldPlus and managed to build a version for watertight inputs.
The code still contains LGPL (sobol.*
), a generic public domain license (src/quickhull
), ZLib (src/btConvexHull/*
) as well as the MIT portion of CoACD itself. However, none of those should preclude commercial use anymore.
I am not sure what to do with that branch, however. I doubt @SarahWeiii will accept a PR since it removes a CoACD feature that some people might need. On the other hand, a CoACD version for commercial use, if only for watertight inputs is also valuable.
Any ideas?
In a personal branch I am working with only Manifold
(instead of ManifoldPlus
) for non-watertight inputs. Eigen
is MPL2 and GLM
is MIT, so no problem about that. Manifold
seems to have no problem with commercial applications and in CoACD, ManifoldPlus
is only used for thin models.
In the paper, Wei et al. cite Manifold
and not ManifoldPlus
for non-2 manifold inputs. For what I see, there is no difference between using Manifold
and ManifoldPlus
(in my applications I do not use any thin objects).
You maybe should open a new issue addressing these problems. The two more problematics licenses are ManifoldPlus
and + triangle.h`.
sobol
seems to be used only for pseudorandom sequences. There should be other libraries that do similar work, however LGPL is commercial friendly too, so personally I do not have any problem with this library.
As mentioned by @Abde5 , ManifoldPlus
is only used for pre-processing thin objects that cannot be well solved by Manifold
. I have added an option for disabling this library. If you don't have non-manifold thin objects as input, you can disable ManifoldPlus
by --no-manifold-plus
or -nmp
.
Cool, thank you.