licensing-talk/licensing.typ

525 lines
18 KiB
Typst
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#import "@preview/polylux:0.4.0": *
#import "@preview/rubby:0.10.2": get-ruby
// Make the paper dimensions fit for a presentation and the text larger
// #set page(paper: "presentation-16-9", fill: rgb("#010206"))
#set page(width: 297.0mm * 2,height: 168.0625mm, fill: rgb("#010206"), columns: 2,
background: [
#place(
top + left,
rect(
width: 50%,
height: 100%,
fill: rgb("#010206"),
)
)
#place(
top + right,
rect(
width: 50%,
height: 100%,
fill: rgb("#1e1b30"),
)
)
])
#set columns(gutter: 4%)
#set text(size: 18pt, font: "TX-02", fill: rgb("#EBF6ff"), fallback: true,weight: 400)
#set align(top)
#let sections-band = toolbox.all-sections( (sections, current) => {
align(left)[
#box(
width: 50%,
{
set text(fill: gray, size: .8em)
sections
.map(s => if s == current { strong(s) } else { s })
.join([ ])
}
)
]
})
#let ruby = get-ruby(
size: 0.5em, // Ruby font size
dy: 0pt, // Vertical offset of the ruby
pos: top, // Ruby position (top or bottom)
alignment: "center", // Ruby alignment ("center", "start", "between", "around")
delimiter: "|", // The delimiter between words
auto-spacing: true, // Automatically add necessary space around words
)
#show link: underline
// Use #slide to create a slide and style it using your favourite Typst functions
#slide[
#set align(horizon)
#set align(center)
= \*Notices your Software\*
== _OwO is this under a Free, Libre, \
and Open Source license?_
\
A crime against legal systems, good writing,\ and Richard Stallman himself
\
By Mira Volitaris (ArgentumCation)
2025-09-19
]
#set page(footer: sections-band)
#slide[
#toolbox.register-section("Intro")
= Whats a License?
#toolbox.pdfpc.speaker-note("This is a note that only the speaker will see.")
- How you tell other people what they can and can't do with the things you make
#toolbox.pdfpc.speaker-note("TEST")
- By default, works are have All Rights Reserved
- Until big corpo and/or pirates get their mitts on it
- Theres two big classes of license
- Permissive
- Restrictive
- Can also control other things
- Some licenses have ethics clauses
- Some are royalty-free
#colbreak()
#set text(size: 13pt)
Q: First up, what is a license?
A: A miserable block of text, next question
- Copyright law is a bitch, Posting your stuff online is a bitch
- Basically a license is your way of telling other people what they can and cant do with your stuff
- By default, your stuff is under All Rights Reserved, which means you own it and if anyone wants to use it/look at it/share it/what have you, then theyve gotta go through you first
- In practice, that's probably not gonna stop anyone until you get lawyers involved
- So with the kind of licenses you can get off the shelf, theres two main types, Permissive and Restrictive, I find it helpful to think of these from the point of view of big corpo
- Permissive: Basically gives downstream people more freedom to do whatever they want. Like making their own copy of your stuff and selling it
- Big companies will generally only use dependencies if theyre under a permissive license
- Restrictive: Intended to protect specific freedoms, like distribution and modification
- Licenses can attempt to enforce other things like ethics clauses or royalty free
- Royalties in this case are basically a subscription fee to use a copyrighted work
]
#slide[
#toolbox.register-section("FOSS Licenses")
#set align(center)
#set align(horizon)
= FOSS Licenses
#colbreak()
#set align(left)
#set align(top)
FOSS stands for Free and Open Source Software, the definition of which is loosely enforced by the Open Source Initiative and Free Software Foundation
// inset: 0.5em,
]
#slide[
= FOSS Freedoms
#toolbox.side-by-side[
- As outlined by the Stall Man himself, this outlines whats open source or not
0. The freedom to run the program to for whatever and whyever
1. The freedom to see and modify the source code
2. The freedom to make and distribute copies
3. The freedom to do that with your modified versions
][
#figure(
image("img/stallman.png",height: 325pt))
]
#colbreak()
This is the general idea of what FOSS is
- Let me use the program however the fuck I want
- Let me do whatever the fuck I want with the code
- I can give your code to whoever the fuck
- I can give my code to whoever the fuck
]
#slide[
= FOSS Freedoms (cont.)
- Everything in this section is gonna require the following:
- Commercial Use
- Distribution
- Modification
- Private Use
#colbreak()
The tl;dr for this section, every license in this section needs:
- Commercial use: you gotta be able to sell my shit
- Distribution: woe, my software be upon ye
- Modification: woe, they made horny fanfic of my software
- Private Use: whatever consenting adults do in the privacy of their own home using my software is not my problem
]
#slide[
#toolbox.side-by-side(columns: (4fr,3fr))[
= GPL: The GNU Pubic Licenses
- GPLv2
- No Warranty
- No Liability
- Disclose Source
- License notice
- Same License
- State Changes
- GPLv3
- Dont lock down the hardware
- No DRM
- Patent Grant
- License Interop
][
#set align(bottom)
#figure(
image("img/gpl-compat.png"))
]
#colbreak()
#set text(size: 10.5pt,font: "Atkinson Hyperlegible")
These are the OG FOSS licenses, sourced directly from Richard Stallmans sweat glands
- GPLv2
- This is the original copyleft license
- New definition time:
- Copyright forbids changing stuff and giving it to others
- Copyleft forbids forbidding changing stuff and giving it to others
- Q: What happened to GPLv1?, A: I dont know and I dont care. Im gregnant, hungry, and wrote this slide at 4:57 PM, youre not getting real journalism out of me
- No Warranty: If you fuck up, it's not my problem
- No Liability: I'm not liable for whatever crimes against humanity you do with this
- Disclose Source: Put your code somewhere where people can see it\*
- there's no definition of what this actually means so like if you distribute the source code over telegraph that's probably allowed
- License notice: When you distribute this program, you gotta keep a copy of this license handy
- Same license: If you modify this program, you gotta keep this license
- State changes: If you modify this program and distribute it, you gotta say what you changed
- Q: If GPLv2 is so good, why is there no GPLv3
- GPLv3
- A: Im glad you fucking asked
- Back in ye olde days of like 2007 (jesus christ were some of you even born back then?) there was this company named TiVo, that shipped boxes with DRM to prevent users from running modified software
- In an absolutely based move, GNU was like fuck this and made GPLv3
- The patch notes are basically just
- Users should be able to run modified version of the software on any hardware that ships GPLv3 software
- No DRM, nuff said
- Patent Grant: If you put patented code in the codebase, you let contributors and users use the patent and cant sue them over it
- License interop: makes it easier to use code under other licenses in your work
-In general you can include stuff under a permissive license in a more restrictive license
]
#slide[
= GPL (cont.)
- AGPLv{2,3}
- Network use counts as distribution
- Used by Grafana, Mastodon, et al
- LGPLv{2,3}
- Linking Freedom
#colbreak()
#set text(size:17.5pt)
And here we have the offshoots of the original GPL licenses
- AGPL
- The A stands for Affero, which is the company that made this license
- Basically the same as GPLv3, except if the software runs over a network, you still need to make the source code available
- This is basically the most restrictive license you can get while still being open source
- LGPL
- The L doesnt mean its an L license, it just means lesser
- Okay those arent that far apart
- Mainly intended for licenses
- You can link against a shared object (like a .so or .dll) without worrying about the license
- If you modify the code for an LGPL library, you still gotta release it
]
#slide[
= BSD Licenses
On the more permissive end
#toolbox.side-by-side()[
- BSD 4 Clause
- Original BSD license
- Copyright notice
- No endorsement
- Attribution
- BSD 3 Clause
- Removes attribution requirement
][
- BSD 2 Clause
- Yes endorsement
- BSD 2 Clause Patent
- Same as above with a patent grant
- BSD 1 Clause
- Same as 2 Clause, only need license for source
- BSD 0 Clause
- Fuck it we ball
]
#colbreak()
#set text(size:12pt, font: "Atkinson Hyperlegible")
These are some of the more permissive licenses, originally used for BSD itself
- 4 Clause
- This one is the original license used for BSD, its pretty rare these days
- Githubs license pickers examples of projects that use this includes two projects that have been dead for years, and one random java library
- The main bits are:
- Keep a copy of this license available with source and binaries
- You cant claim the original authors endorse your derivative in advertising
- If you advertise a derivative, you gotta say that “This product includes software developed by [project]”
- People took issue with that last part, which led to
- 3 Clause
- It's the same one as BSD-4, but removes the pesky requirement to cite the people you stole code from in your aads
- 2 Clause
- Apparently not being able to slap Hexley's face on derivative software is a deal breaker for some people
- Okay I found out after writing that line that Hexley is the Darwin mascot, not the BSD one
- Foreshadowing is a literary technique in which
- You can use the original authors to promote your derivative work
- 2 Clause Patent
- Same as above with a patent grant
- 1 Clause
- BSD 2 except you dont have to include the license with binaries, just source code
- 0 Clause
- Okay so apparently INCLUDING THE FUCKING LICENSE was too much for some fuckers, so BSD-0 was created
]
#slide[
= Creative Commons
Intended to sit between public domain and All rights reserved
- Not specific to software
- This presentation is CC-BY-NC-SA 4.0
- CC-BY
- Attribution
- CC-BY-SA
- Attribution + ShareAlike
- CC0
- Public Domain
#colbreak()
#set text(size: 14pt)
- Creative Commons licenses are a group of licenses that are intended sit between All Rights Reserved and Public Domain, these ones are considered open source, the non open sources
- While most of the other licenses in this talk are primarily focused on software, CC licenses are used for basically everything,
- This talk itself is CC-BY-NC-SA 4.0, and the images I stole from wikipedia are probbaly under some other CC license
- The Stallman pic at the beginning of this talk is CC-BY-SA 4.0, if you can find a way to make money off that shit, be my guest
- #link("https://creativecommons.org/licenses/by/4.0/")[CC-BY-4.0]
- Do whatever the fuck you want, just credit me
- #link("")[CC-BY-SA 4.0]
- Same as above but you gotta use the same license on derivatives
- This is the most common CC license
- #link("https://creativecommons.org/publicdomain/zero/1.0/")[CC0]
- Do whatever the fuck you want, period
- it's public domain
- this license only exists because some places don't have a concept of you putting your work into the public domain
]
#slide[
= The Permissive Twins
Apache:
- Keep Notices
- Unmodified code stays under Apache in derivatives
- Modified code can be anything
- Patent Grant
- State Changes
- GPLv3 Compatible
- LLVM Exception (optional)
- FSF begrudgingly approved
#colbreak()
#set text(size: 15pt)
- #link("https://www.apache.org/licenses/LICENSE-2.0")[Apache]
- If there's a NOTICE file in the original work, you gotta keep it in the derivatives
- this don't need to contain any legal stuff, you can put whatever the fuck you want in there, like the bee movie script
- any unmodified parts of the codebase need to remain under the Apache license
- if you modify it, anything goes
- any contributions to an apache licensed codebase are under the same license unless otherwise stated
- also does the whole patent grant thing, so you can use any patents that are already in the codebase
- oh yeah, you also need to state any changes you make
- you can combine this stuff with GPLv3 as long as the result is GPLv3
- It's not compatible with GPLv2 unless you add:
- #link("https://spdx.org/licenses/LLVM-exception.html")[LLVM exception]
- this basically just lets you link against anything with this exception included
- If you're gonna use a permissive license, FSF would rather it be this one
]
#slide[
= The Permissive Twins (cont.)
MIT:
- Most popular license on GitHub
- Include the license in derivatives
- MIT-0 doesnt even require that
- No patent grant
]
#slide[
= The Other Public Domain Ones
- WTFPL
- “You just DO WHAT THE FUCK YOU WANT TO.”
- Unlicense
- Basically the same thing, doesnt say the fuck word
]
#slide[
= Grab Bag
- EUPL
- Most popular on GyattHub
- Made by EU
- Compatible with GPL/AGPL/MPL/LGPL/APL/JPL/Both IPLs/VPL/BNPL/WTFPL and what have you
- Linking Freedom
- Network Use is distribution
- Royalty Free
- MPL
- Used by Firefox and Thunderbird
- You gotta keep em seperated
]
#slide[
#toolbox.register-section("Non-FOSS Licenses")
#set align(center)
#set align(horizon)
= Non-FOSS Licenses
#set align(bottom)
]
#slide[
= Creative Commons Part 2
- CC-BY-NC-SA
- Attribution
- NonCommercial
- Sharealike
- CC-BY-ND
- Attribution
- NonCommercial
- CC-BY-NC-ND
- Ill let you figure this one out
]
#slide[
= Putting the Pot in Potpourri
- AFPL
- Derived from GPL
- Include Source Code
- No selling
- Anti-996
- So back in the old #ruby[zhōng][中] of #ruby[guó][国], there was this thing called the 996 system
Dont be Mr. Krabs, follow labor laws
]
#slide[
= Putting the Pot in Potpourri (cont.)
- Anti-Capitalist Software License
- Include License
- Dont be a capitalist
- ACAB
- Artistic License
- #strike[Is what Im taking with all these legal definitions]
- Not that important except FSF calls it "Too clever for its own good" which I thought was funny
- I can't even find a link for this
]
#slide[
= Putting the Pot in Potpourri (cont.)
- BSD 3 Clause No Nuclear Warranty
#show: later
#place(top+center,dy: -75pt, image("img/full-bush.png", height: 150%))
]
#slide[
= Rapid Fire since its 5:49PM
- BUSL/BSL
- GPLv2 ish after 4 years
- CPOL
- No selling this
- Dont do shit without my permission
- Commons Clause
- Dont sell this shit
- Not a license
- Functional Source
- Apache or MIT after 2 years
- No competing with me
]
#slide[
= Rapid Fire since its 5:49PM
- HESSLA
- No human rights violations pls
- No helping other people do human rights violations
- JSON
- Dont be evil
- Unless youre IBM
- PPL
- Dont make money off of this unless youre a co-op
- SSPL
- AGPL with extra steps
- SIL OFL
- For fonts
- dont charge money for it
]
#slide[
= Hexley
- WHY THE FUCK DOES APPLE HAVE A FUCKING LICENSE FOR ITS FURSONA
- WHY DOES APPLE HAVE A FURSONA
- WHY THE FUCK dO I HAVE The LICENSE FOR A NON-FOSS FUCKIGN FURSONA IN MY PRESENTATION
- You need to include the copyright statement somewhere
- If you want to mass produce merch, you need to request permission from the copyright holders
- derivatives must be related to original work
- derivatives should also should not "dilute the quality" of the work
- IT'S ONE AM AND THEY HIT THE SECOND FUCKING BRAINCELL
- I AM HAVING A DTROKE APPLE NAS TEO FURSONAE
]
#slide[
#toolbox.side-by-side[
#box(image("img/anika.png"))
][
#box(image("img/hexley.png"))
]
]
#slide[
= Hippocratic License
This one is pretty modular actually
- no charge
- no royalty
- can remix/redistribute etc
- has patent grant
]
#slide[
= Hippocratic License Part 2
#toolbox.side-by-side[
- Don't murder people
- Don't slavery
- Don't child labors
- No Cruel and Unusual Punishment
- No racism/sexism/etc
- Right to a fair trial?
- No search and seizure without a warrant or random arrests?
- No invasions of home or privacy, or communications
- No eminent domain
- No Trail of Tearsing people
- No unionbusting
][
- No hurting the environment
- equal pay for equal work
- reasonable working hours and periodic paid holidays
- Verify your supply chain
]
]
#slide[
= Hippocratic License Part 3
#toolbox.side-by-side[
- Don't be a fossil fuel company
- No hurting the environment (again?)
- No mineral or fossil fuel mining
- Don't be on the BDS list
- Don't be the Taliban
- Don't be the Myanmar government
- Don't do business in/with the Xinjiang Uygur Autonomous Region of China?
- Don't have beef with Customs and Border Protection for Forced Labor
][
- Don't do mass surveillance
- Don't be a military
- Don't be law enforcement
- Don't be a media entity that promotes violence
- Don't unionbusting (again?)
]
]
#slide[
= Some resources that can help with picking a license
- Most of these are only gonna help with FOSS licenses
- #link("https://choosealicense.com/")[choosealicense.com] is maintained by GitHub, has the most common licenses
- #link("https://interoperable-europe.ec.europa.eu/collection/eupl/solution/licensing-assistant/find-and-compare-software-licenses")[EU Licensing Assistant] makes it easier to compare licenses in my opinion
- #link("https://spdx.org/licenses/")[SPDX] is gonna be the most thorough source, has a list of like every license on earth, and licenses are typically identified using their entry in the SPDX list
]