Re: MPL2 instead of LGPL

2020-08-20 Thread Mirko Boehm
Hello,

> On 20. Aug 2020, at 01:25, Hörmetjan Yiltiz  wrote:
> 
> May I try to point out the elephant in the room? Most KDE applications and 
> libraries are copyleft, with tremendous effort and contributions from a wide 
> range of people. Since most of them belong to more than one author, it is not 
> possible for a maintainer to simply re-licence an existing piece of software 
> from copyleft to permissive style license; that requires getting all previous 
> contributors on board and getting their explicit permission. However, if 
> anyone is working on a new project based solely on permissive style licenses, 
> the developer(s) are free to also release their new project in a permissive 
> style license. I hope I did not digress.

No, you did not. This is a fair and probably the crucial point when discussing 
a license change: How can you get agreement from all relevant contributors? 
There are two hurdles in that process: a) getting everybody to agree that 
License X is the choice of the future, and then b) getting everybody down to 
the last person to sign off on it.

The limitations and the age of the (L)GPL are clearly showing. I agree with 
Martin that the technical intricacies usually get lost in legal assessments or 
courts. The difference between states and dynamic linking is also blurry. When 
I teach licensing, I teach intent: “You can use my code even in proprietary 
applications, but if you have modifications to my code, you should publish them 
under the same license.” This is very close to the understanding in the legal 
discussions, and disconnected from the technical details the nerds (me 
included) usually focus on. 

Best,

MIrko.

Re: MPL2 instead of LGPL

2020-08-19 Thread Hörmetjan Yiltiz
May I try to point out the elephant in the room? Most KDE applications and
libraries are copyleft, with tremendous effort and contributions from a
wide range of people. Since most of them belong to more than one author, it
is not possible for a maintainer to simply re-licence an existing piece of
software from copyleft to permissive style license; that requires getting
all previous contributors on board and getting their explicit permission.
However, if anyone is working on a new project based solely on permissive
style licenses, the developer(s) are free to also release their new project
in a permissive style license. I hope I did not digress.
Best,
Hörmet

He who is worthy to receive his days and nights is worthy to receive all
else from you (and me).
 -- The Prophet, Gibran
Kahlil



On Wed, Aug 19, 2020 at 3:24 PM Sandro Andrade 
wrote:

> On Wed, Aug 19, 2020 at 2:27 PM Roman Gilg  wrote:
> >
> > On Wed, Aug 19, 2020 at 6:01 PM Sandro Andrade 
> wrote:
> > >
> > > On Sun, Aug 16, 2020 at 5:11 AM Roman Gilg  wrote:
> > > >
> > > > Hi,
> > >
> > > Hi Roman,
> > >
> > > > * Proprietary code static linking LGPL code is not practically
> doable.
> > > > [5] See also above ZeroMQ exception.
> > >
> > > This is a topic every now and then pops around when discussing
> > > licensing issues. The FSF is pretty clear in stating the providing
> > > object files are enough to enable users to relink with different
> > > versions of the LGPL library. I see some projects using LGPL + static
> > > linking exceptions and I've read all the things regarding "work based
> > > on the library" vs "work which uses the library", header dependencies,
> > > and so on but such LGPL exceptions look more like a clarification
> > > point than a thing not already covered by LGPL.
> > >
> > > I really don't see the point of comments like "If you statically link
> > > a LGPL library, then the application itself must be LGPL. We have had
> > > our lawyer double-check on this in the past. Dynamically linking to a
> > > LGPL library is the only way to avoid becoming LGPL", presented in the
> > > stackoverflow link [5] you provided.
> > >
> > > Could you elaborate a bit why this is not practically doable or
> > > legally incorrect?
> >
> > Hi Sandro,
> >
> > no I can't. I was just rephrasing what I read in some sources online
> > and asking here for educated opinions on if this interpretation is
> > right or wrong. Thanks for taking the time to "debunk" some of the
> > myths floating around.
> >
> > Do you see it the same way in regards to the usage of templates in C++
> > libraries licensed under the LGPL? Is this also a "non-issue" in the
> > end?
>
> AFAIK, and with all due IANAL disclaimer, this has been specifically
> addressed at Section 3 (Object Code Incorporating Material from
> Library Header Files) of LGPLv3. For LGPLv2'ed applications, expanding
> inline functions and templates inside an application's object would
> render LGPLv2 equivalent to the GPL. As stated in LGPLv3, even if the
> application's object incorporate header elements which "are not
> limited to numerical parameters, data structure layouts and accessors,
> or small macros, inline functions and templates (ten or fewer lines in
> length)" you may convey such object code under terms of your choice as
> long as:
>
> "
> a) Give prominent notice with each copy of the object code that the
> Library is used in it and that the Library and its use are covered by
> this License.
> b) Accompany the object code with a copy of the GNU GPL and this
> license (LGPLv3) document.
> "
>
> Cheers,
> Sandro
>
> >
> > > Cheers,
> > > Sandro
>


Re: MPL2 instead of LGPL

2020-08-19 Thread Sandro Andrade
On Wed, Aug 19, 2020 at 2:27 PM Roman Gilg  wrote:
>
> On Wed, Aug 19, 2020 at 6:01 PM Sandro Andrade  wrote:
> >
> > On Sun, Aug 16, 2020 at 5:11 AM Roman Gilg  wrote:
> > >
> > > Hi,
> >
> > Hi Roman,
> >
> > > * Proprietary code static linking LGPL code is not practically doable.
> > > [5] See also above ZeroMQ exception.
> >
> > This is a topic every now and then pops around when discussing
> > licensing issues. The FSF is pretty clear in stating the providing
> > object files are enough to enable users to relink with different
> > versions of the LGPL library. I see some projects using LGPL + static
> > linking exceptions and I've read all the things regarding "work based
> > on the library" vs "work which uses the library", header dependencies,
> > and so on but such LGPL exceptions look more like a clarification
> > point than a thing not already covered by LGPL.
> >
> > I really don't see the point of comments like "If you statically link
> > a LGPL library, then the application itself must be LGPL. We have had
> > our lawyer double-check on this in the past. Dynamically linking to a
> > LGPL library is the only way to avoid becoming LGPL", presented in the
> > stackoverflow link [5] you provided.
> >
> > Could you elaborate a bit why this is not practically doable or
> > legally incorrect?
>
> Hi Sandro,
>
> no I can't. I was just rephrasing what I read in some sources online
> and asking here for educated opinions on if this interpretation is
> right or wrong. Thanks for taking the time to "debunk" some of the
> myths floating around.
>
> Do you see it the same way in regards to the usage of templates in C++
> libraries licensed under the LGPL? Is this also a "non-issue" in the
> end?

AFAIK, and with all due IANAL disclaimer, this has been specifically
addressed at Section 3 (Object Code Incorporating Material from
Library Header Files) of LGPLv3. For LGPLv2'ed applications, expanding
inline functions and templates inside an application's object would
render LGPLv2 equivalent to the GPL. As stated in LGPLv3, even if the
application's object incorporate header elements which "are not
limited to numerical parameters, data structure layouts and accessors,
or small macros, inline functions and templates (ten or fewer lines in
length)" you may convey such object code under terms of your choice as
long as:

"
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are covered by
this License.
b) Accompany the object code with a copy of the GNU GPL and this
license (LGPLv3) document.
"

Cheers,
Sandro

>
> > Cheers,
> > Sandro


Re: MPL2 instead of LGPL

2020-08-19 Thread Martin Floeser



Am 19. August 2020 19:27:09 MESZ schrieb Roman Gilg :

On Wed, Aug 19, 2020 at 6:01 PM Sandro Andrade 
wrote:


On Sun, Aug 16, 2020 at 5:11 AM Roman Gilg  wrote:
>
> Hi,

Hi Roman,

> * Proprietary code static linking LGPL code is not practically

doable.

> [5] See also above ZeroMQ exception.

This is a topic every now and then pops around when discussing
licensing issues. The FSF is pretty clear in stating the providing
object files are enough to enable users to relink with different
versions of the LGPL library. I see some projects using LGPL + static
linking exceptions and I've read all the things regarding "work based
on the library" vs "work which uses the library", header

dependencies,

and so on but such LGPL exceptions look more like a clarification
point than a thing not already covered by LGPL.

I really don't see the point of comments like "If you statically link
a LGPL library, then the application itself must be LGPL. We have had
our lawyer double-check on this in the past. Dynamically linking to a
LGPL library is the only way to avoid becoming LGPL", presented in

the

stackoverflow link [5] you provided.

Could you elaborate a bit why this is not practically doable or
legally incorrect?


Hi Sandro,

no I can't. I was just rephrasing what I read in some sources online
and asking here for educated opinions on if this interpretation is
right or wrong. Thanks for taking the time to "debunk" some of the
myths floating around.

Do you see it the same way in regards to the usage of templates in C++
libraries licensed under the LGPL? Is this also a "non-issue" in the
end?


I think all of this is pretty much a non issue. You are looking at this 
from the position of an engineer. But licenses are legal-speech and 
would be interpreted by a judge. Most likely a judge does not have the 
technical knowledge to understand the differences.


It is very unlikely that a judge would understand the implications of 
different linker flags (static vs. dynamic linking). Anybody without a 
high technical background won't understand that. What matters more is 
the intention of the license. And that is clear. It's the "lesser" gpl. 
And it would be interpreted like that. The (l)gpl was written with C in 
mind. Adapting it to other languages is difficult for us, but probably 
not for a legal person. A template library is a library. That it is kind 
of static linking is an implementation detail. And here the intention 
matters: if one would have wanted the gpl restrictions one would choose 
gpl as license. But using lgpl clearly states that one doesn't want the 
gpl restrictions to hold.


Granted all of that has not been tested in a court. Thus if one wants to 
be clear it might make sense to dual license or use class path 
exceptions, etc. But for our frameworks it's a non issue as we always 
stated the intention: allow users of Qt's commercial license to use our 
libraries. If a copyright holder would turn into a McHardy he would 
hopefully lose at court, especially if we as the community would 
contradict the claims.


Cheers and IANAL
Martin


Re: MPL2 instead of LGPL

2020-08-19 Thread Roman Gilg
On Wed, Aug 19, 2020 at 6:01 PM Sandro Andrade  wrote:
>
> On Sun, Aug 16, 2020 at 5:11 AM Roman Gilg  wrote:
> >
> > Hi,
>
> Hi Roman,
>
> > * Proprietary code static linking LGPL code is not practically doable.
> > [5] See also above ZeroMQ exception.
>
> This is a topic every now and then pops around when discussing
> licensing issues. The FSF is pretty clear in stating the providing
> object files are enough to enable users to relink with different
> versions of the LGPL library. I see some projects using LGPL + static
> linking exceptions and I've read all the things regarding "work based
> on the library" vs "work which uses the library", header dependencies,
> and so on but such LGPL exceptions look more like a clarification
> point than a thing not already covered by LGPL.
>
> I really don't see the point of comments like "If you statically link
> a LGPL library, then the application itself must be LGPL. We have had
> our lawyer double-check on this in the past. Dynamically linking to a
> LGPL library is the only way to avoid becoming LGPL", presented in the
> stackoverflow link [5] you provided.
>
> Could you elaborate a bit why this is not practically doable or
> legally incorrect?

Hi Sandro,

no I can't. I was just rephrasing what I read in some sources online
and asking here for educated opinions on if this interpretation is
right or wrong. Thanks for taking the time to "debunk" some of the
myths floating around.

Do you see it the same way in regards to the usage of templates in C++
libraries licensed under the LGPL? Is this also a "non-issue" in the
end?

> Cheers,
> Sandro


Re: MPL2 instead of LGPL

2020-08-17 Thread Roman Gilg
On Mon, Aug 17, 2020 at 6:32 PM Christoph Cullmann
 wrote:
>
> On 2020-08-17 17:47, Ivan Čukić wrote:
> >> > I've read now multiple times about projects replacing their use of
> >> > LGPLv3 [1] with MPL2 [2]. I would be interested in what people in the
> >> > KDE community think about that.
> >
> > Maybe an alternative to MPL could be these:
> > 1) GPL with runtime exception (if GCC's standard library can use it, I
> > guess
> > we can as well)
> > https://gcc.gnu.org/onlinedocs/libstdc++/manual/license.html
> > 2) Boost license as it is also created for a set of template-heavy C++
> > libraries
> >
> >> If one wants to write a modern C++ library that makes heavy use of
> >> templates in the API and which proprietary consumers should be able to
> >> use is this clause alone reason to prefer the MPL2 over the LGPL or is
> >> my concern unfounded?
> >
> > Now, if you don't want to sue anyone, the "10 lines" thing is not a
> > problem.
> > :)
> >
> > You can ask around people that have C++ libraries published under LGPL
> > if they had clients confused about the licensing. There is quote a lot
> > of FUD
> > about (L)GPL often created by companies with dual-licensing models (not
> > gonna
> > mention any names here) so I could see a company being afraid of using
> > an LGPL
> > library. But, on the other hand, if you clearly explain what LGPL means
> > in the
> > context of your library, I'd say LGPL will not be a problem.
> Hi,
>
> for KSyntaxHighlighting we did choose to go with MIT licensing instead
> of LGPLvX.
>
> That allows all kind of integration for proprietary software,
> but will allow people to keep their changes, too,
> which might be not what all people like.

Hi Christoph,

I don't want to go full permissive license. I haven't looked in depth
on the technical, economical and social impact of permissive vs
copyleft licenses but I feel that permissive licenses give too much
away. In this regard for a personal journey and practical take on it
(that at the end becomes suddenly intensely political though) I like
an old blog post of Drew about MIT vs GPL at [1].

But it depends on the project size and what kind of integration is
planned for sure. So I can follow you on why you chose MIT for
KSyntaxHighlighting and I think showing flexibility in licensing
questions is recommendable.

>From the stuff I read it just feels the MPL2 could be a good middle
ground between permissive and copyleft [2]. I'm just wondering why
it's not used more often. That could be just momentum though.

[1] https://drewdevault.com/2019/06/13/My-journey-from-MIT-to-GPL.html
[2] 
http://veldstra.org/2016/12/09/you-should-choose-mpl2-for-your-opensource-project.html

> Greetings
> Christoph
>
> --
> Ignorance is bliss...
> https://cullmann.io | https://kate-editor.org


Re: MPL2 instead of LGPL

2020-08-17 Thread Christoph Cullmann

On 2020-08-17 17:47, Ivan Čukić wrote:

> I've read now multiple times about projects replacing their use of
> LGPLv3 [1] with MPL2 [2]. I would be interested in what people in the
> KDE community think about that.


Maybe an alternative to MPL could be these:
1) GPL with runtime exception (if GCC's standard library can use it, I 
guess
we can as well) 
https://gcc.gnu.org/onlinedocs/libstdc++/manual/license.html

2) Boost license as it is also created for a set of template-heavy C++
libraries


If one wants to write a modern C++ library that makes heavy use of
templates in the API and which proprietary consumers should be able to
use is this clause alone reason to prefer the MPL2 over the LGPL or is
my concern unfounded?


Now, if you don't want to sue anyone, the "10 lines" thing is not a 
problem.

:)

You can ask around people that have C++ libraries published under LGPL
if they had clients confused about the licensing. There is quote a lot 
of FUD
about (L)GPL often created by companies with dual-licensing models (not 
gonna
mention any names here) so I could see a company being afraid of using 
an LGPL
library. But, on the other hand, if you clearly explain what LGPL means 
in the

context of your library, I'd say LGPL will not be a problem.

Hi,

for KSyntaxHighlighting we did choose to go with MIT licensing instead 
of LGPLvX.


That allows all kind of integration for proprietary software,
but will allow people to keep their changes, too,
which might be not what all people like.

Greetings
Christoph

--
Ignorance is bliss...
https://cullmann.io | https://kate-editor.org


Re: MPL2 instead of LGPL

2020-08-17 Thread Ivan Čukić
> > I've read now multiple times about projects replacing their use of
> > LGPLv3 [1] with MPL2 [2]. I would be interested in what people in the
> > KDE community think about that.

Maybe an alternative to MPL could be these:
1) GPL with runtime exception (if GCC's standard library can use it, I guess 
we can as well) https://gcc.gnu.org/onlinedocs/libstdc++/manual/license.html
2) Boost license as it is also created for a set of template-heavy C++ 
libraries

> If one wants to write a modern C++ library that makes heavy use of
> templates in the API and which proprietary consumers should be able to
> use is this clause alone reason to prefer the MPL2 over the LGPL or is
> my concern unfounded?

Now, if you don't want to sue anyone, the "10 lines" thing is not a problem. 
:)

You can ask around people that have C++ libraries published under LGPL
if they had clients confused about the licensing. There is quote a lot of FUD 
about (L)GPL often created by companies with dual-licensing models (not gonna 
mention any names here) so I could see a company being afraid of using an LGPL 
library. But, on the other hand, if you clearly explain what LGPL means in the 
context of your library, I'd say LGPL will not be a problem.

Cheers,
Ivan



-- 
dr Ivan Čukić
i...@cukic.co, https://cukic.co/
gpg key fingerprint: 8FE4 D32F 7061 EA9C 8232  07AE 01C6 CE2B FF04 1C12




Re: MPL2 instead of LGPL

2020-08-17 Thread Roman Gilg
On Sun, Aug 16, 2020 at 10:10 AM Roman Gilg  wrote:
>
> Hi,
>
> I've read now multiple times about projects replacing their use of
> LGPLv3 [1] with MPL2 [2]. I would be interested in what people in the
> KDE community think about that.
>
> Examples of such projects are:
> * http://wiki.zeromq.org/area:licensing - LGPL v3 with special
> exception for static linking (why do KDE frameworks not need this?)
> * http://eigen.tuxfamily.org/index.php?title=Licensing_FAQ - was
> GPL2/LGPL3 dual licensed
>
> The disadvantages of LGPL are to my knowledge:
> * LGPLv3 code not copyable to GPL code. [3]
> * Usage of C++ templates licensed under LGPLv2.1 not possible or grey
> area(?) in proprietary code. [4]

That template weirdness is what worries me the most btw. I want to use
static inheritance in libraries I write more often in the future and
LGPLv3 has a weird and arbitrary "up to 10 lines are allowed" clause
in it.

If one wants to write a modern C++ library that makes heavy use of
templates in the API and which proprietary consumers should be able to
use is this clause alone reason to prefer the MPL2 over the LGPL or is
my concern unfounded?

> * Proprietary code static linking LGPL code is not practically doable.
> [5] See also above ZeroMQ exception.
>
> Now one would think with KDE Frameworks double-licensed under LGPLv2.2
> and LGPLv3 at least the first and second disadvantages are eliminated.
> But then why did Eigen not make use of this? And what about the static
> linking exception? Is this not relevant to KDE Frameworks? And what
> other important advantages/disadvantages of LGPL in comparison to MPL2
> are there?
>
> Best
> Roman
>
> [1] https://www.gnu.org/licenses/lgpl-3.0.html
> [2] https://www.mozilla.org/en-US/MPL/2.0/FAQ/
> [3] https://www.gnu.org/licenses/gpl-faq.en.html#AllCompatibility
> [4] 
> http://eigen.tuxfamily.org/index.php?title=Licensing_FAQ=1117#But_doesn.27t_the_LGPL_have_issues_with_code_that_is_in_header_files.2C_and_template_libraries.3F
> [5] https://stackoverflow.com/q/10130143


MPL2 instead of LGPL

2020-08-16 Thread Roman Gilg
Hi,

I've read now multiple times about projects replacing their use of
LGPLv3 [1] with MPL2 [2]. I would be interested in what people in the
KDE community think about that.

Examples of such projects are:
* http://wiki.zeromq.org/area:licensing - LGPL v3 with special
exception for static linking (why do KDE frameworks not need this?)
* http://eigen.tuxfamily.org/index.php?title=Licensing_FAQ - was
GPL2/LGPL3 dual licensed

The disadvantages of LGPL are to my knowledge:
* LGPLv3 code not copyable to GPL code. [3]
* Usage of C++ templates licensed under LGPLv2.1 not possible or grey
area(?) in proprietary code. [4]
* Proprietary code static linking LGPL code is not practically doable.
[5] See also above ZeroMQ exception.

Now one would think with KDE Frameworks double-licensed under LGPLv2.2
and LGPLv3 at least the first and second disadvantages are eliminated.
But then why did Eigen not make use of this? And what about the static
linking exception? Is this not relevant to KDE Frameworks? And what
other important advantages/disadvantages of LGPL in comparison to MPL2
are there?

Best
Roman

[1] https://www.gnu.org/licenses/lgpl-3.0.html
[2] https://www.mozilla.org/en-US/MPL/2.0/FAQ/
[3] https://www.gnu.org/licenses/gpl-faq.en.html#AllCompatibility
[4] 
http://eigen.tuxfamily.org/index.php?title=Licensing_FAQ=1117#But_doesn.27t_the_LGPL_have_issues_with_code_that_is_in_header_files.2C_and_template_libraries.3F
[5] https://stackoverflow.com/q/10130143