Let's talk about licenses
This is an opinion piece, that means it contains a lot of my personal views and shouldn't be regarded as legally valid in it's entirety.
Why licenses?Licenses are a hot topic these days, perhaps they have always been a topic in one way or another, however the internet opened the gates of mass plagiarism, which means if you distribute something on the internet you should look at the licensing options you have. Now, you might think that you could just use the pretty known
all rights reservedphrase, but that one has its limitations. If you are distributing on the web and you don't do it for profit, then why not share it? And that's where licenses come into play, licenses allow people to openly know what they can do with your works. These works can be anything, but for this post we are mainly going to look at computer applications as that is what I'm most familiar with.
Are there any bad licenses?Licenses are usually specific to your use case, so which license is the best depends on what you are doing, which also means that there is not really a bad license, but there can be licenses that aren't ideal for your case. For example, if you want to create a library that can be used by everyone you wouldn't want to use GPL or AGPL as applications that make use of the library also have to adopt the license; the effect can be intended sometimes, but in my opinion is just being greedy of another kind.
GPL, AGPL and LGPLWhile all three of three licenses contain the three characters 'GPL' which mean
GNU Public License, they are quite different from each other, while quite similar. All three licenses allow others to modify the code and distribute it freely, however the license must be kept for derivatives, when a work is considered a derivative work differentiates from each of the three licenses. LGPL is rather lax on this question and only modifications are considered derivatives, which makes it more suited for libraries. GPL, however is a bit more strict on this question and as soon as any complex data structure is interchanged between the two applications the one that is invoked by the other is considered a derivative of the other, which makes it not ideal for libraries or APIs where these structures are interchanged all the time. However AGPL goes even extreme in the sense that even network use is considered derivative use, which means it shouldn't really be used unless you really want to enforce this behaviour. Additionally, many people find the compatibility between a license with GNU irritating, as the other license has to be declared to be
free. Too much freedom for you.