This website has a license now

If you've been around here for any amount of time, you'll know I'm extremely laissez-faire about how people use my code, so I didn't see any need to slap a formal license on anything — it sounded too restrictive and annoying, and what's the point if there's basically nothing you can't do? But I recently had a conversation with Curi that convinced me to license my code anyway.

Intellectual property

I'm so permissive about people using my stuff because I don't believe in the concept of intellectual property. I find the concept even more tenuous when it's applied to code. Where can you draw the line between "learning from" and "stealing" someone's code? There are only so many ways to skin a cat. Are you going to go out of your way to write inefficient code to avoid "stealing" from the person with the more efficient solution?

The line gets even fuzzier when we throw markdown languages like HTML into the mix, where you have even fewer options for producing the same outcome unless you're willing to do some appallingly bloated and roundabout things.

The usual argument against code "theft" is that it's not fair for people to ride off all your hard work instead of learning themselves, but looking at code and tinkering with it is how you learn. HTML and CSS in particular are very easy to figure out without needing to learn first principles because they're markup languages, not programming languages, and taking apart Real Code is going to get you farther faster than staring at W3Schools is.

What if someone copies the HTML and CSS of your layout but changes enough stuff that it looks visually distinct? What if they like how you did a certain link animation and copy that verbatim into their code? What if they like your website layout and want to imitate it, but write all the code from scratch to avoid taking yours? What is acceptable here? If you say that any of these things is okay with credit, how far down in the "inspiration" chain do you need to keep crediting?

This isn't a persuasive writing piece. I don't intend to change anyone's mind here, nor do I advocate for using people's code against their wishes because that just makes you an ass. I'm also not saying there are right answers to any of the questions I've posed. What I am saying is that I don't care about applying those distinctions to things that I've made.

Copyleft

I started thinking about licensing during a conversation with Curi, who has been making doll models for 3d printing. They mentioned wanting to license their models in a way that allows people to do whatever they want while preventing them from claiming the models as their intellectual property. I thought, man, that sounds like a good idea for all the code I've been putting into the ether for the past year!

Fortunately, a lot of people who are smarter than me have already come up with a formal legal framework for this exact thing: copyleft. Copyleft lets you do whatever you want with a work, including redistribution, as long as you extend the same freedoms to other people. Its enforcement power comes from the existing framework of copyright law, which allows copyright holders to restrict the use of their work; copyleft only "restricts" the use of a work by preventing other people from imposing restrictions.

I like the copyleft approach better than leaving my work to the public domain (which is more or less what I was doing until now) because I don't want other people to restrict access to resources that I'm distributing for free.

The GNU GPL

The specific copyleft license I've chosen is the GNU General Public License (v3 as of this writing), because it exists for code and (more importantly) allows commercial redistribution. You can read more information and the general rundown of its terms on the license page.

In short, the license probably won't affect your use of my code. You still get the same freedom to do whatever the hell you want, and you're not forced to attribute the code to me or share your modifications if you're using it for personal use (which I anticipate is the significantly more common use case).

I am requiring you to tell any interested parties where you got your code if you're asked; I had politely asked for this before, but now it's a formal requirement with the license. You also can't ask people not to copy your code since that contradicts the terms of the license; if this is something that bothers you, other people make resources you can use without these conditions.

The major change is that the GNU GPL adds some stipulations if you want to redistribute my code. You can redistribute my code, for free or for a cost, modified or as-is, but you need to tell people where they can get the original code. (Put another way, you can sell my code without any modifications, but you need to tell people they can get it for free from me.) This does count as forced attribution, which I don't love, but it's a necessary sacrifice I have to make to make sure my resources remain accessible.

All of these terms exist to keep my code freely available, not because I'm concerned about "stealing" (which, as we've established, I don't think is possible). Basically, you can do whatever as long as you let other people also do whatever. Have fun!