openglonmetal / MGL

OpenGL 4.6 on Metal
Apache License 2.0
781 stars 30 forks source link

licensing #62

Closed mfkl closed 1 year ago

mfkl commented 1 year ago

Hi there,

I reached out to Mike over email, and he suggested I open a ticket here to discuss it with everyone.

I work with VideoLAN, the non-profit organization that maintains the VLC media player and related software.

We have come across your great work, and we would be interested in using it in VLC for the Apple platforms that VLC targets. However, VLC being licensed under GPL, using an Apache 2 dependency is complicated and makes the whole resulting solution LGPLv3, which is problematic for us.

I was wondering whether you would agree to either changing the current license, or offering an additional alternative license through dual licensing. Compatible licenses for us would include MIT, BSD or LGPL2.1 (here's an incomplete sample of our dependencies and their licenses https://github.com/videolan/vlc/blob/master/THANKS).

Let me know what you think!

Thanks.

conversy commented 1 year ago

Hi,

I think that what MGL needs right now is adoption, so whatever making the VLC people adopt it with a not-so-different license is good for MGL, IMO. Since Mike decided to go for Apache in a first place, I guess MIT or BSD are the closest in spirit? My preference would be LGPL to make sure that, anyone forking it as soon as MGL works well, would be required to contribute back. But it's only an opinion.

Cheers.

truedat101 commented 1 year ago

Dual licensing shouldn't be an issue to do, especially if there is a single contributor to this project (I haven't checked to see how it has been built or what the story is thus far). The author can easily select alternative licensing assuming all contributions to this code are compatible with the alternative licenses. Then it is up to the recipient / user / contributor to determine which license to apply. It seems there are pros and cons to various options, and corporate types will have a preference for things which clarify patented IP, and free software types will prefer GPL compatible/friendly licenses.

mfkl commented 1 year ago

If the LGPLv2.1 license is good with everyone, I'll make a PR to update the current license / add it as additional license.

truedat101 commented 1 year ago

So it does appear that there are multiple contributors on the project. I did not check to see if there is a contributor agreement in place (a legal document signed by contributors). Copyright is held by: * Copyright (C) Michael Larson on 1/6/2022

I'm assuming that is true for all of the files but maybe not. Normally if one is to re-license a project, in this case, adding an additional license (not taking away an existing license or revoking/changing rights) you would need to get permission of all contributors if there is no contributor agreement.

This is of course just from an open source law stand point, not necessarily something people will want to think about until companies and orgs (potentially free software focused) express interest in use. I'm not a lawyer, but I have worked with companies who are trying to clean up licensing on commercial/private source before going open, or the other way, already open and trying to clean up the licensing to satisfy some market or downstream user need.

unilock commented 1 year ago

I'm not a lawyer, nor do I know much about licenses, nor am I very good at grep, but here is (what I believe to be) all code in this repository not copyright Michael Larson / under the Apache License 2.0:

./MGL/include/GL/glcorearb.h, ./MGL/include/KHR/khrplatform.h:, ./Unused/glext.h, ./Unused/wgl.h, ./Unused/wglext.h : Copyright (C) The Khronos Group Inc.

./MGL/include/glm/ext/scalar_ulp.inl : Copyright (C) Sun Microsystems, Inc.

./MGL/include/Fixed_ResourceLimits.h : Copyright (C) 3Dlabs Inc. Ltd., & LunarG, Inc.

./SPIRV-Cross: multiple ([1], [2]) ./SPIRV-Headers : Copyright (C) The Khronos Group Inc., LICENSE

./Unused/eglew.h, ./Unused/glew.h, ./Unused/glxew.h : Copyright (C) Nigel Stewart \<nigels[]users sourceforge net> & Milan Ikits \<milan ikits[]ieee org> & Marcelo E. Magallon \<mmagallo[]debian org> & Lev Povalahev, & Brian Paul, & The Khronos Group Inc.

./Unused/wglew.h : Copyright (C) Nigel Stewart \<nigels[]users sourceforge net> & Milan Ikits \<milan ikits[]ieee org> & Marcelo E. Magallon \<mmagallo[]debian org> & Lev Povalahev, & The Khronos Group Inc.

./enum_parser/ezxml.c, ./enum_parser/ezxml.h : Copyright (C) Aaron Voisine \aaron\@voisine.org\

./external/glfw : LICENSE

I was unable to find a contributor agreement.

darkaegisagain commented 1 year ago

I guess adding a copyright and Apache license I didn’t intend to make it this complicated. I just wanted more adoption and help from the open source community to finish this out, but I did want to keep my name on the source.

Unless there are any objections I will work with Martin (if he is still interested) to add / change the licenses to what works for him.

Mike

On Dec 8, 2022, at 6:25 AM, unilock @.***> wrote:

I'm not a lawyer, nor do I know much about licenses, nor am I very good at grep, but here is (what I believe to be) all code in this repository not copyright Michael Larson:

./MGL/include/GL/glcorearb.h https://github.com/openglonmetal/MGL/blob/main/MGL/include/GL/glcorearb.h, ./MGL/include/KHR/khrplatform.h: https://github.com/openglonmetal/MGL/blob/main/MGL/include/KHR/khrplatform.h, ./Unused/glext.h https://github.com/openglonmetal/MGL/blob/main/Unused/glext.h, ./Unused/wgl.h https://github.com/openglonmetal/MGL/blob/main/Unused/wgl.h, ./Unused/wglext.h https://github.com/openglonmetal/MGL/blob/main/Unused/wglext.h : Copyright (C) The Khronos Group Inc.

./MGL/include/glm/ext/scalar_ulp.inl https://github.com/openglonmetal/MGL/blob/main/MGL/include/glm/ext/scalar_ulp.inl : Copyright (C) Sun Microsystems, Inc.

./MGL/include/Fixed_ResourceLimits.h https://github.com/openglonmetal/MGL/blob/main/MGL/include/Fixed_ResourceLimits.h : Copyright (C) 3Dlabs Inc. Ltd. & LunarG, Inc.

./SPIRV-Cross https://github.com/KhronosGroup/SPIRV-Cross/tree/188dc8b13c29f8547c8fb52182111c9ada741a70: multiple ([1] https://github.com/KhronosGroup/SPIRV-Cross/blob/188dc8b13c29f8547c8fb52182111c9ada741a70/LICENSE, [2] https://github.com/KhronosGroup/SPIRV-Cross/tree/188dc8b13c29f8547c8fb52182111c9ada741a70/LICENSES) ./SPIRV-Headers https://github.com/KhronosGroup/SPIRV-Headers/tree/6a55fade62dec6a406a5a721148f88a2211cbefa : Copyright (C) The Khronos Group Inc., LICENSE https://github.com/KhronosGroup/SPIRV-Headers/blob/6a55fade62dec6a406a5a721148f88a2211cbefa/LICENSE ./Unused/eglew.h https://github.com/openglonmetal/MGL/blob/main/Unused/eglew.h, ./Unused/glew.h https://github.com/openglonmetal/MGL/blob/main/Unused/glew.h, ./Unused/glxew.h https://github.com/openglonmetal/MGL/blob/main/Unused/glxew.h : Copyright (C) Nigel Stewart <nigels[]users sourceforge net> & Milan Ikits <milan ikits[]ieee org> & Marcelo E. Magallon <mmagallo[]debian org> & Lev Povalahev & Brian Paul & The Khronos Group Inc.

./Unused/wglew.h https://github.com/openglonmetal/MGL/blob/main/Unused/wglew.h : Copyright (C) Nigel Stewart <nigels[]users sourceforge net> & Milan Ikits <milan ikits[]ieee org> & Marcelo E. Magallon <mmagallo[]debian org> & Lev Povalahev & The Khronos Group Inc.

./enum_parser/ezxml.c https://github.com/openglonmetal/MGL/blob/main/enum_parser/ezxml.c, ./enum_parser/ezxml.h https://github.com/openglonmetal/MGL/blob/main/enum_parser/ezxml.h : Copyright (C) Aaron Voisine @. @.>>

./external/glfw https://github.com/openglonmetal/MGL/tree/main/external/glfw : LICENSE https://github.com/openglonmetal/MGL/blob/main/external/glfw/LICENSE.md I was unable to find a contributor agreement.

— Reply to this email directly, view it on GitHub https://github.com/openglonmetal/MGL/issues/62#issuecomment-1342818072, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACOKD3ZQD5RZU4M5XJLSTDDWMHVW5ANCNFSM6AAAAAASDAYV3Q. You are receiving this because you are subscribed to this thread.

truedat101 commented 1 year ago

I'm not a lawyer, nor do I know much about licenses, nor am I very good at grep, but here is (what I believe to be) all code in this repository not copyright Michael Larson / under the Apache License 2.0:

./MGL/include/GL/glcorearb.h, ./MGL/include/KHR/khrplatform.h:, ./Unused/glext.h, ./Unused/wgl.h, ./Unused/wglext.h : Copyright (C) The Khronos Group Inc.

./MGL/include/glm/ext/scalar_ulp.inl : Copyright (C) Sun Microsystems, Inc.

./MGL/include/Fixed_ResourceLimits.h : Copyright (C) 3Dlabs Inc. Ltd., & LunarG, Inc.

./SPIRV-Cross: multiple ([1], [2]) ./SPIRV-Headers : Copyright (C) The Khronos Group Inc., LICENSE

./Unused/eglew.h, ./Unused/glew.h, ./Unused/glxew.h : Copyright (C) Nigel Stewart <nigels[]users sourceforge net> & Milan Ikits <milan ikits[]ieee org> & Marcelo E. Magallon <mmagallo[]debian org> & Lev Povalahev, & Brian Paul, & The Khronos Group Inc.

./Unused/wglew.h : Copyright (C) Nigel Stewart <nigels[]users sourceforge net> & Milan Ikits <milan ikits[]ieee org> & Marcelo E. Magallon <mmagallo[]debian org> & Lev Povalahev, & The Khronos Group Inc.

./enum_parser/ezxml.c, ./enum_parser/ezxml.h : Copyright (C) Aaron Voisine [aaron@voisine.org](mailto:aaron@voisine.org)

./external/glfw : LICENSE

I was unable to find a contributor agreement.

So regarding contributor agreements, I would only expect there to be one if this was an org of some kind, a non-profit or some corporate backed OSS (example CLA: https://opensource.google/documentation/reference/cla/).

For 3rd party copyright, for example glew headers, Kronos headers, those can't be re-licensed, and copyrights must remain intact. You may need to patch these files, and it can make sense to add additional copyright to cover other changes by the project. In the process of re-licensing, some thought has to be made about the compatibility with the license applied to this external source.

Another thought, glew headers probably can be replaced by glad? License is under: SPDX-License-Identifier: (WTFPL OR CC0-1.0) AND Apache-2.0 and can be customized to whatever need: https://gen.glad.sh/

The Sun licensed code isn't problematic given that permission is granted to use, but it doesn't follow any traditional open source license so it's compatibility needs to be reviewed by someone that knows the context of this source. It's SunPro (product/org ... that's super old !).

The 3Dlabs code looks fine, it's an academic license (BSD I think).

The big question is on what to do with the additional contributors on the project, if they all agree to the change then it's up to the project lead to decide how to proceed.

darkaegisagain commented 1 year ago

Most of the files highlighted were to be installed using the external install scripts, I think every file included in the list other than

./enum_parser/ezxml.c https://github.com/openglonmetal/MGL/blob/main/enum_parser/ezxml.c, ./enum_parser/ezxml.h https://github.com/openglonmetal/MGL/blob/main/enum_parser/ezxml.h : Copyright (C) Aaron Voisine @.***>

Were originally outside of the repository, I can remove the ezxml parser.. it was just there to create the original header files and C source files as a starting point.

Over time it looks like these files just made it into the repository unintentionally.

The only directories of interest with my Copyright is mgl/mgl/src and mgl/mgl/include

Looking at the commits, only myself / conversy and r58playz have made any changes to that.

So just changing the core distribution license is just fine, which is what I would do.. unless conversy and r58playz have any issues.

Mike

"The difference between communism and socialism is that under socialism central planning ends with a gun in your face, whereas under communism central planning begins with a gun in your face." ― Kevin D. Williamson

On Thu, Dec 8, 2022 at 11:20 AM David J. Kordsmeier < @.***> wrote:

I'm not a lawyer, nor do I know much about licenses, nor am I very good at grep, but here is (what I believe to be) all code in this repository not copyright Michael Larson / under the Apache License 2.0:

./MGL/include/GL/glcorearb.h https://github.com/openglonmetal/MGL/blob/main/MGL/include/GL/glcorearb.h, ./MGL/include/KHR/khrplatform.h: https://github.com/openglonmetal/MGL/blob/main/MGL/include/KHR/khrplatform.h, ./Unused/glext.h https://github.com/openglonmetal/MGL/blob/main/Unused/glext.h, ./Unused/wgl.h https://github.com/openglonmetal/MGL/blob/main/Unused/wgl.h, ./Unused/wglext.h https://github.com/openglonmetal/MGL/blob/main/Unused/wglext.h : Copyright (C) The Khronos Group Inc.

./MGL/include/glm/ext/scalar_ulp.inl https://github.com/openglonmetal/MGL/blob/main/MGL/include/glm/ext/scalar_ulp.inl : Copyright (C) Sun Microsystems, Inc.

./MGL/include/Fixed_ResourceLimits.h https://github.com/openglonmetal/MGL/blob/main/MGL/include/Fixed_ResourceLimits.h : Copyright (C) 3Dlabs Inc. Ltd., & LunarG, Inc.

./SPIRV-Cross https://github.com/KhronosGroup/SPIRV-Cross/tree/188dc8b13c29f8547c8fb52182111c9ada741a70: multiple ([1] https://github.com/KhronosGroup/SPIRV-Cross/blob/188dc8b13c29f8547c8fb52182111c9ada741a70/LICENSE, [2] https://github.com/KhronosGroup/SPIRV-Cross/tree/188dc8b13c29f8547c8fb52182111c9ada741a70/LICENSES) ./SPIRV-Headers https://github.com/KhronosGroup/SPIRV-Headers/tree/6a55fade62dec6a406a5a721148f88a2211cbefa : Copyright (C) The Khronos Group Inc., LICENSE https://github.com/KhronosGroup/SPIRV-Headers/blob/6a55fade62dec6a406a5a721148f88a2211cbefa/LICENSE

./Unused/eglew.h https://github.com/openglonmetal/MGL/blob/main/Unused/eglew.h, ./Unused/glew.h https://github.com/openglonmetal/MGL/blob/main/Unused/glew.h, ./Unused/glxew.h https://github.com/openglonmetal/MGL/blob/main/Unused/glxew.h : Copyright (C) Nigel Stewart <nigels[]users sourceforge net> & Milan Ikits <milan ikits[]ieee org> & Marcelo E. Magallon <mmagallo[]debian org> & Lev Povalahev, & Brian Paul, & The Khronos Group Inc.

./Unused/wglew.h https://github.com/openglonmetal/MGL/blob/main/Unused/wglew.h : Copyright (C) Nigel Stewart <nigels[]users sourceforge net> & Milan Ikits <milan ikits[]ieee org> & Marcelo E. Magallon <mmagallo[]debian org> & Lev Povalahev, & The Khronos Group Inc.

./enum_parser/ezxml.c https://github.com/openglonmetal/MGL/blob/main/enum_parser/ezxml.c, ./enum_parser/ezxml.h https://github.com/openglonmetal/MGL/blob/main/enum_parser/ezxml.h : Copyright (C) Aaron Voisine @.***>

./external/glfw https://github.com/openglonmetal/MGL/tree/main/external/glfw : LICENSE https://github.com/openglonmetal/MGL/blob/main/external/glfw/LICENSE.md

I was unable to find a contributor agreement.

So regarding contributor agreements, I would only expect there to be one if this was an org of some kind, a non-profit or some corporate backed OSS (example CLA: https://opensource.google/documentation/reference/cla/).

For 3rd party copyright, for example glew headers, Kronos headers, those can't be re-licensed, and copyrights must remain intact. You may need to patch these files, and it can make sense to add additional copyright to cover other changes by the project. In the process of re-licensing, some thought has to be made about the compatibility with the license applied to this external source.

Another thought, glew headers probably can be replaced by glad? License is under: SPDX-License-Identifier: (WTFPL OR CC0-1.0) AND Apache-2.0 and can be customized to whatever need: https://gen.glad.sh/

The Sun licensed code isn't problematic given that permission is granted to use, but it doesn't follow any traditional open source license so it's compatibility needs to be reviewed by someone that knows the context of this source. It's SunPro (product/org ... that's super old !).

The 3Dlabs code looks fine, it's an academic license (BSD I think).

The big question is on what to do with the additional contributors on the project, if they all agree to the change then it's up to the project lead to decide how to proceed.

— Reply to this email directly, view it on GitHub https://github.com/openglonmetal/MGL/issues/62#issuecomment-1343235582, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACOKD37V2WUEBS4RYMRPWYLWMIYJFANCNFSM6AAAAAASDAYV3Q . You are receiving this because you commented.Message ID: @.***>

robtherich commented 1 year ago

Request for MIT over LGPL. From my limited understanding it is less restrictive and will be easier to work commercially with.

truedat101 commented 1 year ago

Request for MIT over LGPL. From my limited understanding it is less restrictive and will be easier to work commercially with.

As long as the Apache License remains an option, Apache (Academic) or LGPL (Copyleft + dynamic linking), this should be possible for the downstream user to decide which license to apply. Apple in their ecosystem tends to favor Apache for their own OSS, but that shouldn't have any influence on decisions made by this project. Teams that need copyleft compatible licenses for their projects will prefer LGPL probably if they are already using LGPL or GPL. Some details on that line of inquiry: https://dwheeler.com/essays/floss-license-slide.html (this is a decent explanation).

I agree, LGPL as the only choice will limit adoption by corporate entities who don't have a legal department that understands how to work with LGPL.

truedat101 commented 1 year ago

My recommendation is still to dual license, either at the root level of the project providing two license files and cleanup the copyright headers for files created by the project, or a single top level LICENSE file with the two licenses contained (a bit less clear), and have all copyright headers mention both license options.

Some discussion on this topic with real world examples from other projects: https://softwareengineering.stackexchange.com/a/371456

mfkl commented 1 year ago

Let me know if I should open a new PR to add the dual licensing details. Or a switch to MIT/BSD if a single license, etc.