I’m starting to work on a C library, and I am having trouble choosing a license, so I need some help.

Keeping in mind that:

  • I want as many people as possible to be able to use my lib, without them worrying about license compatibility, both for libre and proprietary programs;
  • My lib is designed to be statically linked, so its license must allow static linking without compromises;

But, also:

  • I want for whoever uses my lib to credit me: I think mentioning my library’s name, optionally with an URL to my repo and the license text copypasted, in the final software’s documentation / credit page / whatever would be enough;
  • I want for people that make changes to my library, and then use the modified version in their program, be it free or proprietary, to publish the modified source code of my library, under my license (but they can keep the rest of their program under whatever license they want).

What license should I choose? I really have no idea.
I think that if I only cared about the first 3 points, I could choose MIT, but considering the last one?

  • octtOP
    link
    fedilink
    arrow-up
    6
    ·
    edit-2
    2 years ago

    LGPL has restrictions on static linking, actually. It’s one of the reasons why SDL 2.0 had to recently drop it in favour of the zlib license. So, not really a good choice in my case, it goes against point 2 of mine.

    The zlib license, however, doesn’t respect point 3 and 4.

    I heard of a LGPL with static linking exception (no additional restrictions on static linking), but it’s not vastly used, so I don’t know much about that. Maybe you do?

    • Tiuku@sopuli.xyz
      link
      fedilink
      arrow-up
      2
      ·
      edit-2
      2 years ago

      Ahh didn’t know about that. What restrictions are there exactly?

      Maybe you do?

      Sorry :/

      • octtOP
        link
        fedilink
        arrow-up
        8
        ·
        2 years ago

        If you use an LGPL library in a proprietary program or with incompatible open licenses:

        • If you dynamically link, you can keep your parts of the program under your license;
        • If you statically link, you have to make sure that an user can actually modify the parts of the LGPL library in your program. For proprietary programs, this means that the developers would have to distribute their unlinked .o files, which quickly becomes a mess (and, on some platforms, notably embedded ones, it becomes a real mess).