7 minute read

A bunch of notebooks

I’ve been putting my work online in various formats for almost 20 years now. For most of that time, I’ve used extremely permissive licenses such as the MIT License to distribute my work in an attempt to promote usage and adoption. Now that I’m quite a bit older and experienced (you may say curmudgeony), let me tell you why I’m changing my tune and am adopting a Copyleft approach.

In the past decade or so, I’ve noticed a widespread adoption of the MIT license, even by those who in the past opposed Open Source Software as a concept. Why the swing and why so extreme? You’d think that those companies would slowly adopt Open Source rather than going all-in all at once. What’s going on?

Free as in Beer

Let me use Visual Studio Code as an example since it’s widely used and a famous Open Source project using a permissive license. But why is it using the MIT License? Well, it makes sense for Microsoft to foster a developer community willing to send in patches that improve its software without having to pay for any of it. In return, the community gets a sense of ownership since they’re improving the software they use on a daily basis.

Better dev tools = happy devs.

On top of that, the MIT license is so permissive that you can link entire chunks from vscode and use them in your own projects. So, that’s a win-win, right?

Food Stalls in a Public Park

Of course, Microsoft integrates all of its products into vscode very well. GitHub is the default source control provider and there’s excellent support for GitHub copilot. It also collects telemetry data by default, though you can turn it off if you want to. That is, if you knew it was collecting your data since there’s no indication of that after a fresh install:

vscode fresh install

You can also sync your settings by connecting your GitHub or Microsoft account, but outside of that, you’ll have to keep track of a JSON file yourself. For ease of use and speed, you’re likely end up using those services to quickly get set up. And now you’re partially bought-in to the ecosystem already.

I like to think of these things as food stalls in a public park. On a hot summer’s day, rather than walking all the way back to your car in the burning sun and getting a warm bottle of water from the trunk, why not buy a $5 ice-cold bottle from a food vendor? Maybe some chips and candy as well since you’re already there? It costs a bit more, but it’s so convenient. Isn’t it weird that these vendors all wear the same outfits, though?

Dependency

Visual Studio Code didn’t come out of nowhere, of course. Many see it as a continuation of GitHub’s Atom editor, but improved. It is built on top of dozens of Open Source licensed NPM libaries, many of them created by individuals and small groups of developers.

Take minimist, for example. It’s a nice little MIT-Licensed library for parsing command line arguments with 53 million downloads per week, according to NPM. This project is primarily maintained by two developers since 2013, neither of whom work for Microsoft as far as I can tell. The other 9 contributors all have contributed around a single commit on average. These developers both have sponsors, though it’s worth noting that none of them are Microsoft, even though the package is referenced in 28 source files, many of them integral to how vscode functions.

The same is true for many of vscode’s dependencies, so many of which are maintained by very few developers, dedicating their free time and responding to an endless stream of bug reports and requests.

XKCD Dependency Comic (2347)

All the while, a multi-billion dollar corporation builds its ecosystem around this free software, benefiting from the unpaid work of hundreds of independent developers.

The Price of Free Beer

It’s worth pointing out, though, who’s actually paying for all this free code.

The simple truth is that most developers give away their code for free – whether it’s to pad their resumes or as a fun side project. By using the MIT License, you’re avoiding criticism, so it’s the safe choice.

Though, some of these Open Source projects have a Patreon page or a GitHub sponsorship section. But by far, the people who support these projects are individuals rather than companies. Sure, large companies do support Open Source projects, but mostly those with lots of traffic to very visible sponsorship sections.

If there’s no direct benefit, these companies don’t care and don’t pay. That’s just simple capitalism, baby.

Not all developers need sponsors, though. Many of them don’t want sponsors either. That’s fine. That’s the freedom of choice. Either way, it’s wise not to rely on the kindness of corporations.

Ask Azer Koçulu.

Someone Else’s Hot Trash…

All of this, and so much more, made me rethink my relationship with Open Source software and distributing information free (as in beer) via the internet in general.

I never thought too much about these things and was happy to have some projects to slap on my resume that had a decent userbase. I was proud that regular folks wanting to learn OpenGL or use my MkDocs plugins were able to do so for free and without strings attached. When it came down to the wire, I knew that I was providing something of value to individuals like myself.

That was until I received an email from a behemoth of a company titled “License Request for old code snippet”:

Hello Mr. Luten,

My name is ${JOHN_DOE}, I am a software quality engineer working at ${MEGACORP}. One of my jobs is to verify that developers use appropriately licensed third party software with their code. We found a file that attributes a snippet of the code as “Courtesy of http://—.com”, but there isn’t more of a copyright notice for that. This site —.com doesn’t exist anymore, however we were able to identify you as the author of the code. Please see the code snippet in the attached file.

Please let me know if we have to correct author, and if yes, would be prepared to license the code snippet to ${MEGACORP} under an “MIT license”.

This was a surprise. I didn’t think that anyone used my old C++ code from 2008 in 2019. I told them “MIT is fine!” and warned them that the code should probably be retired since the quality of that code was hot trash. I went on my merry way.

But this nagged at me in the back of my mind for a long time. Years. Why is ${MEGACORP} asking to use the MIT license rather than pay for it? Is this what they expect? Is this the norm? And, more importantly, why did I think it was fine to say “yes” to this? This is a company with a $100,000,000,000+ market cap. Again, why is a company whose stock pays dividends explicitly asking for the MIT License?

Something’s off here. This is not the spirit of Open Source as I understand it. It’s not what I signed up for.

Copyleft Adoption

In retrospect, I should have responded differently, but that ship has sailed. The experience made me rethink how I approach sharing my work – and how I’ll approach licensing going forward. The more I thought about it, the more I realized that by offering my work freely under permissive licenses like MIT, I was enabling an environment where large companies benefit disproportionately from the labor of independent developers. The work isn’t truly free, at least not in the way Open Source (or maybe my) ideals suggest. So, I’ve decided it’s time to shift my focus.

Dual licensing it is.

For any new project, I will adopt the GNU General Public License, version 2 (GPLv2) or an equivalent Copyleft license depending on the specifics of the project. This allows the continuation of personal use and community contributions. This is the common use case, and the use case that I care about the most as a person.

If a company feels the need to absorb the software into their own codebase without recontributing their changes, they can get a proprietary license. These are the edge cases I don’t want to lose a wink of sleep over.

I can’t change the licenses of my existing projects, but I can shift my focus to the future. And that’s what I’m planning on doing.

What’s The Point?

Be mindful of what you put out in the open for free. Your work, however insignificant it may seem to you, could be the backbone of someone else’s entire infrastructure.