Code Monkey home page Code Monkey logo

Comments (9)

erengy avatar erengy commented on August 16, 2024

Hey there Zak,

Someone else has just recently made a similar request, and I agree that the library should be available under a more permissive license. I was actually planning to open an issue here myself.

I think I'd like to keep the copyleft requirement, so it seems the main options that I have are LGPL 3.0 and MPL 2.0. I'm going to need some time to be able to look into how they handle static linking, though. Any help would be appreciated.

from anitomy.

helloitszak avatar helloitszak commented on August 16, 2024

Poking around GNU's site for info for their FAQ and found this tidbit about static linking

For the purpose of complying with the LGPL (any extant version: v2, v2.1 or v3):

(1) If you statically link against an LGPL'd library, you must also provide your application in an object (not necessarily source) format, so that a user has the opportunity to modify the library and relink the application.

(2) If you dynamically link against an LGPL'd library already present on the user's computer, you need not convey the library's source. On the other hand, if you yourself convey the executable LGPL'd library along with your application, whether linked with statically or dynamically, you must also convey the library's sources, in one of the ways for which the LGPL provides.

Here's also a snip from a Hacker News comment about libgit2, which is GPL with an explicit linking exception, instead of LGPL

Apparently libgit2, which they're using for this has the license: libgit2 is under GPL2 with linking exemption. This means you can link to the library with any program, commercial, open source or other. However, you cannot modify libgit2 and distribute it without supplying the source.
That sounds nice to me, but I'm not sure how that differs from the standard LGPLv2.

LGPL requires that any distribution be able to replace the LGPL component with a modified version. If you use it as a shared library (er, DLL in this case I guess) you get that for free. But if, for example, you want to link a LGPL library statically you need to provide a static library containing the rest of your program in a linkable form.
The point is to allow the user the ability to exercise their right to modify the LGPL library and use it. The license you describe would presumably allow Microsoft to ship a binary with a fixed and unchangable libgit2 implementation.

My friend @kepstin, who understands this stuff way better than I do:

the lgpl linker exception is explicitly to allow an application with non-gpl-compatible license (e.g. proprietary or has additional restrictions) to be distributed together with or linking to gpl code without having to be relicensed

basically, switching from GPL to LGPL is saying "I'm ok with proprietary (no source available/usable) code using my library
which might be ok with him
gnu propaganda recommends against it, since they want people to use gpl to leverage others into releasing code in gpl or gpl-compatible licenses

From the MPL 2.0 FAQ:

Q11: How 'viral' is the MPL? If I use MPL-licensed code in my proprietary application, will I have to give all the source code away?

No. The license requires that Modifications (as defined in Section 1.10 of the license) must be licensed under the MPL and made available to anyone to whom you distribute the Source Code. However, new files containing no MPL-licensed code are not Modifications, and therefore do not need to be distributed under the terms of the MPL, even if you create a Larger Work (as defined in Section 1.7) by using, compiling, or distributing the non-MPL files together with MPL-licensed files. This allows, for example, programs using MPL-licensed code to be statically linked to and distributed as part of a larger proprietary piece of software, which would not generally be possible under the terms of stronger copyleft licenses.

Not sure exactly what you're looking for in terms of static linking restrictions/permissions, but this might be a good starting point for you.

from anitomy.

Diablofan avatar Diablofan commented on August 16, 2024

Basically statically linking anitomy into taiga is perfectly fine/compatible by gpl and lgpl. Since you have to release taigas source anyway (because of the gpl) then statically linking anitomy would be fine as well if it were lgpl since you'd have to release it because of the gpl anyway as I understand, however im no lawyer so don't quote me on that.

from anitomy.

erengy avatar erengy commented on August 16, 2024

statically linking anitomy into taiga is perfectly fine/compatible

Well, I can do absolutely anything I want, since I'm the author of both Anitomy and Taiga anyway. 😛

im no lawyer so don't quote me on that.

Done!


Not sure if I missed anything, but here's an outline of what I'd like to have in the license:

  • You are allowed to use the library in any project for any purpose, including commercial and proprietary projects.
  • You are allowed to include the source files directly into your project (i.e. it doesn't need to be a replaceable .dll or something).
  • You are not allowed to sell the library itself, with or without modifications. (I guess this is not necessary due to the following point.)
  • If you're going to modify the source code of the library, you have to make it available under the same license (this doesn't apply to your parent project).
  • Please give credit to me in an appropriate place (e.g. About dialog, Readme file, home page, etc.) -- it's motivating.
  • Please don't pretend that you wrote the code, even if you made significant changes -- it's unethical.
  • There's no warranty, no liability, etc.

from anitomy.

tofuness avatar tofuness commented on August 16, 2024

I am no lawyer and do not have proper legal training. I have only read through the complete license a dozen times. However, MPL seems to cover most of these points very well.

You are allowed to use the library in any project for any purpose, including commercial and proprietary projects.

See Section 2.1 in the license [1].

You are allowed to include the source files directly into your project (i.e. it doesn't need to be a replaceable .dll or something).

See Section 3.3, "Distribution of a Larger Work"

If you're going to modify the source code of the library, you have to make it available under the same license (this doesn't apply to your parent project).

See Section 3.1, "Distribution of Source Form".
See Section 3.2, "Distribution of Executable Form"
(talks about modified code as well)

Q11 in the FAQ[2], as @ubercow mentioned, talks about the point you mentioned and static linking.

Please give credit to me in an appropriate place (e.g. About dialog, Readme file, home page, etc.) -- it's motivating.

You can include a per-file boilerplate notice and "You may add additional accurate notices of copyright ownership." Naturally, anyone that distributes the code will then have to keep these notices in their available versions of the source code.

Please don't pretend that you wrote the code, even if you made significant changes -- it's unethical.

See Section 3.4.

There's no warranty, no liability, etc.

See Section 3.5, 6.0 and 7.0.

  1. https://www.mozilla.org/en-US/MPL/2.0/
  2. https://www.mozilla.org/en-US/MPL/2.0/FAQ/

from anitomy.

tofuness avatar tofuness commented on August 16, 2024

Ping @erengy (?)

from anitomy.

erengy avatar erengy commented on August 16, 2024

Sorry, I've had a very busy week. I'm going to look into this within a few days.

from anitomy.

erengy avatar erengy commented on August 16, 2024

Anitomy is now licensed under Mozilla Public License 2.0.

from anitomy.

helloitszak avatar helloitszak commented on August 16, 2024

🎊 awesome! thanks @erengy

from anitomy.

Related Issues (17)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.