What is your current go-to license?

I thought it would be interesting to see which licenses are used by members of this forum. (this is mostly for fun, not for actual research)

What is the “main” license you use for your new / current projects?

  • AGPL
  • Apache 2.0
  • BSD
  • CC0
  • EPL
  • EUPL
  • GPL
  • ISC
  • LGPL
  • MIT
  • MPL
  • Unlicense
  • WTFPL
  • Proprietary
  • Other
0 voters

By “main” license I mostly mean the license for the code, as documentation and assets can be licensed differently. I use CC-BY-SA-4.0 for my assets and GPL-3.0-or-later for the code.

1 Like

I use the right license for the job. Generally one of GPL, AGPL, MPL, or MIT.

2 Likes

usually i go with gpl for end user applications, lgpl for libraries and agpl for server-side applications

mpl is also nice tho

1 Like

Generally GPL-v3-or-later, however:

  • For libraries, I use the MIT/Expat license.
  • For software that would run on servers, I use AGPL-v3-or-later.

For software that would run on servers, I use AGPL-v3-or-later.

Why not license everything under the AGPL, considering that any software can (be changed to) run on a server?

Copyleft is a lever, not a hammer. We could pull it as far as it can go, but that’s not always the most productive thing to do. We are balancing many concerns when choosing a license.

I chose the MIT license for scdoc because I explicitly want to encourage the proliferation of the software’s idea as a political goal.[1] Copyleft only protects the implementation, and imposes a cost in exchange for that protection. In scdoc’s case the actual implementation is small and easily replaced with a new one, so it doesn’t make sense to pay that cost.

Another license I often use is MPL, which is copyleft but much weaker than AGPL. I use this for many of my libraries. Again, it’s a matter of asking what goals I’m trying to achieve and to what degree the choice of license is affected by these goals. When I use MPL, I am retaining many of the benefits of copyleft but making it easier to do a few important things (such as vendoring or static linking) without onerous compliance requirements or upending the license of your whole project, which is important for meeting the goals of the project as a whole.

In this example, using MPL can actually increase the amount of code that is made free, because it makes the system more easily adapted into a variety of use-cases while still having an obligation to share the source in most of those use-cases. Sure, you could run it on a server, but the most common case may not be for server-side code and making it easier to use for those cases while weakening the copyleft for the server case could very well foster social and political dynamics that produce more free code than otherwise.

Oh, and I chose WTFPL for shit because it was funnier that way.


  1. The political idea in this case is essentially a vendetta against bad man page generation tools with huge dependency trees or obtuse syntax and a desire to reduce their popularity in favor of a simpler tool to the greatest extent possible. Which is kind of a silly and selfish objective, but hey, we all have our reasons for writing code. ↩︎

8 Likes

Maybe my use of the word “everything” was a bit dodgy…

This is completely fair and I agree with your “right tool for the job” philosophy with licenses. I just don’t know why, if you want to pull the copyleft lever far into “give back or else”, you’d ever want to leave the ASP loophole open.

While the WTFPL is a funny license, there is funnier. I even made my own, and I’m not completely unserious about it!

shell git lol

1 Like

I generally go to MPL as my go-to license. I feel that it offers a good trade, and has the good set of protections (specifically against patent trolls).

For some binaries, I may go with GPL. But again I start with MPL.

1 Like

I usually use Unlicense, if i’m able to. This makes the job for everyone else easier and everyone knows his rights.

I usually go for: MIT for libraries and AGPL for services/server applications.

Well Said, well said. I use AGPL most often because i don’t want people coming along and turning the code i write into SaaS. For context the code i write is almost exclusively written for me, or other economically disadvantaged members of the disability community.

The code is mine by law, but was written for my people , the AGPL is a big warning sign to corpos to keep their mitts off it.

But i’ve used others when there were other goals in play…

Also it’s important to remember that free software is a necessary pre condition, if we want more equatable and just software development. But it’s not the whole ball game…

What we really need to defeat is the ethos of “Science Discovers, Industry Applies, Humans Conform”, but that’s a whole other essay… It’s 5,000 words in length and needs an editor…

2 Likes

I try to use the license that makes more sense but for personal projects or libraries my default choose stays MIT.

You are an inspiration to us all. :grin:

2 Likes

Agreed! “(A)GPLv3 EVERYWHERE POSSIBLE!” is the wrong mindset - you should choose the license by thinking:

  • How does it benefit us (the community behind the project)?
  • How does it benefit other people?
  • How does it benefit companies?
  • What are the risks, and how severe are they?

I’m really simple and just use what most Rust projects use – MIT + Apache v2

1 Like

How do you feel about the clause allowing distribution of code under future versions of the MPL? I mean this clause:

You may distribute the Covered Software under the terms of the version
of the License under which You originally received the Covered Software,
or under the terms of any subsequent version published by the license
steward.

I low-key fear that a future version might not retain the spirit of the MPL-2.0 and code can immediately be re-licensed under it.

Aye, this is something that raises my eyebrows. I wish this was something licenses just didn’t do, but I see why it’s important for copyleft compatibility. It would be smarter to carve out exceptions for future additions to compatibility tables.

1 Like

MPL sounds like a reasonable compromise for when you want coplleft but to allow “linking” (whatever that actually is), but it rubs me the wrong way that the copyleft is per-file: if you modified some files, you only need to release those. But programming language modules usually have multiple files which communicate over private interfaces, so proprietary downstreams can modify the module by adding their own code using prvate interfaces in extra files and don’t have to contribute that back.

When I release a library with a linking exeption, I want the whole library to be useable, but to get back the complete modifications.

LGPL is one step more: it requires that the user can relink the libraries. In Rust, for example, without a stable ABI, distributing object files is not a thing. So a Rust LGPL library is one which no proprietary system will bother with at all.

1 Like

I think this could be solved with “LGPL-3.0-only WITH LGPL-3.0-linking-exception” (written in SPDX format).

I wish we had a shorthand for this, perhaps it could provide clarity and increase adoption.

This is exactly also my rule of thumb. But I find the discussion EUPL - a better choice for European citizens? compelling andight consider the EUPL for some future project.