diff --git a/.formatter.exs b/.formatter.exs
index 84685129091..a7df4e3d63d 100644
--- a/.formatter.exs
+++ b/.formatter.exs
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
[
inputs: [
"lib/*/{lib,scripts,unicode,test}/**/*.{ex,exs}",
diff --git a/.gitattributes b/.gitattributes
index f0d70e87e1f..ebff1ea6a4e 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
lib/elixir/test/elixir/fixtures/*.txt text eol=lf
*.ex diff=elixir
*.exs diff=elixir
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
index 9034a329bb9..71572d44a19 100644
--- a/.github/ISSUE_TEMPLATE/config.yml
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
---
blank_issues_enabled: true
diff --git a/.github/ISSUE_TEMPLATE/issue.yml b/.github/ISSUE_TEMPLATE/issue.yml
index 160fcae30cf..cd1ba44e31e 100644
--- a/.github/ISSUE_TEMPLATE/issue.yml
+++ b/.github/ISSUE_TEMPLATE/issue.yml
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
---
name: Report an issue
description:
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 5ace4600a1f..ea242ad8eef 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
version: 2
updates:
- package-ecosystem: "github-actions"
diff --git a/.github/workflows/ci-markdown.yml b/.github/workflows/ci-markdown.yml
index 6dcff7517d5..73eb80b89cd 100644
--- a/.github/workflows/ci-markdown.yml
+++ b/.github/workflows/ci-markdown.yml
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
name: CI for Markdown content
on:
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 85632738539..20732d84476 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
name: CI
on:
diff --git a/.github/workflows/notify.exs b/.github/workflows/notify.exs
index 8d3388e0901..77251132a3d 100644
--- a/.github/workflows/notify.exs
+++ b/.github/workflows/notify.exs
@@ -1,4 +1,8 @@
# #!/usr/bin/env elixir
+
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
[tag] = System.argv()
Mix.install([
diff --git a/.github/workflows/notify.yml b/.github/workflows/notify.yml
index 482d5ad241c..92f189835b4 100644
--- a/.github/workflows/notify.yml
+++ b/.github/workflows/notify.yml
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
name: Notify
on:
diff --git a/.github/workflows/ort/action.yml b/.github/workflows/ort/action.yml
index fc190afdc42..c6cdfa5b28c 100644
--- a/.github/workflows/ort/action.yml
+++ b/.github/workflows/ort/action.yml
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
name: "Run OSS Review Toolkit"
description: "Runs OSS Review Toolkit & generates SBoMs"
inputs:
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 08326718253..6a5b9689032 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
name: Release
on:
diff --git a/.github/workflows/release_pre_built/action.yml b/.github/workflows/release_pre_built/action.yml
index 3d6efd332af..b8cdbd24f6d 100644
--- a/.github/workflows/release_pre_built/action.yml
+++ b/.github/workflows/release_pre_built/action.yml
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
name: "Release pre built"
description: "Builds elixir release, ExDoc and generates docs"
inputs:
diff --git a/.gitignore b/.gitignore
index 0760a308146..4b40c1790b5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
/doc/
/lib/*/ebin/
/lib/*/_build/
diff --git a/.markdownlint.jsonc b/.markdownlint.jsonc
index 6b97ea5949d..c50b8c7d60f 100644
--- a/.markdownlint.jsonc
+++ b/.markdownlint.jsonc
@@ -1,3 +1,6 @@
+// SPDX-License-Identifier: Apache-2.0
+// SPDX-FileCopyrightText: 2021 The Elixir Team
+
{
// Consecutive header levels (h1 -> h2 -> h3). We don't care about this.
"MD001": false,
diff --git a/.ort.yml b/.ort.yml
index 6023287ff4a..2aa3687fd46 100644
--- a/.ort.yml
+++ b/.ort.yml
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
curations:
license_findings:
- path: "lib/elixir/pages/images/logo.png"
diff --git a/.ort/config/config.yml b/.ort/config/config.yml
index ba0dbc992e1..9b45396fdf8 100644
--- a/.ort/config/config.yml
+++ b/.ort/config/config.yml
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
ort:
scanner:
skipConcluded: false
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6b46791a3c9..7eff8c9a496 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+
+
# Changelog for Elixir v1.19
## Type system improvements
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index 0e0f08f15ec..a00f52681ff 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -1,3 +1,9 @@
+
+
# Code of Conduct
Contact: elixir-lang-conduct@googlegroups.com
diff --git a/Makefile b/Makefile
index a4996df3d7a..e14857ed00c 100644
--- a/Makefile
+++ b/Makefile
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
PREFIX ?= /usr/local
TEST_FILES ?= "*_test.exs"
SHARE_PREFIX ?= $(PREFIX)/share
diff --git a/README.md b/README.md
index 96124049143..da207a977c0 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,9 @@
+
+
diff --git a/RELEASE.md b/RELEASE.md
index 5d981409e24..76d0f945895 100644
--- a/RELEASE.md
+++ b/RELEASE.md
@@ -1,3 +1,9 @@
+
+
# Release process
## Shipping a new version
diff --git a/SECURITY.md b/SECURITY.md
index 788af0aa7eb..159deb6cafe 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -1,3 +1,9 @@
+
+
# Security Policy
## Supported versions
diff --git a/bin/elixir b/bin/elixir
index 4a37e3491da..a232cf1da9a 100755
--- a/bin/elixir
+++ b/bin/elixir
@@ -1,4 +1,9 @@
#!/bin/sh
+
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
set -e
ELIXIR_VERSION=1.19.0-dev
diff --git a/bin/elixir.bat b/bin/elixir.bat
index d0657c44a70..3eec7b7119d 100644
--- a/bin/elixir.bat
+++ b/bin/elixir.bat
@@ -1,5 +1,9 @@
@echo off
+:: SPDX-License-Identifier: Apache-2.0
+:: SPDX-FileCopyrightText: 2021 The Elixir Team
+:: SPDX-FileCopyrightText: 2012 Plataformatec
+
set ELIXIR_VERSION=1.19.0-dev
if ""%1""=="""" if ""%2""=="""" goto documentation
diff --git a/bin/elixirc b/bin/elixirc
index 650e4758b98..5c07d5d76ee 100755
--- a/bin/elixirc
+++ b/bin/elixirc
@@ -1,4 +1,9 @@
#!/bin/sh
+
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
set -e
if [ $# -eq 0 ] || [ "$1" = "--help" ] || [ "$1" = "-h" ]; then
diff --git a/bin/elixirc.bat b/bin/elixirc.bat
index 5020f0f3ee7..d1b0599f818 100644
--- a/bin/elixirc.bat
+++ b/bin/elixirc.bat
@@ -1,4 +1,9 @@
@echo off
+
+:: SPDX-License-Identifier: Apache-2.0
+:: SPDX-FileCopyrightText: 2021 The Elixir Team
+:: SPDX-FileCopyrightText: 2012 Plataformatec
+
setlocal
set argc=0
for %%A in (%*) do (
diff --git a/bin/iex b/bin/iex
index 5bf60509369..ba433a3ce0b 100755
--- a/bin/iex
+++ b/bin/iex
@@ -1,4 +1,9 @@
#!/bin/sh
+
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
set -e
if [ "$1" = "--help" ] || [ "$1" = "-h" ]; then
diff --git a/bin/iex.bat b/bin/iex.bat
index fc9f5d3f134..5739f66081b 100644
--- a/bin/iex.bat
+++ b/bin/iex.bat
@@ -1,4 +1,9 @@
@echo off
+
+:: SPDX-License-Identifier: Apache-2.0
+:: SPDX-FileCopyrightText: 2021 The Elixir Team
+:: SPDX-FileCopyrightText: 2012 Plataformatec
+
setlocal
if /I ""%1""==""--help"" goto documentation
if /I ""%1""==""-h"" goto documentation
diff --git a/bin/mix b/bin/mix
index 43041000b53..ef962748ae0 100755
--- a/bin/mix
+++ b/bin/mix
@@ -1,2 +1,7 @@
#!/usr/bin/env elixir
+
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
Mix.CLI.main()
diff --git a/bin/mix.bat b/bin/mix.bat
index 435a5257340..b0fde891d57 100644
--- a/bin/mix.bat
+++ b/bin/mix.bat
@@ -1,2 +1,7 @@
@echo off
+
+:: SPDX-License-Identifier: Apache-2.0
+:: SPDX-FileCopyrightText: 2021 The Elixir Team
+:: SPDX-FileCopyrightText: 2012 Plataformatec
+
call "%~dp0\elixir.bat" "%~dp0\mix" %*
diff --git a/bin/mix.ps1 b/bin/mix.ps1
index 05b19a04746..1bee46dc8d7 100755
--- a/bin/mix.ps1
+++ b/bin/mix.ps1
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
# Store path to mix.bat as a FileInfo object
$mixBatPath = (Get-ChildItem (((Get-ChildItem $MyInvocation.MyCommand.Path).Directory.FullName) + '\mix.bat'))
$newArgs = @()
diff --git a/lib/eex/lib/eex.ex b/lib/eex/lib/eex.ex
index 3ed33639881..2e3c07f5eed 100644
--- a/lib/eex/lib/eex.ex
+++ b/lib/eex/lib/eex.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule EEx.SyntaxError do
defexception [:file, :line, :column, :snippet, message: "syntax error"]
diff --git a/lib/eex/lib/eex/compiler.ex b/lib/eex/lib/eex/compiler.ex
index aedd5367a9a..d6bab16ee01 100644
--- a/lib/eex/lib/eex/compiler.ex
+++ b/lib/eex/lib/eex/compiler.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule EEx.Compiler do
@moduledoc false
diff --git a/lib/eex/lib/eex/engine.ex b/lib/eex/lib/eex/engine.ex
index 480d9f88de0..10b01b82b9f 100644
--- a/lib/eex/lib/eex/engine.ex
+++ b/lib/eex/lib/eex/engine.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule EEx.Engine do
@moduledoc ~S"""
Basic EEx engine that ships with Elixir.
diff --git a/lib/eex/lib/eex/smart_engine.ex b/lib/eex/lib/eex/smart_engine.ex
index 0d3be7d90d2..4604adeb89f 100644
--- a/lib/eex/lib/eex/smart_engine.ex
+++ b/lib/eex/lib/eex/smart_engine.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule EEx.SmartEngine do
@moduledoc """
The default engine used by EEx.
diff --git a/lib/eex/mix.exs b/lib/eex/mix.exs
index 259b1707036..acf9eb901fd 100644
--- a/lib/eex/mix.exs
+++ b/lib/eex/mix.exs
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule EEx.MixProject do
use Mix.Project
diff --git a/lib/elixir/Emakefile b/lib/elixir/Emakefile
index 33cc5994ca5..2d3d2e5e3e1 100644
--- a/lib/elixir/Emakefile
+++ b/lib/elixir/Emakefile
@@ -1,3 +1,7 @@
+%% SPDX-License-Identifier: Apache-2.0
+%% SPDX-FileCopyrightText: 2021 The Elixir Team
+%% SPDX-FileCopyrightText: 2012 Plataformatec
+
{'src/*', [
warn_unused_vars,
warn_export_all,
diff --git a/lib/elixir/lib/access.ex b/lib/elixir/lib/access.ex
index d77d76ae3ba..ba7fc07f496 100644
--- a/lib/elixir/lib/access.ex
+++ b/lib/elixir/lib/access.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Access do
@moduledoc """
Key-based access to data structures.
diff --git a/lib/elixir/lib/agent.ex b/lib/elixir/lib/agent.ex
index 1e17bd715d6..df0cbd3e534 100644
--- a/lib/elixir/lib/agent.ex
+++ b/lib/elixir/lib/agent.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Agent do
@moduledoc """
Agents are a simple abstraction around state.
diff --git a/lib/elixir/lib/agent/server.ex b/lib/elixir/lib/agent/server.ex
index 03cb763ea2b..cba85b49ac9 100644
--- a/lib/elixir/lib/agent/server.ex
+++ b/lib/elixir/lib/agent/server.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Agent.Server do
@moduledoc false
diff --git a/lib/elixir/lib/application.ex b/lib/elixir/lib/application.ex
index c31594eaa97..670f34ad36b 100644
--- a/lib/elixir/lib/application.ex
+++ b/lib/elixir/lib/application.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Application do
@moduledoc """
A module for working with applications and defining application callbacks.
diff --git a/lib/elixir/lib/atom.ex b/lib/elixir/lib/atom.ex
index 685ddf6aade..1e11f6b9799 100644
--- a/lib/elixir/lib/atom.ex
+++ b/lib/elixir/lib/atom.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Atom do
@moduledoc """
Atoms are constants whose values are their own name.
diff --git a/lib/elixir/lib/base.ex b/lib/elixir/lib/base.ex
index ae2cc4842f3..a9d4f542c2a 100644
--- a/lib/elixir/lib/base.ex
+++ b/lib/elixir/lib/base.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Base do
import Bitwise
diff --git a/lib/elixir/lib/behaviour.ex b/lib/elixir/lib/behaviour.ex
index 77b533d0a2b..4a43fccc068 100644
--- a/lib/elixir/lib/behaviour.ex
+++ b/lib/elixir/lib/behaviour.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Behaviour do
@moduledoc """
Mechanism for handling behaviours.
diff --git a/lib/elixir/lib/bitwise.ex b/lib/elixir/lib/bitwise.ex
index 15116ca0a8f..e00ecb76278 100644
--- a/lib/elixir/lib/bitwise.ex
+++ b/lib/elixir/lib/bitwise.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Bitwise do
@moduledoc """
A set of functions that perform calculations on bits.
diff --git a/lib/elixir/lib/calendar.ex b/lib/elixir/lib/calendar.ex
index 6e79e3c18dd..d7282d5f859 100644
--- a/lib/elixir/lib/calendar.ex
+++ b/lib/elixir/lib/calendar.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Calendar do
@moduledoc """
This module defines the responsibilities for working with
diff --git a/lib/elixir/lib/calendar/date.ex b/lib/elixir/lib/calendar/date.ex
index 854c1c42ee8..0fb91ebce07 100644
--- a/lib/elixir/lib/calendar/date.ex
+++ b/lib/elixir/lib/calendar/date.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Date do
@moduledoc """
A Date struct and functions.
diff --git a/lib/elixir/lib/calendar/date_range.ex b/lib/elixir/lib/calendar/date_range.ex
index d7e509248ff..986070f8ed6 100644
--- a/lib/elixir/lib/calendar/date_range.ex
+++ b/lib/elixir/lib/calendar/date_range.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Date.Range do
@moduledoc """
Returns an inclusive range between dates.
diff --git a/lib/elixir/lib/calendar/datetime.ex b/lib/elixir/lib/calendar/datetime.ex
index 5c6eca332fd..19776dbff33 100644
--- a/lib/elixir/lib/calendar/datetime.ex
+++ b/lib/elixir/lib/calendar/datetime.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule DateTime do
@moduledoc """
A datetime implementation with a time zone.
diff --git a/lib/elixir/lib/calendar/duration.ex b/lib/elixir/lib/calendar/duration.ex
index b5656ee53d9..1707aa7e421 100644
--- a/lib/elixir/lib/calendar/duration.ex
+++ b/lib/elixir/lib/calendar/duration.ex
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
defmodule Duration do
@moduledoc """
Struct and functions for handling durations.
diff --git a/lib/elixir/lib/calendar/iso.ex b/lib/elixir/lib/calendar/iso.ex
index 5740cc31272..3cd9095b618 100644
--- a/lib/elixir/lib/calendar/iso.ex
+++ b/lib/elixir/lib/calendar/iso.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Calendar.ISO do
@moduledoc """
The default calendar implementation, a Gregorian calendar following ISO 8601.
diff --git a/lib/elixir/lib/calendar/naive_datetime.ex b/lib/elixir/lib/calendar/naive_datetime.ex
index c5963e040ae..76e1337b97b 100644
--- a/lib/elixir/lib/calendar/naive_datetime.ex
+++ b/lib/elixir/lib/calendar/naive_datetime.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule NaiveDateTime do
@moduledoc """
A NaiveDateTime struct (without a time zone) and functions.
diff --git a/lib/elixir/lib/calendar/time.ex b/lib/elixir/lib/calendar/time.ex
index 8f302b7f329..322b655236e 100644
--- a/lib/elixir/lib/calendar/time.ex
+++ b/lib/elixir/lib/calendar/time.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Time do
@moduledoc """
A Time struct and functions.
diff --git a/lib/elixir/lib/calendar/time_zone_database.ex b/lib/elixir/lib/calendar/time_zone_database.ex
index 7dce5971df0..dcfac50f8da 100644
--- a/lib/elixir/lib/calendar/time_zone_database.ex
+++ b/lib/elixir/lib/calendar/time_zone_database.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Calendar.TimeZoneDatabase do
@moduledoc """
This module defines a behaviour for providing time zone data.
diff --git a/lib/elixir/lib/code.ex b/lib/elixir/lib/code.ex
index 265570dfaaf..12f2497ccf1 100644
--- a/lib/elixir/lib/code.ex
+++ b/lib/elixir/lib/code.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Code do
@moduledoc ~S"""
Utilities for managing code compilation, code evaluation, and code loading.
diff --git a/lib/elixir/lib/code/formatter.ex b/lib/elixir/lib/code/formatter.ex
index d12d5418a10..e5218092ee6 100644
--- a/lib/elixir/lib/code/formatter.ex
+++ b/lib/elixir/lib/code/formatter.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Code.Formatter do
@moduledoc false
import Inspect.Algebra, except: [format: 2, surround: 3, surround: 4]
diff --git a/lib/elixir/lib/code/fragment.ex b/lib/elixir/lib/code/fragment.ex
index 567f31348cc..5e36dda0c59 100644
--- a/lib/elixir/lib/code/fragment.ex
+++ b/lib/elixir/lib/code/fragment.ex
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
defmodule Code.Fragment do
@moduledoc """
This module provides conveniences for analyzing fragments of
diff --git a/lib/elixir/lib/code/identifier.ex b/lib/elixir/lib/code/identifier.ex
index a01f56d247a..b3adeb5692f 100644
--- a/lib/elixir/lib/code/identifier.ex
+++ b/lib/elixir/lib/code/identifier.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Code.Identifier do
@moduledoc false
diff --git a/lib/elixir/lib/code/normalizer.ex b/lib/elixir/lib/code/normalizer.ex
index b77e056de6b..c3dd67a3af9 100644
--- a/lib/elixir/lib/code/normalizer.ex
+++ b/lib/elixir/lib/code/normalizer.ex
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
defmodule Code.Normalizer do
@moduledoc false
diff --git a/lib/elixir/lib/code/typespec.ex b/lib/elixir/lib/code/typespec.ex
index 3efa7be86e0..f04cac439f7 100644
--- a/lib/elixir/lib/code/typespec.ex
+++ b/lib/elixir/lib/code/typespec.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Code.Typespec do
@moduledoc false
diff --git a/lib/elixir/lib/collectable.ex b/lib/elixir/lib/collectable.ex
index 9803ac727e7..3433fb3f204 100644
--- a/lib/elixir/lib/collectable.ex
+++ b/lib/elixir/lib/collectable.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defprotocol Collectable do
@moduledoc """
A protocol to traverse data structures.
diff --git a/lib/elixir/lib/config.ex b/lib/elixir/lib/config.ex
index 960cfc344e6..dc9bdea2bbd 100644
--- a/lib/elixir/lib/config.ex
+++ b/lib/elixir/lib/config.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Config do
@moduledoc ~S"""
A simple keyword-based configuration API.
diff --git a/lib/elixir/lib/config/provider.ex b/lib/elixir/lib/config/provider.ex
index b8ead820566..756d583e074 100644
--- a/lib/elixir/lib/config/provider.ex
+++ b/lib/elixir/lib/config/provider.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Config.Provider do
@moduledoc """
Specifies a provider API that loads configuration during boot.
diff --git a/lib/elixir/lib/config/reader.ex b/lib/elixir/lib/config/reader.ex
index a9df052d0e7..1997bb1cb0e 100644
--- a/lib/elixir/lib/config/reader.ex
+++ b/lib/elixir/lib/config/reader.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Config.Reader do
@moduledoc """
API for reading config files defined with `Config`.
diff --git a/lib/elixir/lib/dict.ex b/lib/elixir/lib/dict.ex
index d0d554e43bb..7a0cd02d2e4 100644
--- a/lib/elixir/lib/dict.ex
+++ b/lib/elixir/lib/dict.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Dict do
@moduledoc ~S"""
Generic API for dictionaries.
diff --git a/lib/elixir/lib/dynamic_supervisor.ex b/lib/elixir/lib/dynamic_supervisor.ex
index 38ecd6c6a62..72f51678988 100644
--- a/lib/elixir/lib/dynamic_supervisor.ex
+++ b/lib/elixir/lib/dynamic_supervisor.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule DynamicSupervisor do
@moduledoc ~S"""
A supervisor optimized to only start children dynamically.
diff --git a/lib/elixir/lib/enum.ex b/lib/elixir/lib/enum.ex
index 6fe25c27501..6ea286a7524 100644
--- a/lib/elixir/lib/enum.ex
+++ b/lib/elixir/lib/enum.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defprotocol Enumerable do
@moduledoc """
Enumerable protocol used by `Enum` and `Stream` modules.
diff --git a/lib/elixir/lib/exception.ex b/lib/elixir/lib/exception.ex
index ed504f0e5e3..47f9497023c 100644
--- a/lib/elixir/lib/exception.ex
+++ b/lib/elixir/lib/exception.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Exception do
@moduledoc """
Functions for dealing with throw/catch/exit and exceptions.
diff --git a/lib/elixir/lib/file.ex b/lib/elixir/lib/file.ex
index a85d105c832..5268745948c 100644
--- a/lib/elixir/lib/file.ex
+++ b/lib/elixir/lib/file.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule File do
@moduledoc ~S"""
This module contains functions to manipulate files.
diff --git a/lib/elixir/lib/file/stat.ex b/lib/elixir/lib/file/stat.ex
index ba5c0c7ec5c..ec85fc980ec 100644
--- a/lib/elixir/lib/file/stat.ex
+++ b/lib/elixir/lib/file/stat.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
require Record
defmodule File.Stat do
diff --git a/lib/elixir/lib/file/stream.ex b/lib/elixir/lib/file/stream.ex
index 4633ca1f1c2..94b2ad20b5b 100644
--- a/lib/elixir/lib/file/stream.ex
+++ b/lib/elixir/lib/file/stream.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule File.Stream do
@moduledoc """
Defines a `File.Stream` struct returned by `File.stream!/3`.
diff --git a/lib/elixir/lib/float.ex b/lib/elixir/lib/float.ex
index c42907f40db..6466bd0b54d 100644
--- a/lib/elixir/lib/float.ex
+++ b/lib/elixir/lib/float.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
import Kernel, except: [round: 1]
defmodule Float do
diff --git a/lib/elixir/lib/function.ex b/lib/elixir/lib/function.ex
index f4bdaeffb26..654666a1a89 100644
--- a/lib/elixir/lib/function.ex
+++ b/lib/elixir/lib/function.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Function do
@moduledoc """
A set of functions for working with functions.
diff --git a/lib/elixir/lib/gen_event.ex b/lib/elixir/lib/gen_event.ex
index b5dd6ac66db..4763739a8f3 100644
--- a/lib/elixir/lib/gen_event.ex
+++ b/lib/elixir/lib/gen_event.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule GenEvent do
# Functions from this module are deprecated in elixir_dispatch.
diff --git a/lib/elixir/lib/gen_event/stream.ex b/lib/elixir/lib/gen_event/stream.ex
index 0ff94bd5249..a0573e18a73 100644
--- a/lib/elixir/lib/gen_event/stream.ex
+++ b/lib/elixir/lib/gen_event/stream.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule GenEvent.Stream do
@moduledoc false
defstruct manager: nil, timeout: :infinity
diff --git a/lib/elixir/lib/gen_server.ex b/lib/elixir/lib/gen_server.ex
index bc82faf5ee4..29bf11b440c 100644
--- a/lib/elixir/lib/gen_server.ex
+++ b/lib/elixir/lib/gen_server.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule GenServer do
@moduledoc """
A behaviour module for implementing the server of a client-server relation.
diff --git a/lib/elixir/lib/hash_dict.ex b/lib/elixir/lib/hash_dict.ex
index b71848ee608..44e0588cec7 100644
--- a/lib/elixir/lib/hash_dict.ex
+++ b/lib/elixir/lib/hash_dict.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule HashDict do
@moduledoc """
Tuple-based HashDict implementation.
diff --git a/lib/elixir/lib/hash_set.ex b/lib/elixir/lib/hash_set.ex
index 4aa7291ff8a..6c5eb654b18 100644
--- a/lib/elixir/lib/hash_set.ex
+++ b/lib/elixir/lib/hash_set.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule HashSet do
@moduledoc """
Tuple-based HashSet implementation.
diff --git a/lib/elixir/lib/inspect.ex b/lib/elixir/lib/inspect.ex
index b111e1fa0a3..57c42aa225f 100644
--- a/lib/elixir/lib/inspect.ex
+++ b/lib/elixir/lib/inspect.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
import Kernel, except: [inspect: 1]
import Inspect.Algebra
diff --git a/lib/elixir/lib/inspect/algebra.ex b/lib/elixir/lib/inspect/algebra.ex
index 4d661c8eb92..97bedd11828 100644
--- a/lib/elixir/lib/inspect/algebra.ex
+++ b/lib/elixir/lib/inspect/algebra.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Inspect.Opts do
@moduledoc """
Defines the options used by the `Inspect` protocol.
diff --git a/lib/elixir/lib/inspect/error.ex b/lib/elixir/lib/inspect/error.ex
index 64e65c08238..47a00213ad0 100644
--- a/lib/elixir/lib/inspect/error.ex
+++ b/lib/elixir/lib/inspect/error.ex
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
defmodule Inspect.Error do
@moduledoc """
Raised when a struct cannot be inspected.
diff --git a/lib/elixir/lib/integer.ex b/lib/elixir/lib/integer.ex
index b371459aa62..11baf4985ab 100644
--- a/lib/elixir/lib/integer.ex
+++ b/lib/elixir/lib/integer.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Integer do
@moduledoc """
Functions for working with integers.
diff --git a/lib/elixir/lib/io.ex b/lib/elixir/lib/io.ex
index 18aaf6090b3..534f9511a9a 100644
--- a/lib/elixir/lib/io.ex
+++ b/lib/elixir/lib/io.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule IO do
@moduledoc ~S"""
Functions handling input/output (IO).
diff --git a/lib/elixir/lib/io/ansi.ex b/lib/elixir/lib/io/ansi.ex
index 01af9d4bb28..7d54c6a6895 100644
--- a/lib/elixir/lib/io/ansi.ex
+++ b/lib/elixir/lib/io/ansi.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule IO.ANSI.Sequence do
@moduledoc false
diff --git a/lib/elixir/lib/io/ansi/docs.ex b/lib/elixir/lib/io/ansi/docs.ex
index 8f3fc9bca8a..f47d5365415 100644
--- a/lib/elixir/lib/io/ansi/docs.ex
+++ b/lib/elixir/lib/io/ansi/docs.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule IO.ANSI.Docs do
@moduledoc false
diff --git a/lib/elixir/lib/io/stream.ex b/lib/elixir/lib/io/stream.ex
index 8558f160361..4fa8f1c77b3 100644
--- a/lib/elixir/lib/io/stream.ex
+++ b/lib/elixir/lib/io/stream.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule IO.StreamError do
defexception [:reason]
diff --git a/lib/elixir/lib/json.ex b/lib/elixir/lib/json.ex
index 7707393a470..7d755ef8be0 100644
--- a/lib/elixir/lib/json.ex
+++ b/lib/elixir/lib/json.ex
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
defprotocol JSON.Encoder do
@moduledoc """
A protocol for custom JSON encoding of data structures.
diff --git a/lib/elixir/lib/kernel.ex b/lib/elixir/lib/kernel.ex
index 911fc6d336d..d947c6351cf 100644
--- a/lib/elixir/lib/kernel.ex
+++ b/lib/elixir/lib/kernel.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
# Use elixir_bootstrap module to be able to bootstrap Kernel.
# The bootstrap module provides simpler implementations of the
# functions removed, simple enough to bootstrap.
diff --git a/lib/elixir/lib/kernel/cli.ex b/lib/elixir/lib/kernel/cli.ex
index c3abfe1c3cc..67f5c88ea09 100644
--- a/lib/elixir/lib/kernel/cli.ex
+++ b/lib/elixir/lib/kernel/cli.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Kernel.CLI do
@moduledoc false
diff --git a/lib/elixir/lib/kernel/error_handler.ex b/lib/elixir/lib/kernel/error_handler.ex
index 8fe1a2058a9..18126ab2e17 100644
--- a/lib/elixir/lib/kernel/error_handler.ex
+++ b/lib/elixir/lib/kernel/error_handler.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
# Implement error_handler pattern for Erlang
# which is integrated with Kernel.ParallelCompiler
defmodule Kernel.ErrorHandler do
diff --git a/lib/elixir/lib/kernel/lexical_tracker.ex b/lib/elixir/lib/kernel/lexical_tracker.ex
index 10a78117b44..ad73863e6d3 100644
--- a/lib/elixir/lib/kernel/lexical_tracker.ex
+++ b/lib/elixir/lib/kernel/lexical_tracker.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
# This is an Elixir module responsible for tracking references
# to modules, remote dispatches, and the usage of
# aliases/imports/requires in the Elixir scope.
diff --git a/lib/elixir/lib/kernel/parallel_compiler.ex b/lib/elixir/lib/kernel/parallel_compiler.ex
index 30ad72c75df..2f606d24aa7 100644
--- a/lib/elixir/lib/kernel/parallel_compiler.ex
+++ b/lib/elixir/lib/kernel/parallel_compiler.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Kernel.ParallelCompiler do
@moduledoc """
A module responsible for compiling and requiring files in parallel.
diff --git a/lib/elixir/lib/kernel/parallel_require.ex b/lib/elixir/lib/kernel/parallel_require.ex
index 869d18d9b09..d745c6dde6e 100644
--- a/lib/elixir/lib/kernel/parallel_require.ex
+++ b/lib/elixir/lib/kernel/parallel_require.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Kernel.ParallelRequire do
@moduledoc false
diff --git a/lib/elixir/lib/kernel/special_forms.ex b/lib/elixir/lib/kernel/special_forms.ex
index 29e865ae61b..2a8a9c3209e 100644
--- a/lib/elixir/lib/kernel/special_forms.ex
+++ b/lib/elixir/lib/kernel/special_forms.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Kernel.SpecialForms do
@moduledoc """
Special forms are the basic building blocks of Elixir, and therefore
diff --git a/lib/elixir/lib/kernel/typespec.ex b/lib/elixir/lib/kernel/typespec.ex
index 473a5b157d9..485a367b123 100644
--- a/lib/elixir/lib/kernel/typespec.ex
+++ b/lib/elixir/lib/kernel/typespec.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Kernel.Typespec do
@moduledoc false
diff --git a/lib/elixir/lib/kernel/utils.ex b/lib/elixir/lib/kernel/utils.ex
index b2c2ffc6aed..7fc379e66ec 100644
--- a/lib/elixir/lib/kernel/utils.ex
+++ b/lib/elixir/lib/kernel/utils.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
import Kernel, except: [destructure: 2, defdelegate: 2, defstruct: 2]
defmodule Kernel.Utils do
diff --git a/lib/elixir/lib/keyword.ex b/lib/elixir/lib/keyword.ex
index aae02abca98..d4811c1a413 100644
--- a/lib/elixir/lib/keyword.ex
+++ b/lib/elixir/lib/keyword.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Keyword do
@moduledoc """
A keyword list is a list that consists exclusively of two-element tuples.
diff --git a/lib/elixir/lib/list.ex b/lib/elixir/lib/list.ex
index 6f0fad77c10..efad0d2e1bb 100644
--- a/lib/elixir/lib/list.ex
+++ b/lib/elixir/lib/list.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule List do
@moduledoc """
Linked lists hold zero, one, or more elements in the chosen order.
diff --git a/lib/elixir/lib/list/chars.ex b/lib/elixir/lib/list/chars.ex
index 46b294c71ad..5c36179efd4 100644
--- a/lib/elixir/lib/list/chars.ex
+++ b/lib/elixir/lib/list/chars.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defprotocol List.Chars do
@moduledoc ~S"""
The `List.Chars` protocol is responsible for
diff --git a/lib/elixir/lib/macro.ex b/lib/elixir/lib/macro.ex
index 1c86173a41f..7ef6309ad1d 100644
--- a/lib/elixir/lib/macro.ex
+++ b/lib/elixir/lib/macro.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
import Kernel, except: [to_string: 1]
defmodule Macro do
diff --git a/lib/elixir/lib/macro/env.ex b/lib/elixir/lib/macro/env.ex
index b415da4b7f7..f48ca1a31bd 100644
--- a/lib/elixir/lib/macro/env.ex
+++ b/lib/elixir/lib/macro/env.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Macro.Env do
@moduledoc """
A struct that holds compile time environment information.
diff --git a/lib/elixir/lib/map.ex b/lib/elixir/lib/map.ex
index 8c616ab2ce2..06bde2285ac 100644
--- a/lib/elixir/lib/map.ex
+++ b/lib/elixir/lib/map.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Map do
@moduledoc """
Maps are the "go to" key-value data structure in Elixir.
diff --git a/lib/elixir/lib/map_set.ex b/lib/elixir/lib/map_set.ex
index 4f2fe15a684..62577999f01 100644
--- a/lib/elixir/lib/map_set.ex
+++ b/lib/elixir/lib/map_set.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule MapSet do
@moduledoc """
Functions that work on sets.
diff --git a/lib/elixir/lib/module.ex b/lib/elixir/lib/module.ex
index b31eeb3203f..90333419976 100644
--- a/lib/elixir/lib/module.ex
+++ b/lib/elixir/lib/module.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Module do
@moduledoc ~S'''
Provides functions to deal with modules during compilation time.
diff --git a/lib/elixir/lib/module/behaviour.ex b/lib/elixir/lib/module/behaviour.ex
index e431155b0b8..f436596b756 100644
--- a/lib/elixir/lib/module/behaviour.ex
+++ b/lib/elixir/lib/module/behaviour.ex
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
defmodule Module.Behaviour do
# Checking functionality for @behaviours and @impl
@moduledoc false
diff --git a/lib/elixir/lib/module/parallel_checker.ex b/lib/elixir/lib/module/parallel_checker.ex
index 8e8e4d9d04c..33d19a5af93 100644
--- a/lib/elixir/lib/module/parallel_checker.ex
+++ b/lib/elixir/lib/module/parallel_checker.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Module.ParallelChecker do
@moduledoc false
diff --git a/lib/elixir/lib/module/types.ex b/lib/elixir/lib/module/types.ex
index 7ce96ed43dd..3278f5bcb1d 100644
--- a/lib/elixir/lib/module/types.ex
+++ b/lib/elixir/lib/module/types.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Module.Types do
@moduledoc false
alias Module.Types.{Descr, Expr, Pattern, Helpers}
diff --git a/lib/elixir/lib/module/types/apply.ex b/lib/elixir/lib/module/types/apply.ex
index dd20a3e6c2f..3b5525d10c4 100644
--- a/lib/elixir/lib/module/types/apply.ex
+++ b/lib/elixir/lib/module/types/apply.ex
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
defmodule Module.Types.Apply do
# Typing functionality shared between Expr and Pattern.
# Generic AST and Enum helpers go to Module.Types.Helpers.
diff --git a/lib/elixir/lib/module/types/descr.ex b/lib/elixir/lib/module/types/descr.ex
index 97d71480c59..b4bd5dc257f 100644
--- a/lib/elixir/lib/module/types/descr.ex
+++ b/lib/elixir/lib/module/types/descr.ex
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
defmodule Module.Types.Descr do
@moduledoc false
diff --git a/lib/elixir/lib/module/types/expr.ex b/lib/elixir/lib/module/types/expr.ex
index db4d8f461f5..19670e59746 100644
--- a/lib/elixir/lib/module/types/expr.ex
+++ b/lib/elixir/lib/module/types/expr.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Module.Types.Expr do
@moduledoc false
diff --git a/lib/elixir/lib/module/types/helpers.ex b/lib/elixir/lib/module/types/helpers.ex
index 3b8a25580ab..5ad2a9715dd 100644
--- a/lib/elixir/lib/module/types/helpers.ex
+++ b/lib/elixir/lib/module/types/helpers.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Module.Types.Helpers do
# AST and enumeration helpers.
@moduledoc false
diff --git a/lib/elixir/lib/module/types/of.ex b/lib/elixir/lib/module/types/of.ex
index dd32dcf7fc8..c6cc41ab513 100644
--- a/lib/elixir/lib/module/types/of.ex
+++ b/lib/elixir/lib/module/types/of.ex
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
defmodule Module.Types.Of do
# Typing functionality shared between Expr and Pattern.
# Generic AST and Enum helpers go to Module.Types.Helpers.
diff --git a/lib/elixir/lib/module/types/pattern.ex b/lib/elixir/lib/module/types/pattern.ex
index 1074175fb44..892f33e5484 100644
--- a/lib/elixir/lib/module/types/pattern.ex
+++ b/lib/elixir/lib/module/types/pattern.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Module.Types.Pattern do
@moduledoc false
diff --git a/lib/elixir/lib/node.ex b/lib/elixir/lib/node.ex
index 1e84a16f076..c81c745c03b 100644
--- a/lib/elixir/lib/node.ex
+++ b/lib/elixir/lib/node.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Node do
@moduledoc """
Functions related to VM nodes.
diff --git a/lib/elixir/lib/option_parser.ex b/lib/elixir/lib/option_parser.ex
index de355ea4bd3..c68619f6736 100644
--- a/lib/elixir/lib/option_parser.ex
+++ b/lib/elixir/lib/option_parser.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule OptionParser do
@moduledoc """
Functions for parsing command line arguments.
diff --git a/lib/elixir/lib/partition_supervisor.ex b/lib/elixir/lib/partition_supervisor.ex
index 62973bfa65e..b05316a3667 100644
--- a/lib/elixir/lib/partition_supervisor.ex
+++ b/lib/elixir/lib/partition_supervisor.ex
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
defmodule PartitionSupervisor do
@moduledoc """
A supervisor that starts multiple partitions of the same child.
diff --git a/lib/elixir/lib/path.ex b/lib/elixir/lib/path.ex
index 535cac5ea6c..cf7b3ae75ab 100644
--- a/lib/elixir/lib/path.ex
+++ b/lib/elixir/lib/path.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Path do
@moduledoc """
This module provides conveniences for manipulating or
diff --git a/lib/elixir/lib/port.ex b/lib/elixir/lib/port.ex
index b1cc43466bf..4a84615b1c1 100644
--- a/lib/elixir/lib/port.ex
+++ b/lib/elixir/lib/port.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Port do
@moduledoc ~S"""
Functions for interacting with the external world through ports.
diff --git a/lib/elixir/lib/process.ex b/lib/elixir/lib/process.ex
index 2e7bf7a9844..107d1d527ad 100644
--- a/lib/elixir/lib/process.ex
+++ b/lib/elixir/lib/process.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Process do
@moduledoc """
Conveniences for working with processes and the process dictionary.
diff --git a/lib/elixir/lib/protocol.ex b/lib/elixir/lib/protocol.ex
index a5d90994430..1ce76f152c7 100644
--- a/lib/elixir/lib/protocol.ex
+++ b/lib/elixir/lib/protocol.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Protocol do
@moduledoc ~S"""
Reference and functions for working with protocols.
diff --git a/lib/elixir/lib/range.ex b/lib/elixir/lib/range.ex
index 9fa0939a443..9e207def402 100644
--- a/lib/elixir/lib/range.ex
+++ b/lib/elixir/lib/range.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Range do
@moduledoc """
Ranges represent a sequence of zero, one or many, ascending
diff --git a/lib/elixir/lib/record.ex b/lib/elixir/lib/record.ex
index 4a5dd294c08..2b1ce2f3559 100644
--- a/lib/elixir/lib/record.ex
+++ b/lib/elixir/lib/record.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Record do
@moduledoc """
Module to work with, define, and import records.
diff --git a/lib/elixir/lib/record/extractor.ex b/lib/elixir/lib/record/extractor.ex
index 380cc95339e..05559927d0b 100644
--- a/lib/elixir/lib/record/extractor.ex
+++ b/lib/elixir/lib/record/extractor.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Record.Extractor do
@moduledoc false
diff --git a/lib/elixir/lib/regex.ex b/lib/elixir/lib/regex.ex
index b6cfbc0e23c..e88de50df8d 100644
--- a/lib/elixir/lib/regex.ex
+++ b/lib/elixir/lib/regex.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Regex do
@moduledoc ~S"""
Provides regular expressions for Elixir.
diff --git a/lib/elixir/lib/registry.ex b/lib/elixir/lib/registry.ex
index d0ced53e105..17370964701 100644
--- a/lib/elixir/lib/registry.ex
+++ b/lib/elixir/lib/registry.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Registry do
@moduledoc ~S"""
A local, decentralized and scalable key-value process storage.
diff --git a/lib/elixir/lib/set.ex b/lib/elixir/lib/set.ex
index 74a05ff5bed..4bd37464303 100644
--- a/lib/elixir/lib/set.ex
+++ b/lib/elixir/lib/set.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Set do
@moduledoc ~S"""
Generic API for sets.
diff --git a/lib/elixir/lib/stream.ex b/lib/elixir/lib/stream.ex
index 495edcf12bd..a0972e2f5c0 100644
--- a/lib/elixir/lib/stream.ex
+++ b/lib/elixir/lib/stream.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Stream do
@moduledoc """
Functions for creating and composing streams.
diff --git a/lib/elixir/lib/stream/reducers.ex b/lib/elixir/lib/stream/reducers.ex
index 757429e4d23..28ae03a17f0 100644
--- a/lib/elixir/lib/stream/reducers.ex
+++ b/lib/elixir/lib/stream/reducers.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Stream.Reducers do
# Collection of reducers and utilities shared by Enum and Stream.
@moduledoc false
diff --git a/lib/elixir/lib/string.ex b/lib/elixir/lib/string.ex
index 1a9a8bd04a4..f71dede3fee 100644
--- a/lib/elixir/lib/string.ex
+++ b/lib/elixir/lib/string.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
import Kernel, except: [length: 1]
defmodule String do
diff --git a/lib/elixir/lib/string/chars.ex b/lib/elixir/lib/string/chars.ex
index a64ce5e06e6..9679dded594 100644
--- a/lib/elixir/lib/string/chars.ex
+++ b/lib/elixir/lib/string/chars.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
import Kernel, except: [to_string: 1]
defprotocol String.Chars do
diff --git a/lib/elixir/lib/string_io.ex b/lib/elixir/lib/string_io.ex
index 597c6d65c40..550633a7af8 100644
--- a/lib/elixir/lib/string_io.ex
+++ b/lib/elixir/lib/string_io.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule StringIO do
@moduledoc """
Controls an IO device process that wraps a string.
diff --git a/lib/elixir/lib/supervisor.ex b/lib/elixir/lib/supervisor.ex
index ee73698a298..76e8b83f069 100644
--- a/lib/elixir/lib/supervisor.ex
+++ b/lib/elixir/lib/supervisor.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Supervisor do
@moduledoc ~S"""
A behaviour module for implementing supervisors.
diff --git a/lib/elixir/lib/supervisor/default.ex b/lib/elixir/lib/supervisor/default.ex
index fc3a1011809..10bac507a7a 100644
--- a/lib/elixir/lib/supervisor/default.ex
+++ b/lib/elixir/lib/supervisor/default.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Supervisor.Default do
@moduledoc false
diff --git a/lib/elixir/lib/supervisor/spec.ex b/lib/elixir/lib/supervisor/spec.ex
index 7d408be8781..454d01877ab 100644
--- a/lib/elixir/lib/supervisor/spec.ex
+++ b/lib/elixir/lib/supervisor/spec.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Supervisor.Spec do
@moduledoc """
Outdated functions for building child specifications.
diff --git a/lib/elixir/lib/system.ex b/lib/elixir/lib/system.ex
index 63fa8d8571e..b5cd2c7af89 100644
--- a/lib/elixir/lib/system.ex
+++ b/lib/elixir/lib/system.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule System do
@moduledoc """
The `System` module provides functions that interact directly
diff --git a/lib/elixir/lib/task.ex b/lib/elixir/lib/task.ex
index f9bc9702d07..ef7af6ebd7a 100644
--- a/lib/elixir/lib/task.ex
+++ b/lib/elixir/lib/task.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Task do
@moduledoc """
Conveniences for spawning and awaiting tasks.
diff --git a/lib/elixir/lib/task/supervised.ex b/lib/elixir/lib/task/supervised.ex
index 906231bbbff..3fc183279d8 100644
--- a/lib/elixir/lib/task/supervised.ex
+++ b/lib/elixir/lib/task/supervised.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Task.Supervised do
@moduledoc false
@ref_timeout 5000
diff --git a/lib/elixir/lib/task/supervisor.ex b/lib/elixir/lib/task/supervisor.ex
index 8561629d355..d8b3f5ac80a 100644
--- a/lib/elixir/lib/task/supervisor.ex
+++ b/lib/elixir/lib/task/supervisor.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Task.Supervisor do
@moduledoc """
A task supervisor.
diff --git a/lib/elixir/lib/tuple.ex b/lib/elixir/lib/tuple.ex
index bc2ae2e70e3..f2da15d6c40 100644
--- a/lib/elixir/lib/tuple.ex
+++ b/lib/elixir/lib/tuple.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Tuple do
@moduledoc """
Functions for working with tuples.
diff --git a/lib/elixir/lib/uri.ex b/lib/elixir/lib/uri.ex
index 9acb61dda85..fd3754140a0 100644
--- a/lib/elixir/lib/uri.ex
+++ b/lib/elixir/lib/uri.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule URI do
@moduledoc """
Utilities for working with URIs.
diff --git a/lib/elixir/lib/version.ex b/lib/elixir/lib/version.ex
index 833faacb5c4..8d98380cee1 100644
--- a/lib/elixir/lib/version.ex
+++ b/lib/elixir/lib/version.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Version do
@moduledoc ~S"""
Functions for parsing and matching versions against requirements.
diff --git a/lib/elixir/mix.exs b/lib/elixir/mix.exs
index 1d657827e4b..e94a0c0140b 100644
--- a/lib/elixir/mix.exs
+++ b/lib/elixir/mix.exs
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Elixir.MixProject do
use Mix.Project
diff --git a/lib/elixir/pages/anti-patterns/code-anti-patterns.md b/lib/elixir/pages/anti-patterns/code-anti-patterns.md
index 9bd9f3512f6..4c9552a6cd1 100644
--- a/lib/elixir/pages/anti-patterns/code-anti-patterns.md
+++ b/lib/elixir/pages/anti-patterns/code-anti-patterns.md
@@ -1,3 +1,8 @@
+
+
# Code-related anti-patterns
This document outlines potential anti-patterns related to your code and particular Elixir idioms and features.
diff --git a/lib/elixir/pages/anti-patterns/design-anti-patterns.md b/lib/elixir/pages/anti-patterns/design-anti-patterns.md
index 68fb3f45428..6e0d6dfa30e 100644
--- a/lib/elixir/pages/anti-patterns/design-anti-patterns.md
+++ b/lib/elixir/pages/anti-patterns/design-anti-patterns.md
@@ -1,3 +1,8 @@
+
+
# Design-related anti-patterns
This document outlines potential anti-patterns related to your modules, functions, and the role they play within a codebase.
diff --git a/lib/elixir/pages/anti-patterns/macro-anti-patterns.md b/lib/elixir/pages/anti-patterns/macro-anti-patterns.md
index 15706c89be2..9fa82450100 100644
--- a/lib/elixir/pages/anti-patterns/macro-anti-patterns.md
+++ b/lib/elixir/pages/anti-patterns/macro-anti-patterns.md
@@ -1,3 +1,8 @@
+
+
# Meta-programming anti-patterns
This document outlines potential anti-patterns related to meta-programming.
diff --git a/lib/elixir/pages/anti-patterns/process-anti-patterns.md b/lib/elixir/pages/anti-patterns/process-anti-patterns.md
index 7070dd14eda..cf2b6cb3709 100644
--- a/lib/elixir/pages/anti-patterns/process-anti-patterns.md
+++ b/lib/elixir/pages/anti-patterns/process-anti-patterns.md
@@ -1,3 +1,8 @@
+
+
# Process-related anti-patterns
This document outlines potential anti-patterns related to processes and process-based abstractions.
diff --git a/lib/elixir/pages/anti-patterns/what-anti-patterns.md b/lib/elixir/pages/anti-patterns/what-anti-patterns.md
index 5977eb5464e..9b647cc4a16 100644
--- a/lib/elixir/pages/anti-patterns/what-anti-patterns.md
+++ b/lib/elixir/pages/anti-patterns/what-anti-patterns.md
@@ -1,3 +1,8 @@
+
+
# What are anti-patterns?
Anti-patterns describe common mistakes or indicators of problems in code.
diff --git a/lib/elixir/pages/cheatsheets/enum-cheat.cheatmd b/lib/elixir/pages/cheatsheets/enum-cheat.cheatmd
index 500fce204e0..1dfaa6cd8ce 100644
--- a/lib/elixir/pages/cheatsheets/enum-cheat.cheatmd
+++ b/lib/elixir/pages/cheatsheets/enum-cheat.cheatmd
@@ -1,3 +1,8 @@
+
+
# Enum cheatsheet
A quick reference into the `Enum` module, a module for working with collections (known as enumerables). Most of the examples below use the following data structure:
diff --git a/lib/elixir/pages/getting-started/alias-require-and-import.md b/lib/elixir/pages/getting-started/alias-require-and-import.md
index b7c916725ac..f77b78efae7 100644
--- a/lib/elixir/pages/getting-started/alias-require-and-import.md
+++ b/lib/elixir/pages/getting-started/alias-require-and-import.md
@@ -1,3 +1,8 @@
+
+
# alias, require, import, and use
In order to facilitate software reuse, Elixir provides three directives (`alias`, `require`, and `import`) plus a macro called `use` summarized below:
diff --git a/lib/elixir/pages/getting-started/anonymous-functions.md b/lib/elixir/pages/getting-started/anonymous-functions.md
index 6fe51c15d28..55e53157ff3 100644
--- a/lib/elixir/pages/getting-started/anonymous-functions.md
+++ b/lib/elixir/pages/getting-started/anonymous-functions.md
@@ -1,3 +1,8 @@
+
+
# Anonymous functions
Anonymous functions allow us to store and pass executable code around as if it was an integer or a string. Let's learn more.
diff --git a/lib/elixir/pages/getting-started/basic-types.md b/lib/elixir/pages/getting-started/basic-types.md
index 9055cc6b01e..b446b3bd65e 100644
--- a/lib/elixir/pages/getting-started/basic-types.md
+++ b/lib/elixir/pages/getting-started/basic-types.md
@@ -1,3 +1,8 @@
+
+
# Basic types
In this chapter we will learn more about Elixir basic types: integers, floats, booleans, atoms, and strings. Other data types, such as lists and tuples, will be explored in the next chapter.
diff --git a/lib/elixir/pages/getting-started/binaries-strings-and-charlists.md b/lib/elixir/pages/getting-started/binaries-strings-and-charlists.md
index e19fe5fab59..c6ab4919973 100644
--- a/lib/elixir/pages/getting-started/binaries-strings-and-charlists.md
+++ b/lib/elixir/pages/getting-started/binaries-strings-and-charlists.md
@@ -1,3 +1,8 @@
+
+
# Binaries, strings, and charlists
In ["Basic types"](basic-types.md), we learned a bit about strings and we used the `is_binary/1` function for checks:
diff --git a/lib/elixir/pages/getting-started/case-cond-and-if.md b/lib/elixir/pages/getting-started/case-cond-and-if.md
index f1e2f407b6c..90b8f36d74a 100644
--- a/lib/elixir/pages/getting-started/case-cond-and-if.md
+++ b/lib/elixir/pages/getting-started/case-cond-and-if.md
@@ -1,3 +1,8 @@
+
+
# case, cond, and if
In this chapter, we will learn about the [`case`](`case/2`), [`cond`](`cond/1`), and [`if`](`if/2`) control flow structures.
diff --git a/lib/elixir/pages/getting-started/comprehensions.md b/lib/elixir/pages/getting-started/comprehensions.md
index f8e726a6379..ff775ee14f3 100644
--- a/lib/elixir/pages/getting-started/comprehensions.md
+++ b/lib/elixir/pages/getting-started/comprehensions.md
@@ -1,3 +1,8 @@
+
+
# Comprehensions
In Elixir, it is common to loop over an `Enumerable`, often filtering out some results and mapping values into another list. Comprehensions are syntactic sugar for such constructs: they group those common tasks into the `for` special form.
diff --git a/lib/elixir/pages/getting-started/debugging.md b/lib/elixir/pages/getting-started/debugging.md
index 310a99bfb4b..e80b3febf6e 100644
--- a/lib/elixir/pages/getting-started/debugging.md
+++ b/lib/elixir/pages/getting-started/debugging.md
@@ -1,3 +1,8 @@
+
+
# Debugging
There are a number of ways to debug code in Elixir. In this chapter we will cover some of the more common ways of doing so.
diff --git a/lib/elixir/pages/getting-started/enumerable-and-streams.md b/lib/elixir/pages/getting-started/enumerable-and-streams.md
index dacab3ce5ec..b544b973ddb 100644
--- a/lib/elixir/pages/getting-started/enumerable-and-streams.md
+++ b/lib/elixir/pages/getting-started/enumerable-and-streams.md
@@ -1,3 +1,8 @@
+
+
# Enumerables and Streams
While Elixir allows us to write recursive code, most operations we perform on collections is done with the help of the `Enum` and `Stream` modules. Let's learn how.
diff --git a/lib/elixir/pages/getting-started/erlang-libraries.md b/lib/elixir/pages/getting-started/erlang-libraries.md
index 153aa59168f..667b390e11f 100644
--- a/lib/elixir/pages/getting-started/erlang-libraries.md
+++ b/lib/elixir/pages/getting-started/erlang-libraries.md
@@ -1,3 +1,8 @@
+
+
# Erlang libraries
Elixir provides excellent interoperability with Erlang libraries. In fact, Elixir discourages simply wrapping Erlang libraries in favor of directly interfacing with Erlang code. In this section, we will present some of the most common and useful Erlang functionality that is not found in Elixir.
diff --git a/lib/elixir/pages/getting-started/introduction.md b/lib/elixir/pages/getting-started/introduction.md
index 206619db1cf..3c31ea7a250 100644
--- a/lib/elixir/pages/getting-started/introduction.md
+++ b/lib/elixir/pages/getting-started/introduction.md
@@ -1,3 +1,8 @@
+
+
# Introduction
Welcome!
diff --git a/lib/elixir/pages/getting-started/io-and-the-file-system.md b/lib/elixir/pages/getting-started/io-and-the-file-system.md
index 2bb8d13ab56..3ffff5d8375 100644
--- a/lib/elixir/pages/getting-started/io-and-the-file-system.md
+++ b/lib/elixir/pages/getting-started/io-and-the-file-system.md
@@ -1,3 +1,8 @@
+
+
# IO and the file system
This chapter introduces the input/output mechanisms, file-system-related tasks, and related modules such as `IO`, `File`, and `Path`. The IO system provides a great opportunity to shed some light on some philosophies and curiosities of Elixir and the Erlang VM.
diff --git a/lib/elixir/pages/getting-started/keywords-and-maps.md b/lib/elixir/pages/getting-started/keywords-and-maps.md
index 51cb2ad7120..040a47bedc8 100644
--- a/lib/elixir/pages/getting-started/keywords-and-maps.md
+++ b/lib/elixir/pages/getting-started/keywords-and-maps.md
@@ -1,3 +1,8 @@
+
+
# Keyword lists and maps
Now let's talk about associative data structures. Associative data structures are able to associate a key to a certain value. Different languages call these different names like dictionaries, hashes, associative arrays, etc.
diff --git a/lib/elixir/pages/getting-started/lists-and-tuples.md b/lib/elixir/pages/getting-started/lists-and-tuples.md
index b71496c362d..9a7e06a124b 100644
--- a/lib/elixir/pages/getting-started/lists-and-tuples.md
+++ b/lib/elixir/pages/getting-started/lists-and-tuples.md
@@ -1,3 +1,8 @@
+
+
# Lists and tuples
In this chapter we will learn two of the most used collection data-types in Elixir: lists and tuples.
diff --git a/lib/elixir/pages/getting-started/module-attributes.md b/lib/elixir/pages/getting-started/module-attributes.md
index c1eba8ee8b9..5c556aced43 100644
--- a/lib/elixir/pages/getting-started/module-attributes.md
+++ b/lib/elixir/pages/getting-started/module-attributes.md
@@ -1,3 +1,8 @@
+
+
# Module attributes
Module attributes in Elixir serve three purposes:
diff --git a/lib/elixir/pages/getting-started/modules-and-functions.md b/lib/elixir/pages/getting-started/modules-and-functions.md
index f826d701ea3..25263746508 100644
--- a/lib/elixir/pages/getting-started/modules-and-functions.md
+++ b/lib/elixir/pages/getting-started/modules-and-functions.md
@@ -1,3 +1,8 @@
+
+
# Modules and functions
In Elixir we group several functions into modules. We've already used many different modules in the previous chapters, such as the `String` module:
diff --git a/lib/elixir/pages/getting-started/optional-syntax.md b/lib/elixir/pages/getting-started/optional-syntax.md
index 0f33948b059..c00d1d7da38 100644
--- a/lib/elixir/pages/getting-started/optional-syntax.md
+++ b/lib/elixir/pages/getting-started/optional-syntax.md
@@ -1,3 +1,8 @@
+
+
# Optional syntax sheet
In the previous chapters, we learned that the Elixir syntax allows developers to omit delimiters in a few occasions to make code more readable. For example, we learned that parentheses are optional:
diff --git a/lib/elixir/pages/getting-started/pattern-matching.md b/lib/elixir/pages/getting-started/pattern-matching.md
index 576d5f910e3..8b114791d53 100644
--- a/lib/elixir/pages/getting-started/pattern-matching.md
+++ b/lib/elixir/pages/getting-started/pattern-matching.md
@@ -1,3 +1,8 @@
+
+
# Pattern matching
In this chapter, we will learn why the [`=`](`=/2`) operator in Elixir is called the match operator and how to use it to pattern match inside data structures. We will learn about the pin operator [`^`](`^/1`) used to access previously bound values.
diff --git a/lib/elixir/pages/getting-started/processes.md b/lib/elixir/pages/getting-started/processes.md
index efb59121c07..e0c7b326515 100644
--- a/lib/elixir/pages/getting-started/processes.md
+++ b/lib/elixir/pages/getting-started/processes.md
@@ -1,3 +1,8 @@
+
+
# Processes
In Elixir, all code runs inside processes. Processes are isolated from each other, run concurrent to one another and communicate via message passing. Processes are not only the basis for concurrency in Elixir, but they also provide the means for building distributed and fault-tolerant programs.
diff --git a/lib/elixir/pages/getting-started/protocols.md b/lib/elixir/pages/getting-started/protocols.md
index 3341114a5e8..b644004d524 100644
--- a/lib/elixir/pages/getting-started/protocols.md
+++ b/lib/elixir/pages/getting-started/protocols.md
@@ -1,3 +1,8 @@
+
+
# Protocols
Protocols are a mechanism to achieve polymorphism in Elixir where you want the behavior to vary depending on the data type. We are already familiar with one way of solving this type of problem: via pattern matching and guard clauses. Consider a simple utility module that would tell us the type of input variable:
diff --git a/lib/elixir/pages/getting-started/recursion.md b/lib/elixir/pages/getting-started/recursion.md
index 5250bcb18c2..d1f0b0f6276 100644
--- a/lib/elixir/pages/getting-started/recursion.md
+++ b/lib/elixir/pages/getting-started/recursion.md
@@ -1,3 +1,8 @@
+
+
# Recursion
Elixir does not provide loop constructs. Instead we leverage recursion and high-level functions for working with collections. This chapter will explore the former.
diff --git a/lib/elixir/pages/getting-started/sigils.md b/lib/elixir/pages/getting-started/sigils.md
index 5afe4e41608..1a955cabfa4 100644
--- a/lib/elixir/pages/getting-started/sigils.md
+++ b/lib/elixir/pages/getting-started/sigils.md
@@ -1,3 +1,8 @@
+
+
# Sigils
Elixir provides double-quoted strings as well as a concept called charlists, which are defined using the `~c"hello world"` sigil syntax. In this chapter, we will learn more about sigils and how to define our own.
diff --git a/lib/elixir/pages/getting-started/structs.md b/lib/elixir/pages/getting-started/structs.md
index 972c44eb8e8..73fb42e9fe1 100644
--- a/lib/elixir/pages/getting-started/structs.md
+++ b/lib/elixir/pages/getting-started/structs.md
@@ -1,3 +1,8 @@
+
+
# Structs
We learned about maps [in earlier chapters](keywords-and-maps.md):
diff --git a/lib/elixir/pages/getting-started/try-catch-and-rescue.md b/lib/elixir/pages/getting-started/try-catch-and-rescue.md
index a2e0c2c5c32..09b3c636aad 100644
--- a/lib/elixir/pages/getting-started/try-catch-and-rescue.md
+++ b/lib/elixir/pages/getting-started/try-catch-and-rescue.md
@@ -1,3 +1,8 @@
+
+
# try, catch, and rescue
Elixir has three error mechanisms: errors, throws, and exits. In this chapter, we will explore each of them and include remarks about when each should be used.
diff --git a/lib/elixir/pages/getting-started/writing-documentation.md b/lib/elixir/pages/getting-started/writing-documentation.md
index 71f5dc2376f..2f47c44dab0 100644
--- a/lib/elixir/pages/getting-started/writing-documentation.md
+++ b/lib/elixir/pages/getting-started/writing-documentation.md
@@ -1,3 +1,9 @@
+
+
# Writing documentation
Elixir treats documentation as a first-class citizen. Documentation must be easy to write and easy to read. In this guide you will learn how to write documentation in Elixir, covering constructs like module attributes, style practices, and doctests.
diff --git a/lib/elixir/pages/meta-programming/domain-specific-languages.md b/lib/elixir/pages/meta-programming/domain-specific-languages.md
index ec157d7355d..6fc91f77809 100644
--- a/lib/elixir/pages/meta-programming/domain-specific-languages.md
+++ b/lib/elixir/pages/meta-programming/domain-specific-languages.md
@@ -1,3 +1,8 @@
+
+
# Domain-Specific Languages (DSLs)
[Domain-specific Languages (DSLs)](https://en.wikipedia.org/wiki/Domain-specific_language) are languages tailored to a specific application domain. You don't need macros in order to have a DSL: every data structure and every function you define in your module is part of your domain-specific language.
diff --git a/lib/elixir/pages/meta-programming/macros.md b/lib/elixir/pages/meta-programming/macros.md
index 58e7eb0e7bd..dadacbb1a8e 100644
--- a/lib/elixir/pages/meta-programming/macros.md
+++ b/lib/elixir/pages/meta-programming/macros.md
@@ -1,3 +1,8 @@
+
+
# Macros
Even though Elixir attempts its best to provide a safe environment for macros, most of the responsibility of writing clean code with macros falls on developers. Macros are harder to write than ordinary Elixir functions, and it's considered to be bad style to use them when they're not necessary. Write macros responsibly.
diff --git a/lib/elixir/pages/meta-programming/quote-and-unquote.md b/lib/elixir/pages/meta-programming/quote-and-unquote.md
index f91dd8dcbbd..127861538c6 100644
--- a/lib/elixir/pages/meta-programming/quote-and-unquote.md
+++ b/lib/elixir/pages/meta-programming/quote-and-unquote.md
@@ -1,3 +1,8 @@
+
+
# Quote and unquote
This guide aims to introduce the meta-programming techniques available in Elixir. The ability to represent an Elixir program by its own data structures is at the heart of meta-programming. This chapter starts by exploring those structures and the associated `quote/2` and `unquote/1` constructs, so we can take a look at macros in the next guide, and finally build our own domain specific language.
diff --git a/lib/elixir/pages/mix-and-otp/agents.md b/lib/elixir/pages/mix-and-otp/agents.md
index d839e1022e6..4df693b71ae 100644
--- a/lib/elixir/pages/mix-and-otp/agents.md
+++ b/lib/elixir/pages/mix-and-otp/agents.md
@@ -1,3 +1,8 @@
+
+
# Simple state management with agents
In this chapter, we will learn how to keep and share state between multiple entities. If you have previous programming experience, you may think of globally shared variables, but the model we will learn here is quite different. The next chapters will generalize the concepts introduced here.
diff --git a/lib/elixir/pages/mix-and-otp/config-and-releases.md b/lib/elixir/pages/mix-and-otp/config-and-releases.md
index 769ff6183cc..42887657e06 100644
--- a/lib/elixir/pages/mix-and-otp/config-and-releases.md
+++ b/lib/elixir/pages/mix-and-otp/config-and-releases.md
@@ -1,3 +1,8 @@
+
+
# Configuration and releases
In this last guide, we will make the routing table for our distributed key-value store configurable, and then finally package the software for production.
diff --git a/lib/elixir/pages/mix-and-otp/dependencies-and-umbrella-projects.md b/lib/elixir/pages/mix-and-otp/dependencies-and-umbrella-projects.md
index cdce793575f..cecc976323f 100644
--- a/lib/elixir/pages/mix-and-otp/dependencies-and-umbrella-projects.md
+++ b/lib/elixir/pages/mix-and-otp/dependencies-and-umbrella-projects.md
@@ -1,3 +1,8 @@
+
+
# Dependencies and umbrella projects
In this chapter, we will discuss how to manage dependencies in Mix.
diff --git a/lib/elixir/pages/mix-and-otp/distributed-tasks.md b/lib/elixir/pages/mix-and-otp/distributed-tasks.md
index 76356f7741f..681bde4b70c 100644
--- a/lib/elixir/pages/mix-and-otp/distributed-tasks.md
+++ b/lib/elixir/pages/mix-and-otp/distributed-tasks.md
@@ -1,3 +1,8 @@
+
+
# Distributed tasks and tags
In this chapter, we will go back to the `:kv` application and add a routing layer that will allow us to distribute requests between nodes based on the bucket name.
diff --git a/lib/elixir/pages/mix-and-otp/docs-tests-and-with.md b/lib/elixir/pages/mix-and-otp/docs-tests-and-with.md
index f9c97c50330..e29949dded9 100644
--- a/lib/elixir/pages/mix-and-otp/docs-tests-and-with.md
+++ b/lib/elixir/pages/mix-and-otp/docs-tests-and-with.md
@@ -1,3 +1,8 @@
+
+
# Doctests, patterns, and with
In this chapter, we will implement the code that parses the commands we described in the first chapter:
diff --git a/lib/elixir/pages/mix-and-otp/dynamic-supervisor.md b/lib/elixir/pages/mix-and-otp/dynamic-supervisor.md
index fc71a9b3413..8c83e4bb783 100644
--- a/lib/elixir/pages/mix-and-otp/dynamic-supervisor.md
+++ b/lib/elixir/pages/mix-and-otp/dynamic-supervisor.md
@@ -1,3 +1,8 @@
+
+
# Supervising dynamic children
We have now successfully defined our supervisor which is automatically started (and stopped) as part of our application life cycle.
diff --git a/lib/elixir/pages/mix-and-otp/erlang-term-storage.md b/lib/elixir/pages/mix-and-otp/erlang-term-storage.md
index b56593b5367..892a9ba2078 100644
--- a/lib/elixir/pages/mix-and-otp/erlang-term-storage.md
+++ b/lib/elixir/pages/mix-and-otp/erlang-term-storage.md
@@ -1,3 +1,8 @@
+
+
# Speeding up with ETS
Every time we need to look up a bucket, we need to send a message to the registry. In case our registry is being accessed concurrently by multiple processes, the registry may become a bottleneck!
diff --git a/lib/elixir/pages/mix-and-otp/genservers.md b/lib/elixir/pages/mix-and-otp/genservers.md
index bda0e6383f8..94e62ab34ab 100644
--- a/lib/elixir/pages/mix-and-otp/genservers.md
+++ b/lib/elixir/pages/mix-and-otp/genservers.md
@@ -1,3 +1,8 @@
+
+
# Client-server communication with GenServer
In the [previous chapter](agents.md), we used agents to represent our buckets. In the [introduction to mix](introduction-to-mix.md), we specified we would like to name each bucket so we can do the following:
diff --git a/lib/elixir/pages/mix-and-otp/introduction-to-mix.md b/lib/elixir/pages/mix-and-otp/introduction-to-mix.md
index c326154e8d2..84888ce85a7 100644
--- a/lib/elixir/pages/mix-and-otp/introduction-to-mix.md
+++ b/lib/elixir/pages/mix-and-otp/introduction-to-mix.md
@@ -1,3 +1,8 @@
+
+
# Introduction to Mix
In this guide, we will build a complete Elixir application, with its own supervision tree, configuration, tests, and more.
diff --git a/lib/elixir/pages/mix-and-otp/supervisor-and-application.md b/lib/elixir/pages/mix-and-otp/supervisor-and-application.md
index 7d71af6862b..8c5839b2022 100644
--- a/lib/elixir/pages/mix-and-otp/supervisor-and-application.md
+++ b/lib/elixir/pages/mix-and-otp/supervisor-and-application.md
@@ -1,3 +1,8 @@
+
+
# Supervision trees and applications
In the previous chapter about `GenServer`, we implemented `KV.Registry` to manage buckets. At some point, we started monitoring buckets so we were able to take action whenever a `KV.Bucket` crashed. Although the change was relatively small, it introduced a question which is frequently asked by Elixir developers: what happens when something fails?
diff --git a/lib/elixir/pages/mix-and-otp/task-and-gen-tcp.md b/lib/elixir/pages/mix-and-otp/task-and-gen-tcp.md
index 51d9db61e44..3a2a7389109 100644
--- a/lib/elixir/pages/mix-and-otp/task-and-gen-tcp.md
+++ b/lib/elixir/pages/mix-and-otp/task-and-gen-tcp.md
@@ -1,3 +1,8 @@
+
+
# Task and gen_tcp
In this chapter, we are going to learn how to use Erlang's [`:gen_tcp` module](`:gen_tcp`) to serve requests. This provides a great opportunity to explore Elixir's `Task` module. In future chapters, we will expand our server so that it can actually serve the commands.
diff --git a/lib/elixir/pages/references/compatibility-and-deprecations.md b/lib/elixir/pages/references/compatibility-and-deprecations.md
index a366ff6a954..84ee8250522 100644
--- a/lib/elixir/pages/references/compatibility-and-deprecations.md
+++ b/lib/elixir/pages/references/compatibility-and-deprecations.md
@@ -1,3 +1,9 @@
+
+
# Compatibility and deprecations
Elixir is versioned according to a vMAJOR.MINOR.PATCH schema.
diff --git a/lib/elixir/pages/references/gradual-set-theoretic-types.md b/lib/elixir/pages/references/gradual-set-theoretic-types.md
index 04a58589cc8..51167f10e72 100644
--- a/lib/elixir/pages/references/gradual-set-theoretic-types.md
+++ b/lib/elixir/pages/references/gradual-set-theoretic-types.md
@@ -1,3 +1,8 @@
+
+
# Gradual set-theoretic types
Elixir is in the process of incorporating set-theoretic types into the compiler. This document outlines the current stage of our implementation for this Elixir version. Elixir's type system is:
diff --git a/lib/elixir/pages/references/library-guidelines.md b/lib/elixir/pages/references/library-guidelines.md
index 59e9108cc4a..8fdc4457f09 100644
--- a/lib/elixir/pages/references/library-guidelines.md
+++ b/lib/elixir/pages/references/library-guidelines.md
@@ -1,3 +1,8 @@
+
+
# Library guidelines
This document outlines general guidelines for those writing and publishing
diff --git a/lib/elixir/pages/references/naming-conventions.md b/lib/elixir/pages/references/naming-conventions.md
index 1b4114aa60e..bda1ae0ff2e 100644
--- a/lib/elixir/pages/references/naming-conventions.md
+++ b/lib/elixir/pages/references/naming-conventions.md
@@ -1,3 +1,9 @@
+
+
# Naming conventions
This document is a reference of the naming conventions in Elixir, from casing to punctuation characters.
diff --git a/lib/elixir/pages/references/operators.md b/lib/elixir/pages/references/operators.md
index d6816213688..de541e31505 100644
--- a/lib/elixir/pages/references/operators.md
+++ b/lib/elixir/pages/references/operators.md
@@ -1,3 +1,9 @@
+
+
# Operators reference
This document is a complete reference of operators in Elixir, how they are parsed, how they can be defined, and how they can be overridden.
diff --git a/lib/elixir/pages/references/patterns-and-guards.md b/lib/elixir/pages/references/patterns-and-guards.md
index 52364f3d947..551fe29b6b1 100644
--- a/lib/elixir/pages/references/patterns-and-guards.md
+++ b/lib/elixir/pages/references/patterns-and-guards.md
@@ -1,3 +1,9 @@
+
+
# Patterns and guards
Elixir provides pattern matching, which allows us to assert on the shape or extract values from data structures. Patterns are often augmented with guards, which give developers the ability to perform more complex checks, albeit limited.
diff --git a/lib/elixir/pages/references/syntax-reference.md b/lib/elixir/pages/references/syntax-reference.md
index 8d93018243f..b7df9481ad1 100644
--- a/lib/elixir/pages/references/syntax-reference.md
+++ b/lib/elixir/pages/references/syntax-reference.md
@@ -1,3 +1,9 @@
+
+
# Syntax reference
Elixir syntax was designed to have a straightforward conversion to an abstract syntax tree (AST). This means the Elixir syntax is mostly uniform with a handful of "syntax sugar" constructs to reduce the noise in common Elixir idioms.
diff --git a/lib/elixir/pages/references/typespecs.md b/lib/elixir/pages/references/typespecs.md
index 49d39f30e24..849d3d68b89 100644
--- a/lib/elixir/pages/references/typespecs.md
+++ b/lib/elixir/pages/references/typespecs.md
@@ -1,3 +1,9 @@
+
+
# Typespecs reference
> #### Typespecs are not set-theoretic types {: .warning}
diff --git a/lib/elixir/pages/references/unicode-syntax.md b/lib/elixir/pages/references/unicode-syntax.md
index 59ea9b735c5..e2de2ad98fc 100644
--- a/lib/elixir/pages/references/unicode-syntax.md
+++ b/lib/elixir/pages/references/unicode-syntax.md
@@ -1,3 +1,9 @@
+
+
# Unicode syntax
Elixir supports Unicode throughout the language. This document is a complete reference of how
diff --git a/lib/elixir/scripts/diff.exs b/lib/elixir/scripts/diff.exs
index f8c8b0f2c55..06a20bef315 100644
--- a/lib/elixir/scripts/diff.exs
+++ b/lib/elixir/scripts/diff.exs
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
defmodule Diff do
@moduledoc """
Utilities for comparing build artifacts.
diff --git a/lib/elixir/scripts/docs_config.exs b/lib/elixir/scripts/docs_config.exs
index 1bc5e014682..f88ef4e0e69 100644
--- a/lib/elixir/scripts/docs_config.exs
+++ b/lib/elixir/scripts/docs_config.exs
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
# Generate docs_config.js for version chooser in ExDoc
[app] = System.argv()
diff --git a/lib/elixir/scripts/elixir_docs.exs b/lib/elixir/scripts/elixir_docs.exs
index 0fe4c3f3f8e..0a1c0a432b7 100644
--- a/lib/elixir/scripts/elixir_docs.exs
+++ b/lib/elixir/scripts/elixir_docs.exs
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
# Returns config for Elixir docs (exclusively)
canonical = System.fetch_env!("CANONICAL")
diff --git a/lib/elixir/scripts/generate_app.escript b/lib/elixir/scripts/generate_app.escript
index 563f05f55c5..8959fff4c25 100755
--- a/lib/elixir/scripts/generate_app.escript
+++ b/lib/elixir/scripts/generate_app.escript
@@ -1,4 +1,9 @@
#!/usr/bin/env escript
+
+%% SPDX-License-Identifier: Apache-2.0
+%% SPDX-FileCopyrightText: 2021 The Elixir Team
+%% SPDX-FileCopyrightText: 2012 Plataformatec
+
%% -*- erlang -*-
main([Version]) ->
diff --git a/lib/elixir/scripts/mix_docs.exs b/lib/elixir/scripts/mix_docs.exs
index 94a323d0881..a20b7af6759 100644
--- a/lib/elixir/scripts/mix_docs.exs
+++ b/lib/elixir/scripts/mix_docs.exs
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
# Returns config for other apps except Elixir
canonical = System.fetch_env!("CANONICAL")
diff --git a/lib/elixir/scripts/windows_installer/.gitignore b/lib/elixir/scripts/windows_installer/.gitignore
index 3fec32c8427..b5914cb62a6 100644
--- a/lib/elixir/scripts/windows_installer/.gitignore
+++ b/lib/elixir/scripts/windows_installer/.gitignore
@@ -1 +1,5 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
tmp/
diff --git a/lib/elixir/scripts/windows_installer/build.sh b/lib/elixir/scripts/windows_installer/build.sh
index 117fc517721..eb31f5916fa 100755
--- a/lib/elixir/scripts/windows_installer/build.sh
+++ b/lib/elixir/scripts/windows_installer/build.sh
@@ -1,4 +1,8 @@
#!/bin/bash
+
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
# Usage:
#
# With Elixir archive:
diff --git a/lib/elixir/scripts/windows_installer/installer.nsi b/lib/elixir/scripts/windows_installer/installer.nsi
index d7d4c9bae94..b6f084c4a35 100644
--- a/lib/elixir/scripts/windows_installer/installer.nsi
+++ b/lib/elixir/scripts/windows_installer/installer.nsi
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
!include "MUI2.nsh"
!include "StrFunc.nsh"
${Using:StrFunc} UnStrStr
diff --git a/lib/elixir/unicode/security.ex b/lib/elixir/unicode/security.ex
index 6d0e8e8129d..f1069768915 100644
--- a/lib/elixir/unicode/security.ex
+++ b/lib/elixir/unicode/security.ex
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
defmodule String.Tokenizer.Security do
@moduledoc false
diff --git a/lib/elixir/unicode/tokenizer.ex b/lib/elixir/unicode/tokenizer.ex
index e5941185939..ba1a37c4690 100644
--- a/lib/elixir/unicode/tokenizer.ex
+++ b/lib/elixir/unicode/tokenizer.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule String.Tokenizer do
@moduledoc false
diff --git a/lib/elixir/unicode/unicode.ex b/lib/elixir/unicode/unicode.ex
index 788fe6bd452..7b7b850de87 100644
--- a/lib/elixir/unicode/unicode.ex
+++ b/lib/elixir/unicode/unicode.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
# How to update the Unicode files
#
# Unicode files can be found in https://www.unicode.org/Public/VERSION_NUMBER/ where
diff --git a/lib/ex_unit/examples/difference.exs b/lib/ex_unit/examples/difference.exs
index 14e0ed0343d..3af3d3104e1 100644
--- a/lib/ex_unit/examples/difference.exs
+++ b/lib/ex_unit/examples/difference.exs
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
# Run it from root as: make compile && bin/elixir lib/ex_unit/examples/difference.exs
ExUnit.start(seed: 0)
diff --git a/lib/ex_unit/examples/one_of_each.exs b/lib/ex_unit/examples/one_of_each.exs
index e8ff932305b..77d8e36334d 100644
--- a/lib/ex_unit/examples/one_of_each.exs
+++ b/lib/ex_unit/examples/one_of_each.exs
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
# Run it from root as: make compile && bin/elixir lib/ex_unit/examples/one_of_each.exs
ExUnit.start(seed: 0)
diff --git a/lib/ex_unit/lib/ex_unit.ex b/lib/ex_unit/lib/ex_unit.ex
index 78b90f51d5b..6d2a4a27350 100644
--- a/lib/ex_unit/lib/ex_unit.ex
+++ b/lib/ex_unit/lib/ex_unit.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule ExUnit do
@moduledoc """
Unit testing framework for Elixir.
diff --git a/lib/ex_unit/lib/ex_unit/assertions.ex b/lib/ex_unit/lib/ex_unit/assertions.ex
index 22b1a790e57..816aafa24f6 100644
--- a/lib/ex_unit/lib/ex_unit/assertions.ex
+++ b/lib/ex_unit/lib/ex_unit/assertions.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule ExUnit.AssertionError do
@moduledoc """
Raised to signal an assertion error.
diff --git a/lib/ex_unit/lib/ex_unit/callbacks.ex b/lib/ex_unit/lib/ex_unit/callbacks.ex
index cfb844de722..b504194d180 100644
--- a/lib/ex_unit/lib/ex_unit/callbacks.ex
+++ b/lib/ex_unit/lib/ex_unit/callbacks.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule ExUnit.Callbacks do
@moduledoc ~S"""
Defines ExUnit callbacks.
diff --git a/lib/ex_unit/lib/ex_unit/capture_io.ex b/lib/ex_unit/lib/ex_unit/capture_io.ex
index 7503e3484ed..30e437a43ff 100644
--- a/lib/ex_unit/lib/ex_unit/capture_io.ex
+++ b/lib/ex_unit/lib/ex_unit/capture_io.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule ExUnit.CaptureIO do
@moduledoc ~S"""
Functionality to capture IO for testing.
diff --git a/lib/ex_unit/lib/ex_unit/capture_log.ex b/lib/ex_unit/lib/ex_unit/capture_log.ex
index 245299baf0d..e885a10df91 100644
--- a/lib/ex_unit/lib/ex_unit/capture_log.ex
+++ b/lib/ex_unit/lib/ex_unit/capture_log.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule ExUnit.CaptureLog do
@moduledoc ~S"""
Functionality to capture logs for testing.
diff --git a/lib/ex_unit/lib/ex_unit/capture_server.ex b/lib/ex_unit/lib/ex_unit/capture_server.ex
index bb481a17192..0099425ec8d 100644
--- a/lib/ex_unit/lib/ex_unit/capture_server.ex
+++ b/lib/ex_unit/lib/ex_unit/capture_server.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule ExUnit.CaptureServer do
@moduledoc false
@compile {:no_warn_undefined, Logger}
diff --git a/lib/ex_unit/lib/ex_unit/case.ex b/lib/ex_unit/lib/ex_unit/case.ex
index 79c2f2bc39f..eea8ccc9e0a 100644
--- a/lib/ex_unit/lib/ex_unit/case.ex
+++ b/lib/ex_unit/lib/ex_unit/case.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule ExUnit.Case do
@moduledoc """
Helpers for defining test cases.
diff --git a/lib/ex_unit/lib/ex_unit/case_template.ex b/lib/ex_unit/lib/ex_unit/case_template.ex
index 2449b7c1998..4a7dfa0f03b 100644
--- a/lib/ex_unit/lib/ex_unit/case_template.ex
+++ b/lib/ex_unit/lib/ex_unit/case_template.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule ExUnit.CaseTemplate do
@moduledoc """
Defines a module template to be used throughout your test suite.
diff --git a/lib/ex_unit/lib/ex_unit/cli_formatter.ex b/lib/ex_unit/lib/ex_unit/cli_formatter.ex
index fda793e7ad5..f4d2982c3d5 100644
--- a/lib/ex_unit/lib/ex_unit/cli_formatter.ex
+++ b/lib/ex_unit/lib/ex_unit/cli_formatter.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule ExUnit.CLIFormatter do
@moduledoc false
use GenServer
diff --git a/lib/ex_unit/lib/ex_unit/diff.ex b/lib/ex_unit/lib/ex_unit/diff.ex
index 4c5d1f47857..be15c7ef703 100644
--- a/lib/ex_unit/lib/ex_unit/diff.ex
+++ b/lib/ex_unit/lib/ex_unit/diff.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule ExUnit.Diff do
@moduledoc false
diff --git a/lib/ex_unit/lib/ex_unit/doc_test.ex b/lib/ex_unit/lib/ex_unit/doc_test.ex
index 9a2b8ee0b7e..d06c6dabf26 100644
--- a/lib/ex_unit/lib/ex_unit/doc_test.ex
+++ b/lib/ex_unit/lib/ex_unit/doc_test.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule ExUnit.DocTest do
@moduledoc ~S"""
Extract test cases from the documentation.
diff --git a/lib/ex_unit/lib/ex_unit/event_manager.ex b/lib/ex_unit/lib/ex_unit/event_manager.ex
index 310de96471c..3ce923fe6e8 100644
--- a/lib/ex_unit/lib/ex_unit/event_manager.ex
+++ b/lib/ex_unit/lib/ex_unit/event_manager.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule ExUnit.EventManager do
@moduledoc false
@timeout :infinity
diff --git a/lib/ex_unit/lib/ex_unit/failures_manifest.ex b/lib/ex_unit/lib/ex_unit/failures_manifest.ex
index 70b74c5ed78..239b63201fd 100644
--- a/lib/ex_unit/lib/ex_unit/failures_manifest.ex
+++ b/lib/ex_unit/lib/ex_unit/failures_manifest.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule ExUnit.FailuresManifest do
@moduledoc false
diff --git a/lib/ex_unit/lib/ex_unit/filters.ex b/lib/ex_unit/lib/ex_unit/filters.ex
index b403676e079..69e0e418730 100644
--- a/lib/ex_unit/lib/ex_unit/filters.ex
+++ b/lib/ex_unit/lib/ex_unit/filters.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule ExUnit.Filters do
@moduledoc """
Conveniences for parsing and evaluating filters.
diff --git a/lib/ex_unit/lib/ex_unit/formatter.ex b/lib/ex_unit/lib/ex_unit/formatter.ex
index e55a132b61f..3a4bca6cb49 100644
--- a/lib/ex_unit/lib/ex_unit/formatter.ex
+++ b/lib/ex_unit/lib/ex_unit/formatter.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule ExUnit.Formatter do
@moduledoc """
Helper functions for formatting and the formatting protocols.
diff --git a/lib/ex_unit/lib/ex_unit/on_exit_handler.ex b/lib/ex_unit/lib/ex_unit/on_exit_handler.ex
index ce1af56b8de..893a29bac85 100644
--- a/lib/ex_unit/lib/ex_unit/on_exit_handler.ex
+++ b/lib/ex_unit/lib/ex_unit/on_exit_handler.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule ExUnit.OnExitHandler do
@moduledoc false
diff --git a/lib/ex_unit/lib/ex_unit/on_exit_handler/supervisor.ex b/lib/ex_unit/lib/ex_unit/on_exit_handler/supervisor.ex
index 06cb90912c4..9ce8cd6a39c 100644
--- a/lib/ex_unit/lib/ex_unit/on_exit_handler/supervisor.ex
+++ b/lib/ex_unit/lib/ex_unit/on_exit_handler/supervisor.ex
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
defmodule ExUnit.OnExitHandler.Supervisor do
@moduledoc false
use Supervisor
diff --git a/lib/ex_unit/lib/ex_unit/runner.ex b/lib/ex_unit/lib/ex_unit/runner.ex
index d94ee86f70e..a664731da03 100644
--- a/lib/ex_unit/lib/ex_unit/runner.ex
+++ b/lib/ex_unit/lib/ex_unit/runner.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule ExUnit.Runner do
@moduledoc false
diff --git a/lib/ex_unit/lib/ex_unit/runner_stats.ex b/lib/ex_unit/lib/ex_unit/runner_stats.ex
index 8d8dda9d8d7..2154aeb2431 100644
--- a/lib/ex_unit/lib/ex_unit/runner_stats.ex
+++ b/lib/ex_unit/lib/ex_unit/runner_stats.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule ExUnit.RunnerStats do
@moduledoc false
diff --git a/lib/ex_unit/lib/ex_unit/server.ex b/lib/ex_unit/lib/ex_unit/server.ex
index b991816c873..62abb3fa580 100644
--- a/lib/ex_unit/lib/ex_unit/server.ex
+++ b/lib/ex_unit/lib/ex_unit/server.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule ExUnit.Server do
@moduledoc false
@name __MODULE__
diff --git a/lib/ex_unit/mix.exs b/lib/ex_unit/mix.exs
index 2440b0c7803..7f5e7fa1234 100644
--- a/lib/ex_unit/mix.exs
+++ b/lib/ex_unit/mix.exs
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule ExUnit.MixProject do
use Mix.Project
diff --git a/lib/iex/lib/iex.ex b/lib/iex/lib/iex.ex
index 222679237b1..3fac67f0000 100644
--- a/lib/iex/lib/iex.ex
+++ b/lib/iex/lib/iex.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule IEx do
@moduledoc ~S"""
Elixir's interactive shell.
diff --git a/lib/iex/lib/iex/app.ex b/lib/iex/lib/iex/app.ex
index 662626e5325..8b25f19daaf 100644
--- a/lib/iex/lib/iex/app.ex
+++ b/lib/iex/lib/iex/app.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule IEx.App do
@moduledoc false
diff --git a/lib/iex/lib/iex/autocomplete.ex b/lib/iex/lib/iex/autocomplete.ex
index 7b2bb798545..97a002e17a4 100644
--- a/lib/iex/lib/iex/autocomplete.ex
+++ b/lib/iex/lib/iex/autocomplete.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule IEx.Autocomplete do
@moduledoc false
diff --git a/lib/iex/lib/iex/broker.ex b/lib/iex/lib/iex/broker.ex
index d4b041e91e3..56eba38da04 100644
--- a/lib/iex/lib/iex/broker.ex
+++ b/lib/iex/lib/iex/broker.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule IEx.Broker do
@moduledoc false
@name __MODULE__
diff --git a/lib/iex/lib/iex/config.ex b/lib/iex/lib/iex/config.ex
index 863b30ecfa5..ddb3fe670d7 100644
--- a/lib/iex/lib/iex/config.ex
+++ b/lib/iex/lib/iex/config.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule IEx.Config do
@moduledoc false
use Agent
diff --git a/lib/iex/lib/iex/evaluator.ex b/lib/iex/lib/iex/evaluator.ex
index 4de5dc74d25..3b86a8a7285 100644
--- a/lib/iex/lib/iex/evaluator.ex
+++ b/lib/iex/lib/iex/evaluator.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule IEx.Evaluator do
@moduledoc false
diff --git a/lib/iex/lib/iex/helpers.ex b/lib/iex/lib/iex/helpers.ex
index 907ab497ac8..d062771ac62 100644
--- a/lib/iex/lib/iex/helpers.ex
+++ b/lib/iex/lib/iex/helpers.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule IEx.Helpers do
@moduledoc """
Welcome to Interactive Elixir. You are currently
diff --git a/lib/iex/lib/iex/history.ex b/lib/iex/lib/iex/history.ex
index e2d5480e9fe..a517cb81f2c 100644
--- a/lib/iex/lib/iex/history.ex
+++ b/lib/iex/lib/iex/history.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule IEx.History do
@moduledoc false
diff --git a/lib/iex/lib/iex/info.ex b/lib/iex/lib/iex/info.ex
index 53f9b8e6ade..e9aefe12f04 100644
--- a/lib/iex/lib/iex/info.ex
+++ b/lib/iex/lib/iex/info.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defprotocol IEx.Info do
@fallback_to_any true
diff --git a/lib/iex/lib/iex/introspection.ex b/lib/iex/lib/iex/introspection.ex
index 48c99a20c9d..8e230984756 100644
--- a/lib/iex/lib/iex/introspection.ex
+++ b/lib/iex/lib/iex/introspection.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
# Convenience helpers for showing docs, specs, types
# and opening modules. Invoked directly from IEx.Helpers.
defmodule IEx.Introspection do
diff --git a/lib/iex/lib/iex/mix_listener.ex b/lib/iex/lib/iex/mix_listener.ex
index 57f2e0f7f17..5718894fccd 100644
--- a/lib/iex/lib/iex/mix_listener.ex
+++ b/lib/iex/lib/iex/mix_listener.ex
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
defmodule IEx.MixListener do
@moduledoc false
diff --git a/lib/iex/lib/iex/pry.ex b/lib/iex/lib/iex/pry.ex
index 3a9da057790..463aa35e9c0 100644
--- a/lib/iex/lib/iex/pry.ex
+++ b/lib/iex/lib/iex/pry.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule IEx.Pry do
@moduledoc """
The low-level API for prying sessions and setting up breakpoints.
diff --git a/lib/iex/lib/iex/server.ex b/lib/iex/lib/iex/server.ex
index 5ae58f2aed5..ef33905d5dc 100644
--- a/lib/iex/lib/iex/server.ex
+++ b/lib/iex/lib/iex/server.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule IEx.Server do
@moduledoc """
The IEx.Server.
diff --git a/lib/iex/mix.exs b/lib/iex/mix.exs
index 0493b7f1644..4867ba3ddf3 100644
--- a/lib/iex/mix.exs
+++ b/lib/iex/mix.exs
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule IEx.MixProject do
use Mix.Project
diff --git a/lib/iex/test/iex/helpers_test.exs b/lib/iex/test/iex/helpers_test.exs
index edd44435d26..6740a7d2185 100644
--- a/lib/iex/test/iex/helpers_test.exs
+++ b/lib/iex/test/iex/helpers_test.exs
@@ -163,7 +163,7 @@ defmodule IEx.HelpersTest do
end
test "opens Elixir module" do
- assert capture_iex("open(IEx.Helpers)") |> maybe_trim_quotes() =~ ~r/#{@iex_helpers}:1$/
+ assert capture_iex("open(IEx.Helpers)") |> maybe_trim_quotes() =~ ~r/#{@iex_helpers}:5$/
end
test "opens function" do
diff --git a/lib/logger/lib/logger.ex b/lib/logger/lib/logger.ex
index 8e711118a70..b0ac6c32a75 100644
--- a/lib/logger/lib/logger.ex
+++ b/lib/logger/lib/logger.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Logger do
@moduledoc ~S"""
A logger for Elixir applications.
diff --git a/lib/logger/lib/logger/app.ex b/lib/logger/lib/logger/app.ex
index 375306d44fc..d7b7e8e1d98 100644
--- a/lib/logger/lib/logger/app.ex
+++ b/lib/logger/lib/logger/app.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Logger.App do
@moduledoc false
diff --git a/lib/logger/lib/logger/backends/config.ex b/lib/logger/lib/logger/backends/config.ex
index 43ac162e257..90907a2bf53 100644
--- a/lib/logger/lib/logger/backends/config.ex
+++ b/lib/logger/lib/logger/backends/config.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Logger.Backends.Config do
@moduledoc false
diff --git a/lib/logger/lib/logger/backends/console.ex b/lib/logger/lib/logger/backends/console.ex
index 0c58448a390..2398740ead1 100644
--- a/lib/logger/lib/logger/backends/console.ex
+++ b/lib/logger/lib/logger/backends/console.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Logger.Backends.Console do
@moduledoc ~S"""
A logger backend that logs messages by printing them to the console.
diff --git a/lib/logger/lib/logger/backends/handler.ex b/lib/logger/lib/logger/backends/handler.ex
index 98de676a2a3..479c4b69da9 100644
--- a/lib/logger/lib/logger/backends/handler.ex
+++ b/lib/logger/lib/logger/backends/handler.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Logger.Backends.Handler do
@moduledoc false
@internal_keys [:counter]
diff --git a/lib/logger/lib/logger/backends/internal.ex b/lib/logger/lib/logger/backends/internal.ex
index e8ba149c05c..afef580a6e5 100644
--- a/lib/logger/lib/logger/backends/internal.ex
+++ b/lib/logger/lib/logger/backends/internal.ex
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
defmodule Logger.Backends.Internal do
@moduledoc false
diff --git a/lib/logger/lib/logger/backends/supervisor.ex b/lib/logger/lib/logger/backends/supervisor.ex
index 9512d750890..859502075b6 100644
--- a/lib/logger/lib/logger/backends/supervisor.ex
+++ b/lib/logger/lib/logger/backends/supervisor.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Logger.Backends.Supervisor do
@moduledoc false
use Supervisor
diff --git a/lib/logger/lib/logger/backends/watcher.ex b/lib/logger/lib/logger/backends/watcher.ex
index 6632456dc15..1d348c1a8eb 100644
--- a/lib/logger/lib/logger/backends/watcher.ex
+++ b/lib/logger/lib/logger/backends/watcher.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Logger.Backends.Watcher do
@moduledoc false
require Logger
diff --git a/lib/logger/lib/logger/formatter.ex b/lib/logger/lib/logger/formatter.ex
index 4e5db2dcfdb..858449bc27c 100644
--- a/lib/logger/lib/logger/formatter.ex
+++ b/lib/logger/lib/logger/formatter.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
import Kernel, except: [inspect: 2]
defmodule Logger.Formatter do
diff --git a/lib/logger/lib/logger/translator.ex b/lib/logger/lib/logger/translator.ex
index a2850047741..00191c90dad 100644
--- a/lib/logger/lib/logger/translator.ex
+++ b/lib/logger/lib/logger/translator.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Logger.Translator do
@moduledoc """
Default translation for Erlang log messages.
diff --git a/lib/logger/lib/logger/utils.ex b/lib/logger/lib/logger/utils.ex
index d96698c1acc..128ab0c3bf6 100644
--- a/lib/logger/lib/logger/utils.ex
+++ b/lib/logger/lib/logger/utils.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Logger.Utils do
@moduledoc false
diff --git a/lib/logger/mix.exs b/lib/logger/mix.exs
index 4a272aae57c..67fc089bb3d 100644
--- a/lib/logger/mix.exs
+++ b/lib/logger/mix.exs
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Logger.MixProject do
use Mix.Project
diff --git a/lib/mix/lib/mix.ex b/lib/mix/lib/mix.ex
index 1f30c5978f8..55efee375a9 100644
--- a/lib/mix/lib/mix.ex
+++ b/lib/mix/lib/mix.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix do
@moduledoc ~S"""
Mix is a build tool that provides tasks for creating, compiling,
diff --git a/lib/mix/lib/mix/app_loader.ex b/lib/mix/lib/mix/app_loader.ex
index a7f9bd5be6b..c3543059452 100644
--- a/lib/mix/lib/mix/app_loader.ex
+++ b/lib/mix/lib/mix/app_loader.ex
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
defmodule Mix.AppLoader do
@moduledoc false
diff --git a/lib/mix/lib/mix/cli.ex b/lib/mix/lib/mix/cli.ex
index f4c3fafe7bf..98fdc1f9d1e 100644
--- a/lib/mix/lib/mix/cli.ex
+++ b/lib/mix/lib/mix/cli.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.CLI do
@moduledoc false
diff --git a/lib/mix/lib/mix/compilers/elixir.ex b/lib/mix/lib/mix/compilers/elixir.ex
index 362c50833b7..fcc18628c85 100644
--- a/lib/mix/lib/mix/compilers/elixir.ex
+++ b/lib/mix/lib/mix/compilers/elixir.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Compilers.Elixir do
@moduledoc false
diff --git a/lib/mix/lib/mix/compilers/erlang.ex b/lib/mix/lib/mix/compilers/erlang.ex
index 375ca0ffe2c..077ca375cf3 100644
--- a/lib/mix/lib/mix/compilers/erlang.ex
+++ b/lib/mix/lib/mix/compilers/erlang.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Compilers.Erlang do
@moduledoc false
diff --git a/lib/mix/lib/mix/compilers/protocol.ex b/lib/mix/lib/mix/compilers/protocol.ex
index 69c5bd748bf..10154796009 100644
--- a/lib/mix/lib/mix/compilers/protocol.ex
+++ b/lib/mix/lib/mix/compilers/protocol.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Compilers.Protocol do
@moduledoc false
@manifest "compile.protocols"
diff --git a/lib/mix/lib/mix/compilers/test.ex b/lib/mix/lib/mix/compilers/test.ex
index e15ffc8586e..a65f01da2b3 100644
--- a/lib/mix/lib/mix/compilers/test.ex
+++ b/lib/mix/lib/mix/compilers/test.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Compilers.Test do
@moduledoc false
diff --git a/lib/mix/lib/mix/config.ex b/lib/mix/lib/mix/config.ex
index d0a7a8690ac..20eb26a3e3e 100644
--- a/lib/mix/lib/mix/config.ex
+++ b/lib/mix/lib/mix/config.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Config do
@moduledoc false
diff --git a/lib/mix/lib/mix/dep.ex b/lib/mix/lib/mix/dep.ex
index a19871aeaea..3f981351489 100644
--- a/lib/mix/lib/mix/dep.ex
+++ b/lib/mix/lib/mix/dep.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Dep do
@moduledoc false
diff --git a/lib/mix/lib/mix/dep/converger.ex b/lib/mix/lib/mix/dep/converger.ex
index 6a29828966b..1d036c49822 100644
--- a/lib/mix/lib/mix/dep/converger.ex
+++ b/lib/mix/lib/mix/dep/converger.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
# This module is the one responsible for converging
# dependencies in a recursive fashion. This
# module and its functions are private to Mix.
diff --git a/lib/mix/lib/mix/dep/elixir_scm.ex b/lib/mix/lib/mix/dep/elixir_scm.ex
index 8dea5ea1b1c..ef77701fa5d 100644
--- a/lib/mix/lib/mix/dep/elixir_scm.ex
+++ b/lib/mix/lib/mix/dep/elixir_scm.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
# Manifest file where we treat Elixir and SCMs as a dependency.
defmodule Mix.Dep.ElixirSCM do
@moduledoc false
diff --git a/lib/mix/lib/mix/dep/fetcher.ex b/lib/mix/lib/mix/dep/fetcher.ex
index b884cecea85..765d760d809 100644
--- a/lib/mix/lib/mix/dep/fetcher.ex
+++ b/lib/mix/lib/mix/dep/fetcher.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
# Module responsible for fetching (getting/updating)
# dependencies from their sources.
#
diff --git a/lib/mix/lib/mix/dep/loader.ex b/lib/mix/lib/mix/dep/loader.ex
index e47bfc5568d..984fa32e478 100644
--- a/lib/mix/lib/mix/dep/loader.ex
+++ b/lib/mix/lib/mix/dep/loader.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
# This module is responsible for loading dependencies
# of the current project. This module and its functions
# are private to Mix.
diff --git a/lib/mix/lib/mix/dep/lock.ex b/lib/mix/lib/mix/dep/lock.ex
index 055be84925a..9f031024782 100644
--- a/lib/mix/lib/mix/dep/lock.ex
+++ b/lib/mix/lib/mix/dep/lock.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
# This module keeps a lock file and the manifest for the lock file.
# The lockfile keeps the latest dependency information while the
# manifest is used whenever a dependency is affected via any of the
diff --git a/lib/mix/lib/mix/dep/umbrella.ex b/lib/mix/lib/mix/dep/umbrella.ex
index 023f627383f..820623ded73 100644
--- a/lib/mix/lib/mix/dep/umbrella.ex
+++ b/lib/mix/lib/mix/dep/umbrella.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Dep.Umbrella do
@moduledoc false
diff --git a/lib/mix/lib/mix/exceptions.ex b/lib/mix/lib/mix/exceptions.ex
index bc012cde5da..5579fac9ed2 100644
--- a/lib/mix/lib/mix/exceptions.ex
+++ b/lib/mix/lib/mix/exceptions.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.NoTaskError do
defexception [:task, :message, mix: true]
diff --git a/lib/mix/lib/mix/generator.ex b/lib/mix/lib/mix/generator.ex
index 2eeba1c7453..1e8af77ef60 100644
--- a/lib/mix/lib/mix/generator.ex
+++ b/lib/mix/lib/mix/generator.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Generator do
@moduledoc """
Conveniences for working with paths and generating content.
diff --git a/lib/mix/lib/mix/hex.ex b/lib/mix/lib/mix/hex.ex
index 20b630e58e9..21cef2607f2 100644
--- a/lib/mix/lib/mix/hex.ex
+++ b/lib/mix/lib/mix/hex.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Hex do
@moduledoc false
@compile {:no_warn_undefined, Hex}
diff --git a/lib/mix/lib/mix/local.ex b/lib/mix/lib/mix/local.ex
index 2192e689f06..7fc2027aaf4 100644
--- a/lib/mix/lib/mix/local.ex
+++ b/lib/mix/lib/mix/local.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Local do
@moduledoc false
diff --git a/lib/mix/lib/mix/local/installer.ex b/lib/mix/lib/mix/local/installer.ex
index 12fbd41e21f..b5180d87168 100644
--- a/lib/mix/lib/mix/local/installer.ex
+++ b/lib/mix/lib/mix/local/installer.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Local.Installer do
@moduledoc false
diff --git a/lib/mix/lib/mix/project.ex b/lib/mix/lib/mix/project.ex
index d859f0c4302..64a45d0b7e4 100644
--- a/lib/mix/lib/mix/project.ex
+++ b/lib/mix/lib/mix/project.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Project do
@moduledoc """
Defines and manipulates Mix projects.
diff --git a/lib/mix/lib/mix/project_stack.ex b/lib/mix/lib/mix/project_stack.ex
index 550838171a7..0df75726544 100644
--- a/lib/mix/lib/mix/project_stack.ex
+++ b/lib/mix/lib/mix/project_stack.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.ProjectStack do
@moduledoc false
diff --git a/lib/mix/lib/mix/pubsub.ex b/lib/mix/lib/mix/pubsub.ex
index 251cbbda8a9..18cc81ed060 100644
--- a/lib/mix/lib/mix/pubsub.ex
+++ b/lib/mix/lib/mix/pubsub.ex
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
defmodule Mix.PubSub do
@moduledoc false
diff --git a/lib/mix/lib/mix/pubsub/subscriber.ex b/lib/mix/lib/mix/pubsub/subscriber.ex
index 6c944d43ae2..e764a3bc8c3 100644
--- a/lib/mix/lib/mix/pubsub/subscriber.ex
+++ b/lib/mix/lib/mix/pubsub/subscriber.ex
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
defmodule Mix.PubSub.Subscriber do
@moduledoc false
diff --git a/lib/mix/lib/mix/rebar.ex b/lib/mix/lib/mix/rebar.ex
index 0214f9560c5..addc367b2ba 100644
--- a/lib/mix/lib/mix/rebar.ex
+++ b/lib/mix/lib/mix/rebar.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Rebar do
@moduledoc false
diff --git a/lib/mix/lib/mix/release.ex b/lib/mix/lib/mix/release.ex
index 7571e26952e..dc066d64f89 100644
--- a/lib/mix/lib/mix/release.ex
+++ b/lib/mix/lib/mix/release.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Release do
@moduledoc """
Defines the release structure and convenience for assembling releases.
diff --git a/lib/mix/lib/mix/remote_converger.ex b/lib/mix/lib/mix/remote_converger.ex
index 5b02905da97..14bbc3ee988 100644
--- a/lib/mix/lib/mix/remote_converger.ex
+++ b/lib/mix/lib/mix/remote_converger.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.RemoteConverger do
@moduledoc false
diff --git a/lib/mix/lib/mix/scm.ex b/lib/mix/lib/mix/scm.ex
index 92170f8ebad..eae876a7d50 100644
--- a/lib/mix/lib/mix/scm.ex
+++ b/lib/mix/lib/mix/scm.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.SCM do
@moduledoc """
This module provides helper functions and defines the
diff --git a/lib/mix/lib/mix/scm/git.ex b/lib/mix/lib/mix/scm/git.ex
index 95fcff44caa..e59c6c29826 100644
--- a/lib/mix/lib/mix/scm/git.ex
+++ b/lib/mix/lib/mix/scm/git.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.SCM.Git do
@behaviour Mix.SCM
@moduledoc false
diff --git a/lib/mix/lib/mix/scm/path.ex b/lib/mix/lib/mix/scm/path.ex
index 8b88deaaef7..179498e36ca 100644
--- a/lib/mix/lib/mix/scm/path.ex
+++ b/lib/mix/lib/mix/scm/path.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.SCM.Path do
@behaviour Mix.SCM
@moduledoc false
diff --git a/lib/mix/lib/mix/shell.ex b/lib/mix/lib/mix/shell.ex
index 8e2ec8bc93a..75770ef7a8a 100644
--- a/lib/mix/lib/mix/shell.ex
+++ b/lib/mix/lib/mix/shell.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Shell do
@moduledoc """
Defines `Mix.Shell` contract.
diff --git a/lib/mix/lib/mix/shell/io.ex b/lib/mix/lib/mix/shell/io.ex
index 6724e327e62..57aabfc5524 100644
--- a/lib/mix/lib/mix/shell/io.ex
+++ b/lib/mix/lib/mix/shell/io.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Shell.IO do
@moduledoc """
This is Mix's default shell.
diff --git a/lib/mix/lib/mix/shell/process.ex b/lib/mix/lib/mix/shell/process.ex
index bdd567dbbda..5492f4ddb30 100644
--- a/lib/mix/lib/mix/shell/process.ex
+++ b/lib/mix/lib/mix/shell/process.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Shell.Process do
@moduledoc """
Mix shell that uses the current process mailbox for communication.
diff --git a/lib/mix/lib/mix/shell/quiet.ex b/lib/mix/lib/mix/shell/quiet.ex
index 7b63d25a852..6c5f0c0dbbf 100644
--- a/lib/mix/lib/mix/shell/quiet.ex
+++ b/lib/mix/lib/mix/shell/quiet.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Shell.Quiet do
@moduledoc """
This is Mix's default shell when the `MIX_QUIET` environment
diff --git a/lib/mix/lib/mix/state.ex b/lib/mix/lib/mix/state.ex
index 5c99f13f9b6..74200f276fa 100644
--- a/lib/mix/lib/mix/state.ex
+++ b/lib/mix/lib/mix/state.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.State do
@moduledoc false
@name __MODULE__
diff --git a/lib/mix/lib/mix/sync/lock.ex b/lib/mix/lib/mix/sync/lock.ex
index 89bc5826646..4705f7602e9 100644
--- a/lib/mix/lib/mix/sync/lock.ex
+++ b/lib/mix/lib/mix/sync/lock.ex
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
defmodule Mix.Sync.Lock do
@moduledoc false
diff --git a/lib/mix/lib/mix/sync/pubsub.ex b/lib/mix/lib/mix/sync/pubsub.ex
index bf58a098af2..00ad2ad4925 100644
--- a/lib/mix/lib/mix/sync/pubsub.ex
+++ b/lib/mix/lib/mix/sync/pubsub.ex
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
defmodule Mix.Sync.PubSub do
@moduledoc false
diff --git a/lib/mix/lib/mix/task.compiler.ex b/lib/mix/lib/mix/task.compiler.ex
index 82a05f79861..730234afdf6 100644
--- a/lib/mix/lib/mix/task.compiler.ex
+++ b/lib/mix/lib/mix/task.compiler.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Task.Compiler do
@moduledoc """
This module defines the behaviour for a Mix task that does compilation.
diff --git a/lib/mix/lib/mix/task.ex b/lib/mix/lib/mix/task.ex
index d9ac27494b6..c0ca782fdd3 100644
--- a/lib/mix/lib/mix/task.ex
+++ b/lib/mix/lib/mix/task.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Task do
@moduledoc """
Provides conveniences for creating, loading, and manipulating Mix tasks.
diff --git a/lib/mix/lib/mix/tasks/app.config.ex b/lib/mix/lib/mix/tasks/app.config.ex
index 39f147d2552..95334d72788 100644
--- a/lib/mix/lib/mix/tasks/app.config.ex
+++ b/lib/mix/lib/mix/tasks/app.config.ex
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
defmodule Mix.Tasks.App.Config do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/app.start.ex b/lib/mix/lib/mix/tasks/app.start.ex
index 85b382fc600..a1cc4460635 100644
--- a/lib/mix/lib/mix/tasks/app.start.ex
+++ b/lib/mix/lib/mix/tasks/app.start.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.App.Start do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/app.tree.ex b/lib/mix/lib/mix/tasks/app.tree.ex
index 76c60649369..97e0142a5fb 100644
--- a/lib/mix/lib/mix/tasks/app.tree.ex
+++ b/lib/mix/lib/mix/tasks/app.tree.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.App.Tree do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/archive.build.ex b/lib/mix/lib/mix/tasks/archive.build.ex
index f618e873b3e..2330889e564 100644
--- a/lib/mix/lib/mix/tasks/archive.build.ex
+++ b/lib/mix/lib/mix/tasks/archive.build.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Archive.Build do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/archive.check.ex b/lib/mix/lib/mix/tasks/archive.check.ex
index 69447509a22..515952ac207 100644
--- a/lib/mix/lib/mix/tasks/archive.check.ex
+++ b/lib/mix/lib/mix/tasks/archive.check.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Archive.Check do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/archive.ex b/lib/mix/lib/mix/tasks/archive.ex
index db3e29cb23a..5ba36df1b0c 100644
--- a/lib/mix/lib/mix/tasks/archive.ex
+++ b/lib/mix/lib/mix/tasks/archive.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Archive do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/archive.install.ex b/lib/mix/lib/mix/tasks/archive.install.ex
index 39abd5dd514..19814f1c8fc 100644
--- a/lib/mix/lib/mix/tasks/archive.install.ex
+++ b/lib/mix/lib/mix/tasks/archive.install.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Archive.Install do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/archive.uninstall.ex b/lib/mix/lib/mix/tasks/archive.uninstall.ex
index 8ae1bf4842d..b1e82d68c1a 100644
--- a/lib/mix/lib/mix/tasks/archive.uninstall.ex
+++ b/lib/mix/lib/mix/tasks/archive.uninstall.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Archive.Uninstall do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/clean.ex b/lib/mix/lib/mix/tasks/clean.ex
index 138b623ecc7..1dbb9ca890b 100644
--- a/lib/mix/lib/mix/tasks/clean.ex
+++ b/lib/mix/lib/mix/tasks/clean.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Clean do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/cmd.ex b/lib/mix/lib/mix/tasks/cmd.ex
index bf0e94ebd58..8868e64e08a 100644
--- a/lib/mix/lib/mix/tasks/cmd.ex
+++ b/lib/mix/lib/mix/tasks/cmd.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Cmd do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/compile.all.ex b/lib/mix/lib/mix/tasks/compile.all.ex
index 115bc8a115f..323c7acee04 100644
--- a/lib/mix/lib/mix/tasks/compile.all.ex
+++ b/lib/mix/lib/mix/tasks/compile.all.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Compile.All do
use Mix.Task.Compiler
diff --git a/lib/mix/lib/mix/tasks/compile.app.ex b/lib/mix/lib/mix/tasks/compile.app.ex
index 78c51706fcf..92b272e04b2 100644
--- a/lib/mix/lib/mix/tasks/compile.app.ex
+++ b/lib/mix/lib/mix/tasks/compile.app.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Compile.App do
use Mix.Task.Compiler
diff --git a/lib/mix/lib/mix/tasks/compile.elixir.ex b/lib/mix/lib/mix/tasks/compile.elixir.ex
index 7f542b15ab9..a9cc8cca3a5 100644
--- a/lib/mix/lib/mix/tasks/compile.elixir.ex
+++ b/lib/mix/lib/mix/tasks/compile.elixir.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Compile.Elixir do
use Mix.Task.Compiler
diff --git a/lib/mix/lib/mix/tasks/compile.erlang.ex b/lib/mix/lib/mix/tasks/compile.erlang.ex
index 09608ebba74..2140b4090ac 100644
--- a/lib/mix/lib/mix/tasks/compile.erlang.ex
+++ b/lib/mix/lib/mix/tasks/compile.erlang.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Compile.Erlang do
use Mix.Task.Compiler
alias Mix.Compilers.Erlang
diff --git a/lib/mix/lib/mix/tasks/compile.ex b/lib/mix/lib/mix/tasks/compile.ex
index 787b2e41c86..6a8cbd7859d 100644
--- a/lib/mix/lib/mix/tasks/compile.ex
+++ b/lib/mix/lib/mix/tasks/compile.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Compile do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/compile.leex.ex b/lib/mix/lib/mix/tasks/compile.leex.ex
index 6ff6ec10678..3eebff22444 100644
--- a/lib/mix/lib/mix/tasks/compile.leex.ex
+++ b/lib/mix/lib/mix/tasks/compile.leex.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Compile.Leex do
use Mix.Task.Compiler
alias Mix.Compilers.Erlang
diff --git a/lib/mix/lib/mix/tasks/compile.protocols.ex b/lib/mix/lib/mix/tasks/compile.protocols.ex
index 26ba910fbca..943fcabb01c 100644
--- a/lib/mix/lib/mix/tasks/compile.protocols.ex
+++ b/lib/mix/lib/mix/tasks/compile.protocols.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Compile.Protocols do
@moduledoc false
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/compile.yecc.ex b/lib/mix/lib/mix/tasks/compile.yecc.ex
index 09127770124..373565e1152 100644
--- a/lib/mix/lib/mix/tasks/compile.yecc.ex
+++ b/lib/mix/lib/mix/tasks/compile.yecc.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Compile.Yecc do
use Mix.Task.Compiler
alias Mix.Compilers.Erlang
diff --git a/lib/mix/lib/mix/tasks/deps.clean.ex b/lib/mix/lib/mix/tasks/deps.clean.ex
index 93279343a79..5e59334c80a 100644
--- a/lib/mix/lib/mix/tasks/deps.clean.ex
+++ b/lib/mix/lib/mix/tasks/deps.clean.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Deps.Clean do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/deps.compile.ex b/lib/mix/lib/mix/tasks/deps.compile.ex
index 64e46aa0508..7ce84b4da32 100644
--- a/lib/mix/lib/mix/tasks/deps.compile.ex
+++ b/lib/mix/lib/mix/tasks/deps.compile.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Deps.Compile do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/deps.ex b/lib/mix/lib/mix/tasks/deps.ex
index 8fe0572c56c..1a216730f2e 100644
--- a/lib/mix/lib/mix/tasks/deps.ex
+++ b/lib/mix/lib/mix/tasks/deps.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Deps do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/deps.get.ex b/lib/mix/lib/mix/tasks/deps.get.ex
index c7e66e35830..c57b53dad16 100644
--- a/lib/mix/lib/mix/tasks/deps.get.ex
+++ b/lib/mix/lib/mix/tasks/deps.get.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Deps.Get do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/deps.loadpaths.ex b/lib/mix/lib/mix/tasks/deps.loadpaths.ex
index a3f5ef10db5..6f62ad946d2 100644
--- a/lib/mix/lib/mix/tasks/deps.loadpaths.ex
+++ b/lib/mix/lib/mix/tasks/deps.loadpaths.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Deps.Loadpaths do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/deps.precompile.ex b/lib/mix/lib/mix/tasks/deps.precompile.ex
index bd2a54401d1..a4843c5d0c1 100644
--- a/lib/mix/lib/mix/tasks/deps.precompile.ex
+++ b/lib/mix/lib/mix/tasks/deps.precompile.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Deps.Precompile do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/deps.tree.ex b/lib/mix/lib/mix/tasks/deps.tree.ex
index 82b9ad07f64..398d130ec6c 100644
--- a/lib/mix/lib/mix/tasks/deps.tree.ex
+++ b/lib/mix/lib/mix/tasks/deps.tree.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Deps.Tree do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/deps.unlock.ex b/lib/mix/lib/mix/tasks/deps.unlock.ex
index 27c5d8d6059..9bc109578d7 100644
--- a/lib/mix/lib/mix/tasks/deps.unlock.ex
+++ b/lib/mix/lib/mix/tasks/deps.unlock.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Deps.Unlock do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/deps.update.ex b/lib/mix/lib/mix/tasks/deps.update.ex
index 529dad817f3..4e650a9c8ce 100644
--- a/lib/mix/lib/mix/tasks/deps.update.ex
+++ b/lib/mix/lib/mix/tasks/deps.update.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Deps.Update do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/do.ex b/lib/mix/lib/mix/tasks/do.ex
index 2208d89d20b..ab4cf23e390 100644
--- a/lib/mix/lib/mix/tasks/do.ex
+++ b/lib/mix/lib/mix/tasks/do.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Do do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/escript.build.ex b/lib/mix/lib/mix/tasks/escript.build.ex
index 7a3cebfac0a..37e0f65b527 100644
--- a/lib/mix/lib/mix/tasks/escript.build.ex
+++ b/lib/mix/lib/mix/tasks/escript.build.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Escript.Build do
use Mix.Task
import Bitwise, only: [|||: 2]
diff --git a/lib/mix/lib/mix/tasks/escript.ex b/lib/mix/lib/mix/tasks/escript.ex
index bbae95f026f..d805a46e51c 100644
--- a/lib/mix/lib/mix/tasks/escript.ex
+++ b/lib/mix/lib/mix/tasks/escript.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Escript do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/escript.install.ex b/lib/mix/lib/mix/tasks/escript.install.ex
index ba1b9a46ed1..86026cf4060 100644
--- a/lib/mix/lib/mix/tasks/escript.install.ex
+++ b/lib/mix/lib/mix/tasks/escript.install.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Escript.Install do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/escript.uninstall.ex b/lib/mix/lib/mix/tasks/escript.uninstall.ex
index ce99d5944b1..1ccd9e4fd50 100644
--- a/lib/mix/lib/mix/tasks/escript.uninstall.ex
+++ b/lib/mix/lib/mix/tasks/escript.uninstall.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Escript.Uninstall do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/eval.ex b/lib/mix/lib/mix/tasks/eval.ex
index a0c0a159911..0510c9ff438 100644
--- a/lib/mix/lib/mix/tasks/eval.ex
+++ b/lib/mix/lib/mix/tasks/eval.ex
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
defmodule Mix.Tasks.Eval do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/format.ex b/lib/mix/lib/mix/tasks/format.ex
index bbd99625252..28970156a3d 100644
--- a/lib/mix/lib/mix/tasks/format.ex
+++ b/lib/mix/lib/mix/tasks/format.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Format do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/help.ex b/lib/mix/lib/mix/tasks/help.ex
index ba0b9f529b4..ec6dfd3c20d 100644
--- a/lib/mix/lib/mix/tasks/help.ex
+++ b/lib/mix/lib/mix/tasks/help.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Help do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/iex.ex b/lib/mix/lib/mix/tasks/iex.ex
index e99cdd13ae5..04e6eeab133 100644
--- a/lib/mix/lib/mix/tasks/iex.ex
+++ b/lib/mix/lib/mix/tasks/iex.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Iex do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/loadconfig.ex b/lib/mix/lib/mix/tasks/loadconfig.ex
index c86bc8c6c31..61e058e5a10 100644
--- a/lib/mix/lib/mix/tasks/loadconfig.ex
+++ b/lib/mix/lib/mix/tasks/loadconfig.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Loadconfig do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/loadpaths.ex b/lib/mix/lib/mix/tasks/loadpaths.ex
index fffe930f5fc..b8670a6bb18 100644
--- a/lib/mix/lib/mix/tasks/loadpaths.ex
+++ b/lib/mix/lib/mix/tasks/loadpaths.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Loadpaths do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/local.ex b/lib/mix/lib/mix/tasks/local.ex
index c0e33c1ebf7..aa05b715538 100644
--- a/lib/mix/lib/mix/tasks/local.ex
+++ b/lib/mix/lib/mix/tasks/local.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Local do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/local.hex.ex b/lib/mix/lib/mix/tasks/local.hex.ex
index 82f4bd4ad36..8e61e486bb5 100644
--- a/lib/mix/lib/mix/tasks/local.hex.ex
+++ b/lib/mix/lib/mix/tasks/local.hex.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Local.Hex do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/local.public_keys.ex b/lib/mix/lib/mix/tasks/local.public_keys.ex
index 9fddf5d7664..5e88fa5fb25 100644
--- a/lib/mix/lib/mix/tasks/local.public_keys.ex
+++ b/lib/mix/lib/mix/tasks/local.public_keys.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Local.PublicKeys do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/local.rebar.ex b/lib/mix/lib/mix/tasks/local.rebar.ex
index 255ac4b9c55..b70f97f97ff 100644
--- a/lib/mix/lib/mix/tasks/local.rebar.ex
+++ b/lib/mix/lib/mix/tasks/local.rebar.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Local.Rebar do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/new.ex b/lib/mix/lib/mix/tasks/new.ex
index f312875e036..9bd96c41b51 100644
--- a/lib/mix/lib/mix/tasks/new.ex
+++ b/lib/mix/lib/mix/tasks/new.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.New do
use Mix.Task
import Mix.Generator
diff --git a/lib/mix/lib/mix/tasks/profile.cprof.ex b/lib/mix/lib/mix/tasks/profile.cprof.ex
index e1353315baa..62abd3489a1 100644
--- a/lib/mix/lib/mix/tasks/profile.cprof.ex
+++ b/lib/mix/lib/mix/tasks/profile.cprof.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Profile.Cprof do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/profile.eprof.ex b/lib/mix/lib/mix/tasks/profile.eprof.ex
index b4fdbb7e8be..52099b7247a 100644
--- a/lib/mix/lib/mix/tasks/profile.eprof.ex
+++ b/lib/mix/lib/mix/tasks/profile.eprof.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Profile.Eprof do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/profile.fprof.ex b/lib/mix/lib/mix/tasks/profile.fprof.ex
index a53f7c5e809..8a7f4cd4cbc 100644
--- a/lib/mix/lib/mix/tasks/profile.fprof.ex
+++ b/lib/mix/lib/mix/tasks/profile.fprof.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Profile.Fprof do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/profile.tprof.ex b/lib/mix/lib/mix/tasks/profile.tprof.ex
index 551357ca5a0..163c9448cf1 100644
--- a/lib/mix/lib/mix/tasks/profile.tprof.ex
+++ b/lib/mix/lib/mix/tasks/profile.tprof.ex
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
defmodule Mix.Tasks.Profile.Tprof do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/release.ex b/lib/mix/lib/mix/tasks/release.ex
index ba406ecec87..91f84e96ece 100644
--- a/lib/mix/lib/mix/tasks/release.ex
+++ b/lib/mix/lib/mix/tasks/release.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Release do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/release.init.ex b/lib/mix/lib/mix/tasks/release.init.ex
index 87ed596bbd3..98eb50ea1f1 100644
--- a/lib/mix/lib/mix/tasks/release.init.ex
+++ b/lib/mix/lib/mix/tasks/release.init.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Release.Init do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/run.ex b/lib/mix/lib/mix/tasks/run.ex
index cdf841d8349..41fc147e87a 100644
--- a/lib/mix/lib/mix/tasks/run.ex
+++ b/lib/mix/lib/mix/tasks/run.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Run do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/test.coverage.ex b/lib/mix/lib/mix/tasks/test.coverage.ex
index c182a12f2ef..30466491bc2 100644
--- a/lib/mix/lib/mix/tasks/test.coverage.ex
+++ b/lib/mix/lib/mix/tasks/test.coverage.ex
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+
defmodule Mix.Tasks.Test.Coverage do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/test.ex b/lib/mix/lib/mix/tasks/test.ex
index b55040ec0c9..1a3e9bacc3a 100644
--- a/lib/mix/lib/mix/tasks/test.ex
+++ b/lib/mix/lib/mix/tasks/test.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Test do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks/will_recompile.ex b/lib/mix/lib/mix/tasks/will_recompile.ex
index 0a59d3e3d88..7390aae6ae0 100644
--- a/lib/mix/lib/mix/tasks/will_recompile.ex
+++ b/lib/mix/lib/mix/tasks/will_recompile.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.WillRecompile do
use Mix.Task
@moduledoc false
diff --git a/lib/mix/lib/mix/tasks/xref.ex b/lib/mix/lib/mix/tasks/xref.ex
index 0b03a3f5f7c..5b48dbe41ef 100644
--- a/lib/mix/lib/mix/tasks/xref.ex
+++ b/lib/mix/lib/mix/tasks/xref.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Tasks.Xref do
use Mix.Task
diff --git a/lib/mix/lib/mix/tasks_server.ex b/lib/mix/lib/mix/tasks_server.ex
index a8825d7dc7d..4f82f7090ac 100644
--- a/lib/mix/lib/mix/tasks_server.ex
+++ b/lib/mix/lib/mix/tasks_server.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.TasksServer do
@moduledoc false
@name __MODULE__
diff --git a/lib/mix/lib/mix/utils.ex b/lib/mix/lib/mix/utils.ex
index a1af6cd4803..43e36b8cb3c 100644
--- a/lib/mix/lib/mix/utils.ex
+++ b/lib/mix/lib/mix/utils.ex
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.Utils do
@moduledoc false
diff --git a/lib/mix/mix.exs b/lib/mix/mix.exs
index 661ec9a5ba7..007a3362faf 100644
--- a/lib/mix/mix.exs
+++ b/lib/mix/mix.exs
@@ -1,3 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2021 The Elixir Team
+# SPDX-FileCopyrightText: 2012 Plataformatec
+
defmodule Mix.MixProject do
use Mix.Project
diff --git a/man/common b/man/common
index 391eeea8238..fb1e1125da6 100644
--- a/man/common
+++ b/man/common
@@ -1,3 +1,6 @@
+.\" SPDX-License-Identifier: Apache-2.0
+.\" SPDX-FileCopyrightText: 2021 The Elixir Team
+.\" SPDX-FileCopyrightText: 2012 Plataformatec
.It Fl h , -help
Displays the help message to the standard error (stderr) and exits.
.It Fl v , -version
diff --git a/man/elixir.1.in b/man/elixir.1.in
index ee6186f1c57..ceb20930540 100644
--- a/man/elixir.1.in
+++ b/man/elixir.1.in
@@ -1,3 +1,6 @@
+.\" SPDX-License-Identifier: Apache-2.0
+.\" SPDX-FileCopyrightText: 2021 The Elixir Team
+.\" SPDX-FileCopyrightText: 2012 Plataformatec
.Dd February 3, 2019
.Dt ELIXIR 1
.Os
diff --git a/man/elixirc.1 b/man/elixirc.1
index 4857d912707..f0585105870 100644
--- a/man/elixirc.1
+++ b/man/elixirc.1
@@ -1,3 +1,6 @@
+.\" SPDX-License-Identifier: Apache-2.0
+.\" SPDX-FileCopyrightText: 2021 The Elixir Team
+.\" SPDX-FileCopyrightText: 2012 Plataformatec
.Dd April 10, 2015
.Dt ELIXIRC 1
.Os
diff --git a/man/iex.1.in b/man/iex.1.in
index 5ba83e2fbe9..044c2d831a6 100644
--- a/man/iex.1.in
+++ b/man/iex.1.in
@@ -1,3 +1,6 @@
+.\" SPDX-License-Identifier: Apache-2.0
+.\" SPDX-FileCopyrightText: 2021 The Elixir Team
+.\" SPDX-FileCopyrightText: 2012 Plataformatec
.Dd February 3, 2019
.Dt IEX 1
.Os
diff --git a/man/mix.1 b/man/mix.1
index e35a14a4ab6..cf839b0bba8 100644
--- a/man/mix.1
+++ b/man/mix.1
@@ -1,3 +1,6 @@
+.\" SPDX-License-Identifier: Apache-2.0
+.\" SPDX-FileCopyrightText: 2021 The Elixir Team
+.\" SPDX-FileCopyrightText: 2012 Plataformatec
.Dd May 27, 2015
.Dt MIX 1
.Os