Arthur's Blog

Why GPL?

2025-12-03 || Tags: programming ip gpl

Many people have written about this with much better wording, but I would like to share some of my thoughts too.

What is an Open Source License?

By default, code is considered a written copyrighted work. This means it basically treated like a book. By default, no one has any right to copy a book, modify it, redistribute it, or anything like that. An open source license is a way to allow third parties (other than the author) to do those things.

What does the GPL do differently?

The GPL license goes a step further to require that these freedoms are passed to every eventual user of the software. This is why it is often called a "free" license. It's free as in freedom, not free as in gratis. The Free Software Foundation enumerated these four freedoms to clearly set out what freedoms should be maintained.

If a license doesn't have the requirement to keep carrying this freedom forward, it's called "non-free" or "permissive". Here, permissive is referring to the permission for a developer and their employer to drop/ignore these freedoms.

The Four Essential Freedoms

I've put them here just so you don't have to click that link:

Phrasing!

The way I have phrased the above is where people differ (and get annoyed). Because, while it is (and should be!) presented as a way to enhance the freedom of the user and use cases of the software, it does put requirements on developers. Also mentioned is the "viral" nature that the freedoms are required for any additional software that uses GPL code. Usually requiring that the new, derived code is also GPLd itself - otherwise you would be limiting the way a user could interact.

So why GPL?

Honestly, I think it is, and should be, as simple as those four freedoms. Particularly freedom 0 - the right to run an application as you like. That's... just it.

If I have to convince you that freedom to read and modify text is an overall good, I guess I've got nothing here and I don't think I would have any chance of convincing you of the merits of GPLd code. But I doubt you've ever used proprietary software and thought "damn, I wish I could change this".

For me.... I don't want software that tracks me. I don't want software to require me to create an account. I don't want software that will be shutdown in some way in the future. I don't with crap features I can't remove. I don't want artificial limits placed in software.

It's only very occasionally I have modified software itself to add a new feature I wanted (freedom 0). More often though, I have used software where someone else has modified something in a useful way and I'll go download their version (freedom 2).

Other Reasons

There are other reasons too, of course. These discussed below are obviously related to or resulting from the four freedoms, but have a slightly different angle to them beyond what's stated at face value. To me, these are very much secondary reasons.

One reason is that it makes it makes integration commercial and/or proprietary software also freedom preserving. I doubt I would ever write something so useful that Orasoft (a made up company to protect the innocent; any resemblance to any real world company is purely coincidental) would include it in their software, but if they ever did, I would completely 100% want an end user of that software to be able to modify whatever other bits Orasoft have put in it. I just wouldn't trust them. Making the SW I write GPL ensures that no matter what weird trickery Orasoft had done, my lovely end user has the ability to remove it.

Now the reality is that all big SW companies have basically put a ban on any and all GPL code, so this situation would never occur. But it's nice to know it could be an option.

The flip side to the above is that non-free licences (MIT and BSD to name a couple) don't have the above at all. For non-free open source code, Orasoft can carte blanche include anything I write in their SW without any limitation. Again, it's not as if anything I write would be of that much value to Orasoft, but if it were, I would get annoyed that a multi-billion dollar company could take my code, gratis, and include it with nothing more than an attribution to me - the end user has no freedom in this case and I would be a bit annoyed. With the GPL and their non-GPL stance, this just isn't going to happen.

(maybe of note, this is why many projects dual license their SW: GPL and proprietary - this allows other companies to purchase an unencumbered license to use the code as they wish).

The GPL encourages collaboration. This is one of the main reasons, as far as I know, the Linux Kernel chose the GPL (and GPLv2 specifically - not GPLv3, but that's a whole other thing to get into). If your main interest is in code and code modifications, then the GPL will require any other users of it to share their code. You can see what modifications someone else has made to your code and optionally include it in yours too - because it's all open and GPL at the end of the day.

Contributors to any GPL code provide a free patent license to any patents that relate to their contributions. That adds a good amount of comfort knowing that your contributor can't try to trick you into infringing their patent or similar. (although, contributing patented code to many (all?) permissively licensed code, I think, would imply a patent license for others to use, modify, etc, that code as well - still good to have it written explicitly!)

But What About the Developer's Freedom?

This is the main counter to freedom 0. To be frank, I just don't care that much. That person is a developer, they have the freedom to do a cleanroom implementation, they have the skills. The choices for the developer is simple: ensure freedom for your end users, or don't use the code. The end user basically never has that freedom.

An Author's Decision

One thing that does annoy me when reading discussions about this online (and there always is a lot!) is how much people want to argue why other people should or shouldn't use a given license when someone announces their new project. I have my beliefs as to what is important, so do other people. The decision to use a license is a philosophical one largely based on their own held beliefs. It's hard to go against someone else's philosophy, even harder to convince someone on the internet when discussing someone's baby they've just put out there for all to see!

It's good to discuss, but trying to directly argue with others on this (except in situations where this is the topic at hand specifically) just feels a bit silly.