wo80 / Triangle.NET

C# / .NET version of Jonathan Shewchuk's Triangle mesh generator.
463 stars 85 forks source link

License Confusion #6

Closed fhaag closed 2 weeks ago

fhaag commented 6 years ago

According to the readme file, this library is released under the MIT License. Among other things, the MIT License allows usage of the so-licensed code in commercial products.

However, the title page says that this library "is a C# port by Christian Woltering of Jonathan Shewchuk's Triangle software." As far as I understand, that usually implies the original author's copyright and licensing terms extend to the ported version. When I go to the website of Jonathan Shewchuk's Triangle library, the text there says: "Please note that although Triangle is freely available, it is copyrighted by the author and may not be sold or included in commercial products without a license." (emphasis by myself).

So, which one is it?

Geri-Borbas commented 6 years ago

I talked with Christian Woltering before creating this repository, he gave me his explicit consent to share the C# port here on GitHub, he even exported / sent me the Documentation to share it somehow later on.

Rights to use the original library should be asked from Jonathan Richard Shewchuk himself, I suppose.

Let me know once you have any answer from Jonathan.

wo80 commented 6 years ago

The unclear licensing situation was one reason for me not to move the project to Github.

One might argue, that the original license is not very clear about how a derived work like Triangle.NET should be treated:

You may distribute modified versions of this code UNDER THE CONDITION THAT THIS CODE AND ANY MODIFICATIONS MADE TO IT IN THE SAME FILE REMAIN UNDER COPYRIGHT OF THE ORIGINAL AUTHOR, BOTH SOURCE AND OBJECT CODE ARE MADE FREELY AVAILABLE WITHOUT CHARGE, AND CLEAR NOTICE IS GIVEN OF THE MODIFICATIONS.

Copyright notice is given, so this shouldn't be a problem. But what about the license? What does MADE TO IT IN THE SAME FILE mean?

Distribution of this code as part of a commercial system is permissible ONLY BY DIRECT ARRANGEMENT WITH THE AUTHOR.

He explicitly talks about this code and not about derived work.

Anyways, I've gotten a lot of requests regarding licensing of Triangle.NET over the years, and my advice was and is: if you want to use Trianlge.NET in a commercial product, try to get into contact with Mr Shewchuk.

The problem with that is: from my experience, you won't get a reply.

DaveInCaz commented 3 years ago

@wo80 thank you for your post and explaining the situation from your POV.

DaveInCaz commented 3 years ago

FWIW I recently also tried to contact Jonathan Shewchuk but also didn't get a reply (after several weeks had gone by). Overall I had to conclude that it was too unclear a situation to use this code in a commercial product.

adriaanpfeiffer commented 1 year ago

Would it be worthwile to ask Jonathan Shewchuk again about his intentions with the licensing? I think he made a great effort by publishing his original source code but the licensing seems a drawback for extending this project further (at least for using it in external packages). It doesn't look like the original project got any further in development. What do you think?

wo80 commented 1 year ago

Would it be worthw[h]ile to ask Jonathan Shewchuk again about his intentions with the licensing?

Yes.

What do you think?

I think you won't get a reply.


The original C code is older than most of the open source licenses existing, so I guess at that time it was pretty common to come up with your own license - creating the issue we have here, 30 years later. The best (*) solution would probably be to have some kind of dual licensing: keeping the restrictions for commercial use and at the same time have an open source license for non-commercial use. But considering that the last official release is now 18 years old, I'm not sure if Jonathan Shewchuk has much interest in this.

*) Edit: not best, but closest to what the original author intended

adriaanpfeiffer commented 1 year ago

Unfortunately also no reaction so far. Status quo remains

andypoly commented 2 weeks ago

Perhaps dragging this conversation sideways, but is there another triangulator you use in place of this due to the license confusion? For example there is very robust triangulation (more 3d) available with https://github.com/speps/LibTessDotNet but it does not do delaunay or allow addition of individual segments (only polygon contours) There is https://github.com/nol1fe/delaunator-sharp based on https://github.com/mapbox/delaunator which ironically mentions Shewchuk's name!

DaveInCaz commented 2 weeks ago

(@andypoly)

I have used https://github.com/nickgravelyn/Triangulator but this project now seems to be deleted on Github.

It was (is?) MIT License.

Its readme stated this:

Triangulator is an implementation of Dave Eberly's ear clipping algorithm as described here: http://www.geometrictools.com/Documentation/TriangulationByEarClipping.pdf. The project allows you to simply input a list of vertices and get back the required vertices (in order) and indices needed to construct a VertexBuffer and IndexBuffer for rendering the particular shape. The library is able to cut holes inside of polygons without error (the only caveat to this is that the library assumes that the hole to be cut lies completely within the shape so erroneous data given as a hole will result in invalid output data).