fswatch icon indicating copy to clipboard operation
fswatch copied to clipboard

dual license?

Open tcurdt opened this issue 6 years ago • 24 comments

Any chance to dual license the code base as MIT/BSD/Apache? Given it's all getting statically linked I don't see how I could use the lib with a MIT/BSD/Apache based code base.

tcurdt avatar Sep 30 '17 01:09 tcurdt

Hi @tcurdt, I'm definitely thinking about dual licensing using GPL3 and the 3-clause BSD license. Let me figure it out.

emcrisostomo avatar Oct 25 '17 00:10 emcrisostomo

Any chance this could be made LGPL or something less restrictive for commercial use? I'd like to use this in a commercial application and our source cannot be released publicly. If fswatch was LGPL, dynamically linking to an unmodified version of fswatch would be ideal.

aaronovz1 avatar Aug 20 '18 17:08 aaronovz1

@emcrisostomo any thoughts? Thanks

aaronovz1 avatar Aug 31 '18 23:08 aaronovz1

GPL3+BSD would be OK. LGPL (and dynamic linking) does not sound very applicable to the standard go project use case. FWIW - the Apache License (not sure about BSD/MIT) is compatible with the GPL. Just not the other way around. So that might be an easy choice as well.

https://www.apache.org/licenses/GPL-compatibility.html

tcurdt avatar Aug 31 '18 23:08 tcurdt

Are you saying GPL3+BSD would work for commercial product that just dynamically links to fswatch?

aaronovz1 avatar Aug 31 '18 23:08 aaronovz1

@aaronovz1 Why do you insist on the dynamic linking? Especially on a go project?

Disclaimer: IANAL - but...

When you choose to go down the BSD route it also allows even static linking in a commercial context. Of course you would need to follow the BSD rules:

https://opensource.org/licenses/BSD-3-Clause

tcurdt avatar Sep 01 '18 00:09 tcurdt

Sorry why is Go relevant here?

jakirkham avatar Sep 01 '18 00:09 jakirkham

@jakirkham not more than go projects often go down the static linking route. (no pun intended)

tcurdt avatar Sep 01 '18 00:09 tcurdt

BSD would work also.

aaronovz1 avatar Sep 01 '18 00:09 aaronovz1

Just trying to get an idea of whether there’s a use case for it. Sounds like no?

jakirkham avatar Sep 01 '18 00:09 jakirkham

@jakirkham use case for what?

tcurdt avatar Sep 01 '18 00:09 tcurdt

Hi,

I'm a little confused since licensing and legal is really not my domain. When I started the project I used GPL3 (as suggested by GNU, even for libraries), and that's in line with the spirit with which I've written fswatch and libfswatch.

Now, I really have no issues in re-licensing it with a license that's in line with my principles, and LGPL seems to meet that criteria. Even BSD 3-clause does.

Now I'm not sure about the execution: are there incompatibilities between these licenses? Can I just updated the licensing statement and that's it? I'll have to have a look into it.

emcrisostomo avatar Sep 11 '18 08:09 emcrisostomo

@emcrisostomo IANAL but....

GPL + LGPL works for in world with dynamic linking. In a go world where I create a single static binary even the LGPL is a blocker - because the user cannot replace the library him/herself. That's why even the LGPL is (by many) considered incompatible in that scenario.

If you are the rights holder and other contributors did not contribute more than little patches you can just change the license or add a second one as you wish. If there are other bigger contributions it's a little more complicated. In theory you'd need to get consent for their contributions.

Unless you add or change to a BSD/ASL/MIT style license no other project but GPL/LGPL projects will want to use your library. You need to figure out whether that's what you want. For my libraries I am usually fine with just a credit.

tcurdt avatar Sep 11 '18 10:09 tcurdt

MPL-2.0 https://en.wikipedia.org/wiki/Mozilla_Public_License provides similar benefits to GPL in terms of encouraging contribution, protecting from patent trolling and "tivoization" but allows both static and dynamic linking like BSD/MIT and is compatible with all the most popular licenses.

FedericoCeratto avatar Jan 29 '19 23:01 FedericoCeratto

by paul millr

chennqqi avatar Feb 12 '19 08:02 chennqqi

I suggest that you can change libfswatch's license to dual license (Apache License2 and GPL3)

chennqqi avatar Feb 12 '19 08:02 chennqqi

Hey, I'm working on a better version of rmate called "CodeFS" https://github.com/MisterTea/CodeFS

I would like CodeFS to be BSD/Apache licensed, but I can't do that because it depends on fswatch. I'm going to have to replace fswatch if we can't change the license :-(.

Please let me know if you plan on having a dual license, thanks!

MisterTea avatar Mar 10 '19 19:03 MisterTea

You don't need to explicitly do anything regarding a dual-license. One would usually do development of their portable library / component under a single "simple" license with few terms such as MIT or ISC, where the license terms are either a subset of, or non-conflicting with the license terms used by other projects / components that utilize it as part of a system.

The "n-license" effect happens as a consequence of your code being effectively re-licensed by downstream consumers of the library which have copyleft components that require linked code or derivative works to be released under same license. The interoperability of upstrem work is unaffected by incompatibilities introduced by downstream licensing requirements, so it can continue being utillzed by any project regardless of the license requirements of its components.

When conflicts occur, downstream developers cannot use your code as is. They must choose to either a) use a different library, b) (re)develop new code under a compatible license, or c) replace and/or relicense all of their project's legally incompatible existing code to comply with both your license requirements and those of all other 3rd party code.

For large projects, option c is usually infeasible, and potentially harmful as new license requirements impact the ability for further downstream software to use the project. So the choice is usually a or b. Importantly, choice of a or b will often be proprietary, have an incompatible API / implementation, incompatible license, or all of the above, with predictable consequenceses.

ormaaj avatar Aug 30 '19 22:08 ormaaj

It's been almost two years now. It seems like a) or b) are the only options fow now. So if someone finds an alternative project - please leave a link!

tcurdt avatar Aug 30 '19 23:08 tcurdt

Any updates @emcrisostomo ?

tcurdt avatar May 21 '20 21:05 tcurdt

This would also be relevant for me to be able to use libfswatch in a MIT-licensed lib (statically linked)

extrawurst avatar Jul 19 '20 12:07 extrawurst

consider using facebook/watchman which is Apache licensed and is also cross-platform with multiple backends, kqueue on OSX/MacOS and *BSD, inotify on Linux, Solaris, Microsoft Windows and a stat()-based backend.

C++ client library usage example

@tcurdt @extrawurst

wis avatar Oct 03 '20 05:10 wis

I'm dual-licensing all this repository (including fswatch and libfswatch) using GPL v. 3.0 and the Apache License v. 2.0. I'm mentioning it in the README.md, and I'll be updating all the relevant files shortly. As far as I'm concerned, the dual license is effective as of now.

emcrisostomo avatar Oct 04 '20 11:10 emcrisostomo

Great to hear, also you might want to use a SPDY expression like: (GPLv3 OR Apache-2.0)

SamuelMarks avatar Nov 25 '21 15:11 SamuelMarks