cosmos72 / stmx

High performance Transactional Memory for Common Lisp
http://stmx.org/
244 stars 14 forks source link

I find the licence situation confusing #1

Closed nikodemus closed 11 years ago

nikodemus commented 11 years ago

Lawyering aside, what's the intention?

If, as I assume, your intention is to have LGPL on all new or rewritten code, and BSD on the inherited code, it would be really nice if they were more clearly separated. (One licence per file would simplify things a lot.)

If the intention is to have everything under LGPL, then a single LICENSE or COPYING file which states that, and then includes text of the original licenses as would clarify things a lot. (Though BSD license used by Huan Ton-That does not permit relicencing, so to remove the BSD-style permissions from their code you'd need to get their permission if you don't have that already.)

I also find inclusion of COPYING.GPL in the tree confusing. Which parts are GPL and which are LGPL? I assume nothing is under GPL, but this is not clear, and really needs to be clarified.

Equaly confusing is that COPYING.BSD refers to Marco Baringer and not Hoan Ton-That. :) I assume this is just a snafu.

Anyways, VERY nice work overall! (Feel free to ignore this license nitpickery, just wanted to let you know that it's sufficiently confusing that I would need to clarification before using this for reals.)

cosmos72 commented 11 years ago

Hello Nikodemus,

I agree, the license is very confusing.

You guessed my intention (almost) correctly: LGPL for new or rewritten code, LGPL+BSD on derived code (i.e. inherited and modified).

The reason is that I cannot remove the existing BSD license from files unless I rewrite them fully: the variant of BSD license used in CL-STM does not allow relicensing, but from what I understand it IS compatible with LGPL (see http://www.gnu.org/licenses/license-list.html#ModifiedBSD), i.e. code can have simultaneous LGPL + BSD licenses.

Getting the permission from the CL-STM author (Huan Ton-That) to change his BSD code to LGPL would be a better alternative, but I have not been able to contact him yet. I guess I should try harder.

About the inclusion of both COPYING.GPL and COPYING.LGPL in the source tree: I followed literally "How to use GNU licenses for your own software" at http://www.gnu.org/licenses/gpl-howto.html: it instructs to put both GPL and LGPL license files - if the practice for LGPL software is actually simpler, I will be glad to adapt :)

Equaly confusing is that COPYING.BSD refers to Marco Baringer and not Hoan Ton-That. :) I assume this is just a snafu.

Unluckily not: it's a quirk in BSD "no relicensing" rule. I guess Hoan Ton-That reused some code from Marco Baringer (it.bese.arnesi author) for CL-STM and as a consequence he is stuck with the copy of BSD license coming with arnesi (just like I am stuck with the copy coming with CL-STM), which references its author: Marco Baringer. You can check the license in CL-STM source tree. Or of course it could be a typo in CL-STM licensing.

This also has a nasty side-effect: since CL-STM appears to be derived from arnesi (the license declares that), permission from both authors is needed to change CL-STM license.

Conclusion: my work was much faster thanks to using CL-STM as a starting point, but the license is a mess. I do not wish to release STMX as BSD, as I prefer the GPL licenses family, so the situations screams for a full rewrite of inherited code.

Since STMX is small enough, I will just rewrite the code inherited from CL-STM.

In the meantime I will also keep trying the lighter solution: contact Hoan Ton-That and ask if he agrees to change the license.

nikodemus commented 11 years ago

On 20 March 2013 13:01, cosmos72 notifications@github.com wrote:

The reason is that I cannot remove the existing BSD license from files unless I rewrite them fully: the variant of BSD license used in CL-STM does not allow relicensing, but from what I understand it IS compatible with LGPL (see http://www.gnu.org/licenses/license-list.html#ModifiedBSD), i.e. code can have simultaneous LGPL + BSD licenses.

Yes... and no. It is compatible ie. you can /mix/ BSD and LGPL code -- but you cannot remove the BSD-granted permissions from the BSD-licensed code.

About the inclusion of both COPYING.GPL and COPYING.LGPL in the source tree: I followed literally "How to use GNU licenses for your own software" at http://www.gnu.org/licenses/gpl-howto.html: it instructs to put both GPL and LGPL license files - if the practice for LGPL software is actually simpler, I will be glad to adapt :)

Jesus on a pogostick! LGPL3 directly refers to GPL3 -- so yeah, you do need to include both. (There is no requirement for them to be in different files, though, as near as I can tell. The FSF guidelines aren't really oriented towards clarity in my mind...)

This is part of the reason why I usually steer clear of FSF-licensed code and prefer MIT-0 for my own code: without a lawyer I cannot parse those licenses with any sense of confidence -- and they're even more unclear for Lisp. (What does "linking" mean? Is using a macro at compile-time a combined work or a derivative work? Is adding methods to a generic function allowed, or is that a derivative work? Etc... which is why many people use the LLGPL instead of LGPL, but I don't personally find it much better.)

...but that's a separate can of worms. :)

with arnesi (just like I am stuck with the copy coming with CL-STM), which references its author: Marco Baringer. You can check the license in CL-STM source tree. Or of course it could be a typo in CL-STM licensing.

If there's no single source file that mentions Marco I would assume his name can be safely removed, though obviously it would be good to check with him first.

Cheers,

-- Nikodemus

cosmos72 commented 11 years ago

I finally decided for LLGPL.

Hoan Ton-That is not exactly easy to contact - I could not find any valid email address, the one used during Google summer of code 2006 does not exist anymore.

In the meantime I am rewriting the code still derived from CL-STM. It's not much work, as I used CL-STM more for inspiration than for its implementation, but it turns out being difficult to convince myself that the rewritten code is not derived anymore: both CL-STM and STMX implement basically the same features described in great detail by http://research.microsoft.com/%7Esimonpj/papers/stm/stm.pdf so several similarities remain no matter how much I rewrite them.

cosmos72 commented 11 years ago

Rewriting completed. License changed to LLGPL.

I am now confident enough that all code inherited from CL-STM has been rewritten. The remaining similarities are - in my opinion, of course IANAL - either trivial or inevitable in any STM implementation, due to the common origin in the article http://research.microsoft.com/%7Esimonpj/papers/stm/stm.pdf

In case somebody still finds some significant similarity, please report it as a bug - I will fix it, compatibly with my available time