Immediate-Mode-UI / Nuklear

A single-header ANSI C immediate mode cross-platform GUI library
https://immediate-mode-ui.github.io/Nuklear/doc/index.html
Other
9.06k stars 542 forks source link

Please add info regarding how the choice of a backend alters the license. #423

Open mavavilj opened 2 years ago

mavavilj commented 2 years ago

I initially came here, because Nuklear was said to be public domain. However, then I noticed that /demo/ shows a multitude of different backends in use, most of which seemed to have some other license than public domain.

Could you please clarify, how using some backend alters the software from being public domain. It would also be nice to know, what backend one should use, if one wishes to retain software in "public domain".

dumblob commented 2 years ago

Thanks for asking. Let me clarify few things first.

  1. Nuklear is just nuklear.h. Everything else in this repo offers no guarantees nor release management nor quality of nuklear.h. It's just a bunch of contributions. I'd emphasize though that from my experience the overall quality of all these user contributions is very high.
  2. nuklear.h is dual licensed - first under MIT and second under public domain
  3. user contributions (backends, examples, etc.) can have various licenses but majority is under MIT

To answer your question - nuklear.h was initially meant for those wanting to use (write) their own backends. So ideally you'd write your own and avoid any licensing issues. But before you get discouraged by that, I'd recommend two things:

a) either consider MIT for your project and do not bother with public domain as there is no known legislation in the world which doesn't understand MIT but there are many which do not understand public domain (which means only problems to you) b) ask all contributors to the backend(s) of your choice (clicking on a given file on GitHub will show you all contributors on the right side) - e.g. by referencing them in this issue here using @somecontributor - and asking them for clarification of the license of their work with the goal to have them make it available also dual licensed as nuklear.h is

mavavilj commented 2 years ago

But e.g. GLFW was not MIT,

Could you point me to the code in this repo where GLFW-related stuff is not MIT nor public domain?

In all three demos https://github.com/Immediate-Mode-UI/Nuklear/tree/master/demo/glfw_opengl2 , https://github.com/Immediate-Mode-UI/Nuklear/tree/master/demo/glfw_opengl3 , https://github.com/Immediate-Mode-UI/Nuklear/tree/master/demo/glfw_opengl4 I don't see any specific license, so it's all dual licensed as nuklear.h.

https://www.glfw.org/

but zlib/libpng,

I couldn't find any zlib-licensed sources in this repo. Nor I could find any libpng copy here. Could you clarify what you mean?

https://www.glfw.org/

and now I became confused as to how these are compatible.

Feel free to refer to Fedora wiki about licensing (including FAQ!) - it's written by lawyers and well-proven over time. Generally most licenses are compatible with each other and their conditionts "propagates" (along each other) to the end product (e.g. your game). There are only a few exceptions (e.g. GPL/LGPL seems generally incompatible with https://commonsclause.com/ with some exceptions like careful "splitting of the end product - both on product/marketing/semantical level as well as on the technical level").

Yes, which is why I was trying to make sure that the license in Nuklear is correct. So that I can assume that everything I do with it is under MIT.

SDL is also under the zlib license.

Again, I couldn't find anything zlib-licensed here in this repo. Please point me to such sources.

https://wiki.libsdl.org/FAQLicensing

Coming to this library as a "drop-in" user, I was expecting that the licensing would be clearer, since examples using those backends are provided.

Hm, actually I think the licensing couldn't be made simpler. If you have any suggestions how to make it clearer, please speak up - we'd very much like to make things easier for everyone! Thanks!

Well just clarify that the license is MIT/Public Domain and the backend licenses do not propagate.

How is it e.g. possible to have a MIT license after using Nuklear, if zlib seems like it is a stronger license?

Because zlib doesn't seem to affect the surrounding code in any way (unlike e.g. (L)GPL) but only the end product (i.e. usually everything directly related to the end user - i.e. including means of distribution of the end product).

Or possibly the distinction is that you aren't modifying or distributing GLFW code? Thus the GLFW license may not apply, if it only applies on using the GLFW source.