Compare commits
1 Commits
send-and-i
...
recall
Author | SHA1 | Date | |
---|---|---|---|
a34d77b096
|
@ -460,8 +460,7 @@
|
|||||||
"avatar_url": "https://avatars.githubusercontent.com/u/47955724?v=4",
|
"avatar_url": "https://avatars.githubusercontent.com/u/47955724?v=4",
|
||||||
"profile": "https://github.com/taivlam",
|
"profile": "https://github.com/taivlam",
|
||||||
"contributions": [
|
"contributions": [
|
||||||
"doc",
|
"doc"
|
||||||
"maintenance"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -2986,26 +2985,6 @@
|
|||||||
"promotion",
|
"promotion",
|
||||||
"question"
|
"question"
|
||||||
]
|
]
|
||||||
},
|
|
||||||
{
|
|
||||||
"login": "Spirizer",
|
|
||||||
"name": "Spirizer",
|
|
||||||
"avatar_url": "https://avatars.githubusercontent.com/u/51120100?v=4",
|
|
||||||
"profile": "https://github.com/Spirizer",
|
|
||||||
"contributions": [
|
|
||||||
"translation"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"login": "jordbm",
|
|
||||||
"name": "jordbm",
|
|
||||||
"avatar_url": "https://avatars.githubusercontent.com/u/160433264?v=4",
|
|
||||||
"profile": "https://github.com/jordbm",
|
|
||||||
"contributions": [
|
|
||||||
"doc",
|
|
||||||
"maintenance",
|
|
||||||
"security"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"contributorsPerLine": 5,
|
"contributorsPerLine": 5,
|
||||||
|
2
.github/workflows/build-pr.yml
vendored
@ -72,8 +72,6 @@ jobs:
|
|||||||
continue-on-error: false
|
continue-on-error: false
|
||||||
privileged: ${{ fromJSON(needs.metadata.outputs.privileged) }}
|
privileged: ${{ fromJSON(needs.metadata.outputs.privileged) }}
|
||||||
strict: true
|
strict: true
|
||||||
secrets:
|
|
||||||
RO_DISCOURSE_API_KEY: ${{ secrets.RO_DISCOURSE_API_KEY }}
|
|
||||||
|
|
||||||
build_i18n:
|
build_i18n:
|
||||||
if: ${{ contains(github.event.pull_request.labels.*.name, 'ci:build i18n') }}
|
if: ${{ contains(github.event.pull_request.labels.*.name, 'ci:build i18n') }}
|
||||||
|
27
.github/workflows/build.yml
vendored
@ -30,9 +30,6 @@ on:
|
|||||||
cache:
|
cache:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: true
|
default: true
|
||||||
secrets:
|
|
||||||
RO_DISCOURSE_API_KEY:
|
|
||||||
required: false
|
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@ -175,31 +172,23 @@ jobs:
|
|||||||
sudo apt install pngquant
|
sudo apt install pngquant
|
||||||
echo "EXTRA_FLAGS=""$EXTRA_FLAGS" --cmd=mkdocs"" >> "$GITHUB_ENV"
|
echo "EXTRA_FLAGS=""$EXTRA_FLAGS" --cmd=mkdocs"" >> "$GITHUB_ENV"
|
||||||
|
|
||||||
- name: Generate Donating Members List
|
|
||||||
continue-on-error: true
|
|
||||||
env:
|
|
||||||
DISCOURSE_API_KEY: ${{ secrets.RO_DISCOURSE_API_KEY }}
|
|
||||||
run: |
|
|
||||||
pip install requests
|
|
||||||
python generate-members.py > includes/members.md
|
|
||||||
|
|
||||||
- name: Build Website
|
- name: Build Website
|
||||||
run: |
|
run: |
|
||||||
eval ./run.sh --build --lang=${{ inputs.lang }} "$EXTRA_FLAGS"
|
eval ./run.sh --build --lang=${{ inputs.lang }} "$EXTRA_FLAGS"
|
||||||
|
|
||||||
- name: Run generate-topics.sh for top posts
|
- name: Run index-generation.sh for top posts
|
||||||
if: inputs.lang == 'en'
|
if: inputs.lang == 'en'
|
||||||
run: |
|
run: |
|
||||||
bash generate-topics.sh \
|
bash index-generation.sh \
|
||||||
--source='https://discuss.privacyguides.net/top.json?period=weekly' \
|
--source='https://discuss.privacyguides.net/top.json?period=weekly' \
|
||||||
--tag="top posts" \
|
--tag="top posts" \
|
||||||
--destination="./site/en/index.html" \
|
--destination="./site/en/index.html" \
|
||||||
--count=3
|
--count=3
|
||||||
|
|
||||||
- name: Run generate-topics.sh for latest posts
|
- name: Run index-generation.sh for latest posts
|
||||||
if: inputs.lang == 'en'
|
if: inputs.lang == 'en'
|
||||||
run: |
|
run: |
|
||||||
bash generate-topics.sh \
|
bash index-generation.sh \
|
||||||
--source='https://discuss.privacyguides.net/latest.json' \
|
--source='https://discuss.privacyguides.net/latest.json' \
|
||||||
--tag="latest posts" \
|
--tag="latest posts" \
|
||||||
--destination="./site/en/index.html" \
|
--destination="./site/en/index.html" \
|
||||||
@ -270,14 +259,6 @@ jobs:
|
|||||||
path: site-${{ inputs.config }}-${{ inputs.lang }}.tar.gz
|
path: site-${{ inputs.config }}-${{ inputs.lang }}.tar.gz
|
||||||
retention-days: 1
|
retention-days: 1
|
||||||
|
|
||||||
- name: Upload members list
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
if: inputs.config == 'build' && inputs.lang == 'en'
|
|
||||||
with:
|
|
||||||
name: members.md
|
|
||||||
path: includes/members.md
|
|
||||||
retention-days: 1
|
|
||||||
|
|
||||||
offline_package:
|
offline_package:
|
||||||
if: inputs.config == 'offline' && inputs.lang == 'en'
|
if: inputs.config == 'offline' && inputs.lang == 'en'
|
||||||
needs: build
|
needs: build
|
||||||
|
2
.github/workflows/publish-release.yml
vendored
@ -63,8 +63,6 @@ jobs:
|
|||||||
context: production
|
context: production
|
||||||
continue-on-error: false
|
continue-on-error: false
|
||||||
cache: false
|
cache: false
|
||||||
secrets:
|
|
||||||
RO_DISCOURSE_API_KEY: ${{ secrets.RO_DISCOURSE_API_KEY }}
|
|
||||||
|
|
||||||
build_blog:
|
build_blog:
|
||||||
needs: submodule
|
needs: submodule
|
||||||
|
8
.github/workflows/update-discussions.yml
vendored
@ -55,17 +55,17 @@ jobs:
|
|||||||
source: /en/index.html
|
source: /en/index.html
|
||||||
target: ./site/en/
|
target: ./site/en/
|
||||||
|
|
||||||
- name: Run generate-topics.sh for top posts
|
- name: Run index-generation.sh for top posts
|
||||||
run: |
|
run: |
|
||||||
bash generate-topics.sh \
|
bash index-generation.sh \
|
||||||
--source='https://discuss.privacyguides.net/top.json?period=weekly' \
|
--source='https://discuss.privacyguides.net/top.json?period=weekly' \
|
||||||
--tag="top posts" \
|
--tag="top posts" \
|
||||||
--destination="./site/en/index.html" \
|
--destination="./site/en/index.html" \
|
||||||
--count=3
|
--count=3
|
||||||
|
|
||||||
- name: Run generate-topics.sh for latest posts
|
- name: Run index-generation.sh for latest posts
|
||||||
run: |
|
run: |
|
||||||
bash generate-topics.sh \
|
bash index-generation.sh \
|
||||||
--source='https://discuss.privacyguides.net/latest.json' \
|
--source='https://discuss.privacyguides.net/latest.json' \
|
||||||
--tag="latest posts" \
|
--tag="latest posts" \
|
||||||
--destination="./site/en/index.html" \
|
--destination="./site/en/index.html" \
|
||||||
|
3
.gitignore
vendored
@ -23,6 +23,3 @@ node_modules
|
|||||||
.venv
|
.venv
|
||||||
.env
|
.env
|
||||||
.mkdocs-insiders-*
|
.mkdocs-insiders-*
|
||||||
|
|
||||||
# Automatically generated
|
|
||||||
includes/members.md
|
|
||||||
|
20
.mailmap
@ -1,22 +1,16 @@
|
|||||||
# Please use this file to correct information in our git log.
|
|
||||||
# Format: Proper Name <Proper Email> <Incorrect Email>
|
|
||||||
#
|
|
||||||
# Privacy Guides Team Members
|
|
||||||
# ===========================
|
|
||||||
Daniel Gray <dngray@privacyguides.org> <dng@disroot.org>
|
Daniel Gray <dngray@privacyguides.org> <dng@disroot.org>
|
||||||
Daniel Gray <dngray@privacyguides.org> <48640805+dngray@users.noreply.github.com>
|
Daniel Gray <dngray@privacyguides.org> <48640805+dngray@users.noreply.github.com>
|
||||||
Daniel Gray <dngray@privacyguides.org> <dngray@privacytools.io>
|
Daniel Gray <dngray@privacyguides.org> <dngray@privacytools.io>
|
||||||
Daniel Gray <dngray@privacyguides.org>
|
Daniel Gray <dngray@privacyguides.org>
|
||||||
Em <em@privacyguides.org> <194856901+EmAtPrivacyGuides@users.noreply.github.com>
|
|
||||||
Freddy <freddy@privacyguides.org> <freddy@decypher.pw>
|
|
||||||
Freddy <freddy@privacyguides.org> <freddy@privacytools.io>
|
|
||||||
fria <fria@privacyguides.org> <138676274+friadev@users.noreply.github.com>
|
|
||||||
Jonah Aragon <jonah@privacyguides.org> <jonah@triplebit.net>
|
Jonah Aragon <jonah@privacyguides.org> <jonah@triplebit.net>
|
||||||
Jonah Aragon <jonah@privacyguides.org> <jonah@privacytools.io>
|
Jonah Aragon <jonah@privacyguides.org> <jonah@privacytools.io>
|
||||||
Jonah Aragon <jonah@privacyguides.org> <github@aragon.science>
|
Jonah Aragon <jonah@privacyguides.org> <github@aragon.science>
|
||||||
Jordan Warne <jordan@privacyguides.org> <jw@omg.lol>
|
mfwmyfacewhen <mfw@privacyguides.org> <94880365+mfwmyfacewhen@users.noreply.github.com>
|
||||||
Justin Ehrenhofer <justin.ehrenhofer@gmail.com> <12520755+SamsungGalaxyPlayer@users.noreply.github.com>
|
mbananasynergy <mbananasynergy@privacyguides.org> <>
|
||||||
Mare Polaris <ph00lt0@privacyguides.org> <15004290+ph00lt0@users.noreply.github.com>
|
mbananasynergy <mbananasynergy@privacyguides.org> <107055883+matchboxbananasynergy@users.noreply.github.com>
|
||||||
|
rollsicecream <rollsicecream@proton.me> <153316540+rollsicecream@users.noreply.github.com>
|
||||||
|
rollsicecream <rollsicecream@proton.me> <waterfallnet@proton.me>
|
||||||
|
Freddy <freddy@privacyguides.org> <freddy@decypher.pw>
|
||||||
|
Freddy <freddy@privacyguides.org> <freddy@privacytools.io>
|
||||||
Niek de Wilde <niek@privacyguides.org> <github.ef27z@simplelogin.com>
|
Niek de Wilde <niek@privacyguides.org> <github.ef27z@simplelogin.com>
|
||||||
Niek de Wilde <niek@privacyguides.org> <blacklight447@privacytools.io>
|
Niek de Wilde <niek@privacyguides.org> <blacklight447@privacytools.io>
|
||||||
redoomed1 <redoomed1@privacyguides.org> <161974310+redoomed1@users.noreply.github.com>
|
|
||||||
|
33
.vscode/ltex.dictionary.en-US.txt
vendored
@ -529,36 +529,3 @@ subkeys
|
|||||||
subkey
|
subkey
|
||||||
keysize
|
keysize
|
||||||
Keygrip
|
Keygrip
|
||||||
tessera
|
|
||||||
Corbató
|
|
||||||
NordPass
|
|
||||||
Syncable
|
|
||||||
fontawesome-solid-glasses
|
|
||||||
CommonHealth
|
|
||||||
Euki
|
|
||||||
sympto-thermal
|
|
||||||
OsmAnd
|
|
||||||
Paaster
|
|
||||||
material-check-decagram
|
|
||||||
Bluesky
|
|
||||||
Codeberg
|
|
||||||
simple-codeberg
|
|
||||||
simple-reddit
|
|
||||||
fontawesome-brands-linkedin
|
|
||||||
simple-keepassxc
|
|
||||||
OnlyKey
|
|
||||||
fontawesome-solid-unlock-keyhole
|
|
||||||
KeeShare
|
|
||||||
KeePassium
|
|
||||||
MWEB
|
|
||||||
Cyd
|
|
||||||
Semiphemeral
|
|
||||||
Dangerzone
|
|
||||||
simple-activitypub
|
|
||||||
ActivityPub
|
|
||||||
pseudorandom
|
|
||||||
Chaum
|
|
||||||
unlinkability
|
|
||||||
Kagi
|
|
||||||
Secureblue
|
|
||||||
pseudonymity
|
|
||||||
|
4
.vscode/ltex.hiddenFalsePositives.en-US.txt
vendored
@ -74,7 +74,3 @@
|
|||||||
{"rule":"DO_VBZ","sentence":"^\\QDoes Privacy Guides use personal information for marketing purposes?\\E$"}
|
{"rule":"DO_VBZ","sentence":"^\\QDoes Privacy Guides use personal information for marketing purposes?\\E$"}
|
||||||
{"rule":"DO_VBZ","sentence":"^\\QWhere does Privacy Guides store data about me?\\E$"}
|
{"rule":"DO_VBZ","sentence":"^\\QWhere does Privacy Guides store data about me?\\E$"}
|
||||||
{"rule":"MORFOLOGIK_RULE_EN_US","sentence":"^\\QPrivacy Guides relies on the European Commission's standard contractual clauses for international transfers(SCCs) to legally transfer personal data out of the European Economic Area.\\E$"}
|
{"rule":"MORFOLOGIK_RULE_EN_US","sentence":"^\\QPrivacy Guides relies on the European Commission's standard contractual clauses for international transfers(SCCs) to legally transfer personal data out of the European Economic Area.\\E$"}
|
||||||
{"rule":"MORFOLOGIK_RULE_EN_US","sentence":"^\\QIllustration: Jordan / Privacy Guides | Photo: Gowtham AGM / Unsplash\\E$"}
|
|
||||||
{"rule":"MORFOLOGIK_RULE_EN_US","sentence":"^\\QThunder was used specifically because it was difficult for Germans to pronounce, since the English \"th\" sound doesn't exist in German.\\E$"}
|
|
||||||
{"rule":"MORFOLOGIK_RULE_EN_US","sentence":"^\\QAllan Scherr, a Ph.D. researcher at MIT, wanted more time for his detailed simulations.\\E$"}
|
|
||||||
{"rule":"MORFOLOGIK_RULE_EN_US","sentence":"^\\QYou can test out passkeys at webauthn.io.\\E$"}
|
|
||||||
|
1
.vscode/settings.json
vendored
@ -86,7 +86,6 @@
|
|||||||
"AUXILIARY_DO_WITH_INCORRECT_VERB_FORM": "hint",
|
"AUXILIARY_DO_WITH_INCORRECT_VERB_FORM": "hint",
|
||||||
"MISSING_COMMA_AFTER_YEAR": "hint",
|
"MISSING_COMMA_AFTER_YEAR": "hint",
|
||||||
"DO_VBZ": "hint",
|
"DO_VBZ": "hint",
|
||||||
"NOUN_AROUND_IT": "hint",
|
|
||||||
"default": "error"
|
"default": "error"
|
||||||
},
|
},
|
||||||
"editor.unicodeHighlight.ambiguousCharacters": true,
|
"editor.unicodeHighlight.ambiguousCharacters": true,
|
||||||
|
@ -14,7 +14,9 @@
|
|||||||
<a href="https://github.com/privacyguides/privacyguides.org/stargazers">
|
<a href="https://github.com/privacyguides/privacyguides.org/stargazers">
|
||||||
<img src="https://img.shields.io/github/stars/privacyguides?style=social"></a>
|
<img src="https://img.shields.io/github/stars/privacyguides?style=social"></a>
|
||||||
<a href="https://mastodon.neat.computer/@privacyguides">
|
<a href="https://mastodon.neat.computer/@privacyguides">
|
||||||
<img src="https://img.shields.io/mastodon/follow/109298532634697668?domain=https%3A%2F%2Fmastodon.neat.computer&label=Follow&style=social"></a></p>
|
<img src="https://img.shields.io/mastodon/follow/109298532634697668?domain=https%3A%2F%2Fmastodon.neat.computer&label=Follow&style=social"></a>
|
||||||
|
<a href="https://bsky.app/profile/privacyguides.org">
|
||||||
|
<img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpublic.api.bsky.app%2Fxrpc%2Fapp.bsky.actor.getProfile%3Factor%3Dprivacyguides.org&query=%24.followersCount&style=social&logo=bluesky&label=Follow"></a></p>
|
||||||
|
|
||||||
<p><a href="https://github.com/privacyguides/privacyguides.org/pulls">
|
<p><a href="https://github.com/privacyguides/privacyguides.org/pulls">
|
||||||
<img src="https://img.shields.io/github/issues-pr-raw/privacyguides/privacyguides.org"></a>
|
<img src="https://img.shields.io/github/issues-pr-raw/privacyguides/privacyguides.org"></a>
|
||||||
@ -220,7 +222,7 @@ Privacy Guides wouldn't be possible without these wonderful people ([emoji key](
|
|||||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/C-O-M-P-A-R-T-M-E-N-T-A-L-I-Z-A-T-I-O-N"><img src="https://avatars.githubusercontent.com/u/30232065?v=4" width="100px;" loading=lazy /><br /><sub><b>C-O-M-P-A-R-T-M-E-N-T-A-L-I-Z-A-T-I-O-N</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=C-O-M-P-A-R-T-M-E-N-T-A-L-I-Z-A-T-I-O-N" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/C-O-M-P-A-R-T-M-E-N-T-A-L-I-Z-A-T-I-O-N"><img src="https://avatars.githubusercontent.com/u/30232065?v=4" width="100px;" loading=lazy /><br /><sub><b>C-O-M-P-A-R-T-M-E-N-T-A-L-I-Z-A-T-I-O-N</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=C-O-M-P-A-R-T-M-E-N-T-A-L-I-Z-A-T-I-O-N" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Strappazzon"><img src="https://avatars.githubusercontent.com/u/19752093?v=4" width="100px;" loading=lazy /><br /><sub><b>Alberto Strappazzon</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Strappazzon" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Strappazzon"><img src="https://avatars.githubusercontent.com/u/19752093?v=4" width="100px;" loading=lazy /><br /><sub><b>Alberto Strappazzon</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Strappazzon" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://victorhckinthefreeworld.com/"><img src="https://avatars.githubusercontent.com/u/1514206?v=4" width="100px;" loading=lazy /><br /><sub><b>Victorhck</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=victorhck" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://victorhckinthefreeworld.com/"><img src="https://avatars.githubusercontent.com/u/1514206?v=4" width="100px;" loading=lazy /><br /><sub><b>Victorhck</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=victorhck" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/taivlam"><img src="https://avatars.githubusercontent.com/u/47955724?v=4" width="100px;" loading=lazy /><br /><sub><b>Tai Lam</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=taivlam" title="Documentation">📖</a> <a href="#maintenance-taivlam" title="Maintenance">🚧</a></td>
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/taivlam"><img src="https://avatars.githubusercontent.com/u/47955724?v=4" width="100px;" loading=lazy /><br /><sub><b>Tai Lam</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=taivlam" title="Documentation">📖</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/NinebitX"><img src="https://avatars.githubusercontent.com/u/26626722?v=4" width="100px;" loading=lazy /><br /><sub><b>NinebitX</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=NinebitX" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/NinebitX"><img src="https://avatars.githubusercontent.com/u/26626722?v=4" width="100px;" loading=lazy /><br /><sub><b>NinebitX</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=NinebitX" title="Documentation">📖</a></td>
|
||||||
@ -611,8 +613,6 @@ Privacy Guides wouldn't be possible without these wonderful people ([emoji key](
|
|||||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/bruch-alex"><img src="https://avatars.githubusercontent.com/u/173354246?v=4" width="100px;" loading=lazy /><br /><sub><b>Alex Bruch</b></sub></a><br /><a href="#translation-bruch-alex" title="Translation">🌍</a></td>
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/bruch-alex"><img src="https://avatars.githubusercontent.com/u/173354246?v=4" width="100px;" loading=lazy /><br /><sub><b>Alex Bruch</b></sub></a><br /><a href="#translation-bruch-alex" title="Translation">🌍</a></td>
|
||||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/qiyongzheng"><img src="https://avatars.githubusercontent.com/u/153378707?v=4" width="100px;" loading=lazy /><br /><sub><b>qiyongzheng</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=qiyongzheng" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/qiyongzheng"><img src="https://avatars.githubusercontent.com/u/153378707?v=4" width="100px;" loading=lazy /><br /><sub><b>qiyongzheng</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=qiyongzheng" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/hashcatHitman"><img src="https://avatars.githubusercontent.com/u/155700084?v=4" width="100px;" loading=lazy /><br /><sub><b>Sam K</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=hashcatHitman" title="Documentation">📖</a> <a href="#promotion-hashcatHitman" title="Promotion">📣</a> <a href="#question-hashcatHitman" title="Answering Questions">💬</a></td>
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/hashcatHitman"><img src="https://avatars.githubusercontent.com/u/155700084?v=4" width="100px;" loading=lazy /><br /><sub><b>Sam K</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=hashcatHitman" title="Documentation">📖</a> <a href="#promotion-hashcatHitman" title="Promotion">📣</a> <a href="#question-hashcatHitman" title="Answering Questions">💬</a></td>
|
||||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Spirizer"><img src="https://avatars.githubusercontent.com/u/51120100?v=4" width="100px;" loading=lazy /><br /><sub><b>Spirizer</b></sub></a><br /><a href="#translation-Spirizer" title="Translation">🌍</a></td>
|
|
||||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/jordbm"><img src="https://avatars.githubusercontent.com/u/160433264?v=4" width="100px;" loading=lazy /><br /><sub><b>jordbm</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jordbm" title="Documentation">📖</a> <a href="#maintenance-jordbm" title="Maintenance">🚧</a> <a href="#security-jordbm" title="Security">🛡️</a></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
<tfoot>
|
<tfoot>
|
||||||
|
@ -1,8 +1,4 @@
|
|||||||
authors:
|
authors:
|
||||||
aprilfools:
|
|
||||||
name: Anita Key
|
|
||||||
description: Government Liaison
|
|
||||||
avatar: https://github.com/privacyguides.png
|
|
||||||
contributors:
|
contributors:
|
||||||
type: Organization
|
type: Organization
|
||||||
name: Privacy Guides
|
name: Privacy Guides
|
||||||
@ -40,13 +36,6 @@ authors:
|
|||||||
name: fria
|
name: fria
|
||||||
description: Team Member
|
description: Team Member
|
||||||
avatar: https://github.com/friadev.png
|
avatar: https://github.com/friadev.png
|
||||||
jordan:
|
|
||||||
name: Jordan Warne
|
|
||||||
description: Video Producer
|
|
||||||
avatar: https://forum-cdn.privacyguides.net/user_avatar/discuss.privacyguides.net/jordan/288/7793_2.png
|
|
||||||
mastodon:
|
|
||||||
username: jw
|
|
||||||
instance: social.lol
|
|
||||||
jonah:
|
jonah:
|
||||||
name: Jonah Aragon
|
name: Jonah Aragon
|
||||||
description: Project Director
|
description: Project Director
|
||||||
|
Before Width: | Height: | Size: 93 KiB |
Before Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 109 KiB |
Before Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 231 KiB |
Before Width: | Height: | Size: 268 KiB |
Before Width: | Height: | Size: 203 KiB |
Before Width: | Height: | Size: 234 KiB |
Before Width: | Height: | Size: 200 KiB |
Before Width: | Height: | Size: 180 KiB |
Before Width: | Height: | Size: 122 KiB |
Before Width: | Height: | Size: 202 KiB |
Before Width: | Height: | Size: 222 KiB |
Before Width: | Height: | Size: 230 KiB |
Before Width: | Height: | Size: 224 KiB |
Before Width: | Height: | Size: 228 KiB |
Before Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 198 KiB |
Before Width: | Height: | Size: 258 KiB |
Before Width: | Height: | Size: 240 KiB |
Before Width: | Height: | Size: 200 KiB |
Before Width: | Height: | Size: 203 KiB |
Before Width: | Height: | Size: 494 KiB |
Before Width: | Height: | Size: 263 KiB |
Before Width: | Height: | Size: 273 KiB |
Before Width: | Height: | Size: 241 KiB |
Before Width: | Height: | Size: 218 KiB |
Before Width: | Height: | Size: 236 KiB |
Before Width: | Height: | Size: 257 KiB |
Before Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 49 KiB |
Before Width: | Height: | Size: 48 KiB |
Before Width: | Height: | Size: 167 KiB |
Before Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 265 KiB |
Before Width: | Height: | Size: 173 KiB |
Before Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 296 KiB |
Before Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 48 KiB |
Before Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 47 KiB |
Before Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 210 KiB |
Before Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 212 KiB |
Before Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 183 KiB |
Before Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 441 KiB |
Before Width: | Height: | Size: 224 KiB |
Before Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 220 KiB |
Before Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 80 KiB |
Before Width: | Height: | Size: 292 KiB |
Before Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 221 KiB |
Before Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 6.5 KiB |
Before Width: | Height: | Size: 246 KiB |
Before Width: | Height: | Size: 89 KiB |
Before Width: | Height: | Size: 115 KiB |
Before Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 76 KiB |
@ -1,141 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
||||||
<svg width="100%" height="100%" viewBox="0 0 1920 1080" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
|
||||||
<rect x="0" y="0" width="1920" height="1080" style="fill:rgb(0,51,153);"/>
|
|
||||||
<g transform="matrix(2.55845,0,0,2.55845,597.249,537.627)">
|
|
||||||
<g transform="matrix(1,0,0,1,-24,-24)">
|
|
||||||
<g transform="matrix(2,0,0,2,0,0)">
|
|
||||||
<rect x="0" y="0" width="24" height="24" style="fill:none;fill-rule:nonzero;"/>
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(2,0,0,2,0,0)">
|
|
||||||
<path d="M12.65,10C11.83,7.67 9.61,6 7,6C3.69,6 1,8.69 1,12C1,15.31 3.69,18 7,18C9.61,18 11.83,16.33 12.65,14L17,14L17,18L21,18L21,14L23,14L23,10L12.65,10ZM7,14C5.9,14 5,13.1 5,12C5,10.9 5.9,10 7,10C8.1,10 9,10.9 9,12C9,13.1 8.1,14 7,14Z" style="fill:rgb(255,204,0);fill-rule:nonzero;"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(2.55845,0,0,2.55845,1322.75,537.627)">
|
|
||||||
<g transform="matrix(1,0,0,1,-24,-24)">
|
|
||||||
<g transform="matrix(2,0,0,2,0,0)">
|
|
||||||
<rect x="0" y="0" width="24" height="24" style="fill:none;fill-rule:nonzero;"/>
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(2,0,0,2,0,0)">
|
|
||||||
<g>
|
|
||||||
<path d="M2,17L22,17L22,19L2,19L2,17ZM3.15,12.95L4,11.47L4.85,12.95L6.15,12.2L5.3,10.72L7,10.72L7,9.22L5.3,9.22L6.15,7.75L4.85,7L4,8.47L3.15,7L1.85,7.75L2.7,9.22L1,9.22L1,10.72L2.7,10.72L1.85,12.2L3.15,12.95ZM9.85,12.2L11.15,12.95L12,11.47L12.85,12.95L14.15,12.2L13.3,10.72L15,10.72L15,9.22L13.3,9.22L14.15,7.75L12.85,7L12,8.47L11.15,7L9.85,7.75L10.7,9.22L9,9.22L9,10.72L10.7,10.72L9.85,12.2ZM23,9.22L21.3,9.22L22.15,7.75L20.85,7L20,8.47L19.15,7L17.85,7.75L18.7,9.22L17,9.22L17,10.72L18.7,10.72L17.85,12.2L19.15,12.95L20,11.47L20.85,12.95L22.15,12.2L21.3,10.72L23,10.72L23,9.22Z" style="fill:rgb(255,204,0);fill-rule:nonzero;"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(2.55845,0,0,2.55845,642.604,709.746)">
|
|
||||||
<g transform="matrix(1,0,0,1,-24,-24)">
|
|
||||||
<g transform="matrix(2,0,0,2,0,0)">
|
|
||||||
<rect x="0" y="0" width="24" height="24" style="fill:none;"/>
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(2,0,0,2,0,0)">
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<path d="M20,18C21.1,18 22,17.1 22,16L22,6C22,4.9 21.1,4 20,4L4,4C2.9,4 2,4.9 2,6L2,16C2,17.1 2.9,18 4,18L0,18L0,20L24,20L24,18L20,18ZM4,6L20,6L20,16L4,16L4,6Z" style="fill:rgb(255,204,0);fill-rule:nonzero;"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(2.55845,0,0,2.55845,1279.34,709.746)">
|
|
||||||
<g transform="matrix(1,0,0,1,-24,-24)">
|
|
||||||
<g transform="matrix(2,0,0,2,0,0)">
|
|
||||||
<rect x="0" y="0" width="24" height="24" style="fill:none;fill-rule:nonzero;"/>
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(2,0,0,2,0,0)">
|
|
||||||
<path d="M20,13L4,13C3.45,13 3,13.45 3,14L3,20C3,20.55 3.45,21 4,21L20,21C20.55,21 21,20.55 21,20L21,14C21,13.45 20.55,13 20,13ZM7,19C5.9,19 5,18.1 5,17C5,15.9 5.9,15 7,15C8.1,15 9,15.9 9,17C9,18.1 8.1,19 7,19ZM20,3L4,3C3.45,3 3,3.45 3,4L3,10C3,10.55 3.45,11 4,11L20,11C20.55,11 21,10.55 21,10L21,4C21,3.45 20.55,3 20,3ZM7,9C5.9,9 5,8.1 5,7C5,5.9 5.9,5 7,5C8.1,5 9,5.9 9,7C9,8.1 8.1,9 7,9Z" style="fill:rgb(255,204,0);fill-rule:nonzero;"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(2.55845,0,0,2.55845,1144.75,858.679)">
|
|
||||||
<g transform="matrix(1,0,0,1,-24,-24)">
|
|
||||||
<g transform="matrix(2,0,0,2,0,0)">
|
|
||||||
<rect x="0" y="0" width="24" height="24" style="fill:none;fill-rule:nonzero;"/>
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(2,0,0,2,0,0)">
|
|
||||||
<path d="M9,17L7,17L7,10L9,10L9,17ZM13,17L11,17L11,7L13,7L13,17ZM17,17L15,17L15,13L17,13L17,17ZM19.5,19.1L4.5,19.1L4.5,5L19.5,5L19.5,19.1ZM19.5,3L4.5,3C3.4,3 2.5,3.9 2.5,5L2.5,19C2.5,20.1 3.4,21 4.5,21L19.5,21C20.6,21 21.5,20.1 21.5,19L21.5,5C21.5,3.9 20.6,3 19.5,3Z" style="fill:rgb(255,204,0);fill-rule:nonzero;"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(2.55845,0,0,2.55845,776.985,858.679)">
|
|
||||||
<g transform="matrix(1,0,0,1,-24,-24)">
|
|
||||||
<g transform="matrix(2,0,0,2,0,0)">
|
|
||||||
<rect x="0" y="0" width="24" height="24" style="fill:none;fill-rule:nonzero;"/>
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(2,0,0,2,0,0)">
|
|
||||||
<path d="M17,12L12,12L12,17L17,17L17,12ZM16,1L16,3L8,3L8,1L6,1L6,3L5,3C3.89,3 3.01,3.9 3.01,5L3,19C3,20.1 3.89,21 5,21L19,21C20.1,21 21,20.1 21,19L21,5C21,3.9 20.1,3 19,3L18,3L18,1L16,1ZM19,19L5,19L5,8L19,8L19,19Z" style="fill:rgb(255,204,0);fill-rule:nonzero;"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(2.55845,0,0,2.55845,960.869,904.116)">
|
|
||||||
<g transform="matrix(1,0,0,1,-24,-24)">
|
|
||||||
<g transform="matrix(2,0,0,2,0,0)">
|
|
||||||
<rect x="0" y="0" width="24" height="24" style="fill:none;fill-rule:nonzero;"/>
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(2,0,0,2,0,0)">
|
|
||||||
<path d="M19,2L14.82,2C14.4,0.84 13.3,0 12,0C10.7,0 9.6,0.84 9.18,2L5,2C3.9,2 3,2.9 3,4L3,20C3,21.1 3.9,22 5,22L19,22C20.1,22 21,21.1 21,20L21,4C21,2.9 20.1,2 19,2ZM12,2C12.55,2 13,2.45 13,3C13,3.55 12.55,4 12,4C11.45,4 11,3.55 11,3C11,2.45 11.45,2 12,2ZM19,20L5,20L5,4L7,4L7,7L17,7L17,4L19,4L19,20Z" style="fill:rgb(255,204,0);fill-rule:nonzero;"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(2.55845,0,0,2.55845,960.869,175.884)">
|
|
||||||
<g transform="matrix(1,0,0,1,-24,-24)">
|
|
||||||
<g transform="matrix(2,0,0,2,0,0)">
|
|
||||||
<rect x="0" y="0" width="24" height="24" style="fill:none;fill-rule:nonzero;"/>
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(2,0,0,2,0,0)">
|
|
||||||
<path d="M20,4L4,4C2.9,4 2.01,4.9 2.01,6L2,18C2,19.1 2.9,20 4,20L20,20C21.1,20 22,19.1 22,18L22,6C22,4.9 21.1,4 20,4ZM20,8L12,13L4,8L4,6L12,11L20,6L20,8Z" style="fill:rgb(255,204,0);fill-rule:nonzero;"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(2.55845,0,0,2.55845,1144.75,223.173)">
|
|
||||||
<g transform="matrix(1,0,0,1,-24,-24)">
|
|
||||||
<g transform="matrix(2,0,0,2,0,0)">
|
|
||||||
<rect x="0" y="0" width="24" height="24" style="fill:none;"/>
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(2,0,0,2,0,0)">
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<path d="M14,19.88L14,22L16.12,22L21.29,16.83L19.17,14.71L14,19.88Z" style="fill:rgb(255,204,0);fill-rule:nonzero;"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path d="M20,8L14,2L6,2C4.9,2 4.01,2.9 4.01,4L4,20C4,21.1 4.89,22 5.99,22L12,22L12,19.05L20,11.05L20,8ZM13,9L13,3.5L18.5,9L13,9Z" style="fill:rgb(255,204,0);fill-rule:nonzero;"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path d="M22.71,14L22,13.29C21.61,12.9 20.98,12.9 20.59,13.29L19.88,14L22,16.12L22.71,15.41C23.1,15.02 23.1,14.39 22.71,14Z" style="fill:rgb(255,204,0);fill-rule:nonzero;"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(2.55845,0,0,2.55845,776.985,223.173)">
|
|
||||||
<g transform="matrix(1,0,0,1,-24,-24)">
|
|
||||||
<g transform="matrix(2,0,0,2,0,0)">
|
|
||||||
<rect x="0" y="0" width="24" height="24" style="fill:none;"/>
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(2,0,0,2,0,0)">
|
|
||||||
<path d="M19.3,16.9C19.7,16.2 20,15.4 20,14.5C20,12 18,10 15.5,10C13,10 11,12 11,14.5C11,17 13,19 15.5,19C16.4,19 17.2,18.7 17.9,18.3L21.1,21.5L22.5,20.1L19.3,16.9ZM15.5,17C14.1,17 13,15.9 13,14.5C13,13.1 14.1,12 15.5,12C16.9,12 18,13.1 18,14.5C18,15.9 16.9,17 15.5,17ZM12,20L12,22C6.48,22 2,17.52 2,12C2,6.48 6.48,2 12,2C16.84,2 20.87,5.44 21.8,10L19.73,10C19.09,7.54 17.33,5.53 15,4.59L15,5C15,6.1 14.1,7 13,7L11,7L11,9C11,9.55 10.55,10 10,10L8,10L8,12L10,12L10,15L9,15L4.21,10.21C4.08,10.79 4,11.38 4,12C4,16.41 7.59,20 12,20Z" style="fill:rgb(255,204,0);fill-rule:nonzero;"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(2.55845,0,0,2.55845,1279.34,365.507)">
|
|
||||||
<g transform="matrix(1,0,0,1,-24,-24)">
|
|
||||||
<g transform="matrix(2,0,0,2,0,0)">
|
|
||||||
<rect x="0" y="0" width="24" height="24" style="fill:none;fill-rule:nonzero;"/>
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(2,0,0,2,0,0)">
|
|
||||||
<path d="M20,2L4,2C2.9,2 2.01,2.9 2.01,4L2,22L6,18L20,18C21.1,18 22,17.1 22,16L22,4C22,2.9 21.1,2 20,2ZM6,9L18,9L18,11L6,11L6,9ZM14,14L6,14L6,12L14,12L14,14ZM18,8L6,8L6,6L18,6L18,8Z" style="fill:rgb(255,204,0);fill-rule:nonzero;"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(2.55845,0,0,2.55845,642.604,365.507)">
|
|
||||||
<g transform="matrix(1,0,0,1,-24,-24)">
|
|
||||||
<g transform="matrix(2,0,0,2,0,0)">
|
|
||||||
<rect x="0" y="0" width="24" height="24" style="fill:none;fill-rule:nonzero;"/>
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(2,0,0,2,0,0)">
|
|
||||||
<path d="M20.5,3L20.34,3.03L15,5.1L9,3L3.36,4.9C3.15,4.97 3,5.15 3,5.38L3,20.5C3,20.78 3.22,21 3.5,21L3.66,20.97L9,18.9L15,21L20.64,19.1C20.85,19.03 21,18.85 21,18.62L21,3.5C21,3.22 20.78,3 20.5,3ZM15,19L9,16.89L9,5L15,7.11L15,19Z" style="fill:rgb(255,204,0);fill-rule:nonzero;"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 9.4 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 379 KiB |
@ -1,4 +0,0 @@
|
|||||||
<svg width="72" height="72" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" data-reactroot="">
|
|
||||||
<path stroke-linejoin="round" stroke-linecap="round" stroke-width="0" stroke="#ffffff" fill="#eb7c0f" d="M12 22C9.28 22 4.57 19.33 4.05 14.99C3.69 11.95 5.51 9.6 6.01 8.99C6.42 11.1 7.53 12.7 8.95 12.99C9.21 13.04 9.54 13.06 9.93 12.99C9.82 10.67 10 6.33 12.86 3C13.17 2.63 13.66 2.3 14 2C14.24 4.64 14.98 6.12 15.8 7C16.91 8.19 18.59 9 19.48 11.28C19.52 11.37 19.63 11.65 19.72 12C20.34 14.38 20.04 17.88 17.76 19.99C15.85 21.76 13.35 22 13 22C12.49 22 12.56 22 12 22Z" transform="translate(2,2)"></path><path stroke-linejoin="round" stroke-linecap="round" stroke-width="1" stroke="#ffffff" fill="none" d="M12 22C9.28 22 4.57 19.33 4.05 14.99C3.69 11.95 5.51 9.6 6.01 8.99C6.42 11.1 7.53 12.7 8.95 12.99C9.21 13.04 9.54 13.06 9.93 12.99C9.82 10.67 10 6.33 12.86 3C13.17 2.63 13.66 2.3 14 2C14.24 4.64 14.98 6.12 15.8 7C16.91 8.19 18.59 9 19.48 11.28C19.52 11.37 19.63 11.65 19.72 12C20.34 14.38 20.04 17.88 17.76 19.99C15.85 21.76 13.35 22 13 22C12.49 22 12.56 22 12 22Z"></path>
|
|
||||||
<path stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" stroke-width="0" stroke="#ffffff" fill="#FDD17B" d="M14 16C12.96 17.04 11.41 17.43 10 17C11.13 18.09 12.7 18.5 14 18C16.01 17.24 16.83 14.54 16 13C15.74 12.53 15.36 12.21 15 12C15.43 13.41 15.04 14.96 14 16Z" transform="translate(2,2)"></path><path stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" stroke-width="1" stroke="#ffffff" fill="none" d="M14 16C12.96 17.04 11.41 17.43 10 17C11.13 18.09 12.7 18.5 14 18C16.01 17.24 16.83 14.54 16 13C15.74 12.53 15.36 12.21 15 12C15.43 13.41 15.04 14.96 14 16Z"></path>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 301 KiB |
Before Width: | Height: | Size: 1006 KiB |
Before Width: | Height: | Size: 1.0 MiB |
Before Width: | Height: | Size: 1.0 MiB |
Before Width: | Height: | Size: 429 KiB |
Before Width: | Height: | Size: 168 KiB |
@ -1,112 +0,0 @@
|
|||||||
---
|
|
||||||
date:
|
|
||||||
created: 2025-05-06T21:45:00Z
|
|
||||||
categories:
|
|
||||||
- News
|
|
||||||
authors:
|
|
||||||
- em
|
|
||||||
description: Age verification laws and propositions forcing platforms to restrict content accessed by children and teens have been multiplying in recent years. The problem is, implementing such measure necessarily requires identifying each user accessing this content, one way or another. This is bad news for your privacy.
|
|
||||||
schema_type: AnalysisNewsArticle
|
|
||||||
preview:
|
|
||||||
cover: blog/assets/images/age-verification-wants-your-face/ageverification-cover.webp
|
|
||||||
---
|
|
||||||
|
|
||||||
# Age Verification Wants Your Face, and Your Privacy
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
<small aria-hidden="true">Photo: Kyle Glenn / Unsplash</small>
|
|
||||||
|
|
||||||
Age verification laws and propositions forcing platforms to restrict content accessed by children and teens have been multiplying in recent years. The problem is, implementing such measures necessarily requires identifying each user accessing this content, one way or another. This is bad news for your privacy.<!-- more -->
|
|
||||||
|
|
||||||
For a few years now, several legislators in North America, Europe, and Australia have expressed concern about children and teens accessing certain types of content online. While there is no doubt some online content can be worrisome, implementing a technological solution for this is [extremely problematic](https://www.jonaharagon.com/posts/age-verification-is-incompatible-with-the-internet/).
|
|
||||||
|
|
||||||
By mandating platforms to be legally responsible to verify a user's age, regulators effectively force them to identify each user requesting access to content deemed inappropriate under a certain age threshold.
|
|
||||||
|
|
||||||
If these regulations continue to proliferate, this could lead to the end of pseudonymity online.
|
|
||||||
|
|
||||||
## How can age be verified online
|
|
||||||
|
|
||||||
Verifying age online is [difficult](https://www.woodhullfoundation.org/fact-checked/online-age-verification-is-not-the-same-as-flashing-your-id-at-a-liquor-store/). There isn't any magical solution to it, it's either recording how a user looks or scanning official documents.
|
|
||||||
|
|
||||||
Conducting verification "on-device" offers only few additional protections considering this information still has to be checked and reported with an external service, somehow.
|
|
||||||
|
|
||||||
Moreover, processes used to keep this data "on-device" are often opaque. Taking into account how valuable this information is, it becomes very difficult to trust any for-profit third-party services which such a sensitive task.
|
|
||||||
|
|
||||||
Users' faces and official documents are two types of very sensitive information. Who becomes responsible to collect, process, store, and safeguard this data? With whom does this data get shared, and for which other purposes? And how accurate is this data anyway?
|
|
||||||
|
|
||||||
### Facial scans
|
|
||||||
|
|
||||||
Some platforms and third-party providers of the rapidly growing "[identity verification industry](https://www.businessresearchinsights.com/market-reports/digital-identity-verification-market-118180)" have started to use facial recognition and face scan systems in order to determine a user's age.
|
|
||||||
|
|
||||||
The problem is, the systems are [horrible for everyone's privacy](https://www.liberties.eu/en/stories/facial-recognition-privacy-concerns/44518), extremely problematic to use due to [racist and gendered biases](https://www.aclu-mn.org/en/news/biased-technology-automated-discrimination-facial-recognition), [inaccurate](https://www.eff.org/deeplinks/2025/01/face-scans-estimate-our-age-creepy-af-and-harmful) to determine the correct age, and on top of all that, [can be cheated](https://www.theregister.com/2022/05/22/ai_in_brief/).
|
|
||||||
|
|
||||||
### Official documents
|
|
||||||
|
|
||||||
The second solution is to require users to provide an official piece of ID. Considering an official ID often contain a photo, full legal name, date of birth, home address, and government specific codes, this is even worse.
|
|
||||||
|
|
||||||
All this sensitive data then gets collected by either the platform itself or a third-party provider with little oversight or incentive to protect this data at all. Leaks and breaches for this enormous data trove are just around the corner. Unfortunately, this isn't speculative, [data leaks have already occurred](https://www.404media.co/id-verification-service-for-tiktok-uber-x-exposed-driver-licenses-au10tix/).
|
|
||||||
|
|
||||||
The more copies of your official documents exist online, the greater the risk this data *will get exposed*, and the less value this document has to actually identify you when it's *truly* needed.
|
|
||||||
|
|
||||||
And again, this sort of verification is easy to cheat. Any determined teenager will soon learn how to either create a fake ID, use someone else's ID, or go around this verification system in another way.
|
|
||||||
|
|
||||||
Age verification laws will *without a doubt* support a flourishing criminal industry to provide fake or stolen IDs even more easily online.
|
|
||||||
|
|
||||||
## Where age verification is (or will be) required
|
|
||||||
|
|
||||||
In April this year, [Discord started to test age verification systems](https://www.theverge.com/news/650493/discord-age-verification-face-id-scan-experiment) using facial or ID scans, as a way to comply with [Australia](https://www.bbc.co.uk/news/articles/c89vjj0lxx9o)'s and [UK](https://www.theverge.com/2023/10/26/23922397/uk-online-safety-bill-law-passed-royal-assent-moderation-regulation)'s new laws.
|
|
||||||
|
|
||||||
This measure only applies to access certain protected posts for users located in Australia and the United Kingdom and at this time, but don't be surprised if it soon gets implemented at the account level for users everywhere.
|
|
||||||
|
|
||||||
In the [United States](https://action.freespeechcoalition.com/age-verification-resources/state-avs-laws/), many states have already passed some types of age verification laws, and several others have proposed such laws. In [Canada](https://www.eff.org/deeplinks/2024/09/canadas-leaders-must-reject-overbroad-age-verification-bill) and [Europe](https://digital-strategy.ec.europa.eu/en/funding/call-tenders-development-consultancy-and-support-age-verification-solution), legislators have also been pushing for similar regulations to block content online subject to age verification.
|
|
||||||
|
|
||||||
There is no doubt the more countries pass similar prohibitive laws, the more other countries will soon follow.
|
|
||||||
|
|
||||||
Some hope however, this month a US federal judge ruled an age verification [law in Arkansas unconstitutional](https://thehill.com/homenews/state-watch/5228836-judge-blocks-social-media-age-verification-law-in-arkansas/).
|
|
||||||
|
|
||||||
## Who decides what is sensitive content
|
|
||||||
|
|
||||||
When talking about age verification, most assume this only applies to obvious pornographic content. However, many of these laws have [much wider reach](https://www.eff.org/deeplinks/2025/01/impact-age-verification-measures-goes-beyond-porn-sites).
|
|
||||||
|
|
||||||
For example, the Australian law prohibits access to social media altogether for anyone under the age of 16. This means that, once the law comes into full effect after its transitional period, anyone who uses social media in Australia will have to prove they are older than this age. It is likely that all Australian users will have to provide some form of identifying data to continue using their social media accounts. **This is a privacy nightmare.**
|
|
||||||
|
|
||||||
When laws target specific content, definition of what is appropriate and what isn't is often too broad. Moreover, this definition is subject to change from one administration to another.
|
|
||||||
|
|
||||||
There are also wide differences from one country to another. For example, some countries sadly consider simple discussions of gender identity or sexual orientation to be sensitive content. What is deemed inappropriate to children in one culture might not be the same in another.
|
|
||||||
|
|
||||||
Automating this sort of censorship leads to a lot of misfiring. There has already been numerous instances of [breastfeeding photos mislabelled](https://www.cbc.ca/news/world/facebook-clarifies-breastfeeding-pics-ok-updates-rules-1.2997124) for nudity. Important educational material for sex education could get censored and inaccessible to children, who critically need access to it *before* adulthood.
|
|
||||||
|
|
||||||
Who will decide which content should be censored and which shouldn't? Will countries hosting the big tech platforms end up having a greater decision power in the matter? Will platforms simply decide to apply the strongest level of restriction worldwide?
|
|
||||||
|
|
||||||
## Age verification isn't effective
|
|
||||||
|
|
||||||
Even if we could somehow find a global consensus that is perfectly ethical and never misfires on which content children shouldn't access, it will likely fail.
|
|
||||||
|
|
||||||
Children, and teenagers especially, are and have always been incredibly effective at going around such limitation to feed their curious minds.
|
|
||||||
|
|
||||||
First, there are technical tools such as VPNs and proxies of all sort to go around location-based restrictions. Then, there's the classic fake ID, and its modern evolution: deepfake face. There will also be without a doubt a growing market of pre-verified "adult" accounts up for sale online.
|
|
||||||
|
|
||||||
Perhaps age verification measures will work for a couple of months, until products to evade it get the word out, then they'll become useless. Only leaving the ashes of your social media legal consenting adult pseudonymity in its path.
|
|
||||||
|
|
||||||
## Why it's bad news for everyone's privacy
|
|
||||||
|
|
||||||
Age verification will require all platforms and/or third-party identification service providers to collect an enormous trove of sensitive data on everyone.
|
|
||||||
|
|
||||||
This goes against all principles of data minimization, generally a vital part of data protection regulations.
|
|
||||||
|
|
||||||
Daily occurrences of data breach incidents have taught us we cannot trust these services to safeguard our data. Data breaches for this sensitive information are only a matter of time.
|
|
||||||
|
|
||||||
The concentration of such valuable data will likely be monetized and resold either by the platforms themselves, by the for-profit third-party "age assurance" providers they use, or eventually by the criminals who stole it from them.
|
|
||||||
|
|
||||||
This data trove will include face scans of children with their location (trying to pass as adults), and faces and official documents from every adult in the world using social media, if this kind of regulation gets implemented at large.
|
|
||||||
|
|
||||||
**The privacy and safety implications of this are absolutely disastrous**.
|
|
||||||
|
|
||||||
## Age verification is not the solution
|
|
||||||
|
|
||||||
Sadly, age verification legislation will not help safeguard children from harmful content online, but it will effectively remove protection for anyone needing pseudonymity online to [stay safe](privacy-means-safety.md). Moreover, it will put everyone at a much greater risk of victimization by identify theft, impersonation, stalking, and worse.
|
|
||||||
|
|
||||||
Despite the perhaps well-intended legislators, technological solutions aren't always adequate to solve every problem we have. Here again, education and content moderation are likely much better ways to deal with this sort of issues.
|
|
||||||
|
|
||||||
In the meantime, don't be surprised if you cross a teenager on the street suddenly pointing their phone to scan *your* adult face, or a young relative looking in your wallet. They probably won't be looking for your money, but most likely for your adult ID.
|
|