1
1
mirror of https://github.com/privacyguides/privacyguides.org.git synced 2026-06-11 21:09:12 +00:00

Compare commits

..

1 Commits

Author SHA1 Message Date
Daniel Gray 7aba35eccb Add mention of Libredirect (#1977) 2023-02-16 15:03:13 +10:30
588 changed files with 9373 additions and 18679 deletions
-14
View File
@@ -1,14 +0,0 @@
{
"features": {
"ghcr.io/devcontainers/features/hugo:1": {
"version": "1.1.3",
"resolved": "ghcr.io/devcontainers/features/hugo@sha256:15465c956810aa164c9644b6df5ca36f6cac3e7a86b7dcc474a1fb830b21c509",
"integrity": "sha256:15465c956810aa164c9644b6df5ca36f6cac3e7a86b7dcc474a1fb830b21c509"
},
"ghcr.io/devcontainers/features/node:1": {
"version": "1.7.1",
"resolved": "ghcr.io/devcontainers/features/node@sha256:8c0de46939b61958041700ee89e3493f3b2e4131a06dc46b4d9423427d06e5f6",
"integrity": "sha256:8c0de46939b61958041700ee89e3493f3b2e4131a06dc46b4d9423427d06e5f6"
}
}
}
-32
View File
@@ -1,32 +0,0 @@
{
"image": "mcr.microsoft.com/devcontainers/go",
"features": {
"ghcr.io/devcontainers/features/hugo:1": {
"extended": true,
"version": "0.156.0"
},
"ghcr.io/devcontainers/features/node:1": {}
},
"customizations": {
"vscode": {
"extensions": [
"mhutchie.git-graph",
"esbenp.prettier-vscode",
"tamasfe.even-better-toml",
"budparr.language-hugo-vscode",
"EditorConfig.EditorConfig",
"github.vscode-github-actions",
"bierner.github-markdown-preview",
"ms-vsliveshare.vsliveshare",
"ltex-plus.vscode-ltex-plus",
"yzhang.markdown-all-in-one",
"redhat.vscode-yaml",
"rvben.rumdl",
"kaellarkin.hugo-shortcode-syntax"
]
}
},
"forwardPorts": [
1313
]
}
-38
View File
@@ -1,38 +0,0 @@
# Copyright (c) 2024 Jonah Aragon <jonah@triplebit.net>
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
# IN THE SOFTWARE.
# EditorConfig is awesome: https://EditorConfig.org
# top-most EditorConfig file
root = true
# Unix-style newlines with a newline ending every file
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[{*.caddy,*.example-caddy,Caddyfile}]
charset = utf-8
indent_style = tab
tab_width = 4
-20
View File
@@ -1,23 +1,3 @@
# Copyright (c) 2020-2023 Jonah Aragon <jonah@triplebit.net>
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
# IN THE SOFTWARE.
# Auto detect text files and perform LF normalization
* text=auto
+9 -57
View File
@@ -1,66 +1,18 @@
# Org
# Additional Co-Owners are added to the TOP of this file
# High-traffic pages
/docs/index.en.md @jonaharagon @dngray
/theme/overrides/ @jonaharagon
# Org
/docs/about/ @jonaharagon
CODE_OF_CONDUCT.md @jonaharagon
CITATION.cff @jonaharagon
LICENSE @jonaharagon @dngray
LICENSE-CODE @jonaharagon
CITATION.cff
LICENSE @jonaharagon
README.md @jonaharagon @dngray
# Config
/mkdocs.yml @jonaharagon
/mkdocs.blog.yml @jonaharagon
/crowdin.yml @jonaharagon
/includes/ @jonaharagon
# Ops
Dockerfile @jonaharagon
/Pipfile @jonaharagon
/Pipfile.lock @jonaharagon
/.github/ @jonaharagon
/run.sh @jonaharagon
/modules/ @jonaharagon
# High-traffic pages
/blog/index.md @jonaharagon @freddy-m
/docs/index.md @jonaharagon @dngray
/theme/home.html @jonaharagon @dngray
/theme/main.html @jonaharagon
/theme/blog-post.html @jonaharagon
/theme/partials/ @jonaharagon
/theme/layouts/ @jonaharagon
# Financial-Related
/docs/about/donate.md @jonaharagon @SamsungGalaxyPlayer
/docs/cryptocurrency.md @jonaharagon @SamsungGalaxyPlayer
/docs/financial-services.md @jonaharagon @SamsungGalaxyPlayer
/docs/advanced/payments.md @jonaharagon @SamsungGalaxyPlayer
# Blog authors
/blog/.authors.yml @jonaharagon @dngray @freddy-m
/blog/author/ @jonaharagon @dngray @freddy-m
/blog/author/dngray.md @dngray
/blog/author/freddy.md @freddy-m
/blog/author/jonah.md @jonaharagon
/blog/author/niek-de-wilde.md @blacklight447
# Blog posts
/blog/posts/ @jonaharagon
/blog/posts/firefox-privacy-2021-update.md @dngray
/blog/posts/firefox-privacy.md @jonaharagon
/blog/posts/hide-nothing.md @freddy-m
/blog/posts/macos-ventura-privacy-security-updates.md @jonaharagon
/blog/posts/move-fast-and-break-things.md @freddy-m
/blog/posts/mozilla-disappoints-us-yet-again-2.md @jonaharagon
/blog/posts/privacy-guides-partners-with-magic-grants-501-c-3.md @jonaharagon
/blog/posts/proton-wallet-review.md @jonaharagon
/blog/posts/restrict-act.md @jonaharagon
/blog/posts/the-trouble-with-vpn-and-privacy-review-sites.md @jonaharagon
/blog/posts/virtual-insanity.md @freddy-m
/blog/posts/welcome-to-privacy-guides.md @jonaharagon
/.well-known/ @jonaharagon
-53
View File
@@ -1,53 +0,0 @@
# Community Code of Conduct
**We pledge** to make our community a harassment-free experience for everyone.
**We strive** to create a positive environment, using welcoming and inclusive language, and being respectful of the viewpoints of others.
**We do not allow** inappropriate or otherwise unacceptable behavior, such as sexualized language, trolling and insulting comments, or otherwise promoting intolerance or harassment.
## Community Standards
What we expect from members of our communities:
1. **Do not spread misinformation**
We are creating an evidence-based educational community around information privacy and security, not an information home for conspiracy theories. For example, when making a claim that a certain piece of software is malicious or that certain telemetry data is privacy invasive, explain in detail what is collected and how it collected. Claims of this nature must be backed by technical evidence.
2. **Do not abuse our willingness to help**
Our community members are not free tech support. We are happy to help with specific steps for your privacy journey, if you are willing to put in effort. We are not obligated to answer endless, repetitive questions about general computer problems solvable with a simple internet search. **Do not** become a [help vampire](https://slash7.com/2006/12/22/vampires).
3. **Behave in a positive and constructive manner**
Examples of behavior that contributes to a positive environment for our community include:
- Being respectful of differing opinions, viewpoints, and experiences.
- Demonstrating empathy and kindness toward others.
- Focusing on what is best not just for us as overseers, but for the overall community.
- Giving and gracefully accepting constructive feedback within our community while growing and improving.
- Operating with a communal mindset at all times.
## Unacceptable Behavior
The following behaviors are considered harassment and are unacceptable within our community:
- Any other conduct which would reasonably be considered inappropriate in a professional setting.
- Public and/or private harassment of any kind.
- Publishing others' private information, such as a physical address and/or an email address, without their explicit permission.
- The use of sexualized language or imagery, and sexual attention or advances of any kind.
- Trolling, insulting and/or derogatory comments, including personal or political attacks.
## Scope
Our Code of Conduct applies within all project spaces, as well as when an individual is representing the Privacy Guides project in other communities.
We are responsible for clarifying the standards of our community and have the right to remove or alter the comments of those participating within our community, as necessary and at our discretion.
## Contact
If you observe a problem on a platform like Matrix or Reddit, please contact our moderators on that platform via chat, direct message, or any designated "Modmail" system.
If you have a problem elsewhere, or a problem that our community moderators are unable to resolve, reach out to `jonah@privacyguides.org` and/or `dngray@privacyguides.org`.
All community leaders are obligated to respect the privacy and security of reporters for all incidents.
@@ -0,0 +1,8 @@
---
name: "Content Correction"
about: Report any inaccurate, incorrect, or outdated information on the website.
---
## Description
**URL of affected page:**
@@ -1,65 +0,0 @@
# Copyright (c) 2023 Jonah Aragon <jonah@triplebit.net>
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
# IN THE SOFTWARE.
name: "Content Correction"
description: Report any inaccurate, incorrect, or outdated information on the website.
labels: ["t:correction"]
body:
- type: markdown
attributes:
value: |
This form is for reporting verifiable issues with our website.
If you simply disagree with an opinion on the website, please open a discussion [on our forum](https://discuss.privacyguides.net) instead.
- type: input
attributes:
label: Affected page
description: Please let us know which page the incorrect information can be found on.
placeholder: "https://www.privacyguides.org/en/data-redaction"
validations:
required: true
- type: textarea
id: description
attributes:
label: Description
description: Please let us know what should be fixed.
placeholder: The Google Play Store link for ExifEraser is broken...
validations:
required: true
- type: textarea
id: source
attributes:
label: Sources
description: Please provide reliable sources that support the change you are requesting.
validations:
required: true
- type: checkboxes
id: checklist
attributes:
label: Before submitting
description: The Code of Conduct helps create a safe space for everyone. We require that everyone agrees to it.
options:
- label: I am reporting something that is verifiably incorrect, not a suggestion or opinion.
required: true
- label: I agree to the [Community Code of Conduct](https://www.privacyguides.org/coc).
required: true
@@ -0,0 +1,15 @@
---
name: "Website Issue"
about: Report a bug with the website. (NO CONTENT ISSUES)
---
<!--
READ ME FIRST:
This is NOT the place to request changes to the content of the website.
This is NOT the place to report issues with our services like Matrix.
This is ONLY for reporting bugs or technical issues with www.privacyguides.org, the website.
Please add screenshots if applicable.
-->
-100
View File
@@ -1,100 +0,0 @@
# Copyright (c) 2023 Jonah Aragon <jonah@triplebit.net>
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
# IN THE SOFTWARE.
name: "Website Issue"
description: Report a bug with the website.
labels: ["t:bug"]
assignees:
- jonaharagon
body:
- type: markdown
attributes:
value: |
This form is only for reporting a technical bug __with our website__, like broken images, broken CSS, issues with search or themes, etc.
This is not the place to report an issue with Matrix, Discourse, or our other hosted services.
If you want us to fix inaccurate information on the website, go back and use the content correction form.
If you want to make another suggestion, please [use our discussion forum](https://discuss.privacyguides.net) instead.
- type: textarea
id: description
attributes:
label: Bug description
description: |
Please give a detailed description of the bug.
Explain how the website does not behave as you would expect it to, and be as specific as possible.
If you have found a workaround or a fix for the problem too, please let us know.
validations:
required: true
- type: textarea
id: affected-pages
attributes:
label: Affected pages
description: |
Please list all pages where you've noticed this issue, or let us know if it affects every page on the site.
value: |
-
- type: dropdown
id: browser
attributes:
label: Browser
description: |
Please select the browser(s) you have noticed this issue with.
If your browser is not listed or the version is relevant, you may select _Other_ and provide more details in the description above.
multiple: true
options:
- Firefox
- Tor Browser
- Chrome
- Safari
- Edge
- Other
- type: dropdown
id: os
attributes:
label: Operating System
description: |
Please select the operating system(s) you have noticed this issue with.
multiple: true
options:
- Linux
- macOS
- Windows
- Android
- iOS
- Other
- type: checkboxes
id: checklist
attributes:
label: Before submitting
description: The Code of Conduct helps create a safe space for everyone. We require that everyone agrees to it.
options:
- label: I am reporting something that is broken on the website, not making a suggestion.
required: true
- label: I agree to the [Community Code of Conduct](https://www.privacyguides.org/coc).
required: true
- type: markdown
attributes:
value: Thank you for letting us know about this!
+2 -23
View File
@@ -1,29 +1,8 @@
# Copyright (c) 2020-2023 Jonah Aragon <jonah@triplebit.net>
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
# IN THE SOFTWARE.
blank_issues_enabled: false
contact_links:
- name: Suggest Adding or Removing a Tool
- name: Suggest a New Provider or Software
url: https://discuss.privacyguides.net/c/site-development/suggestions
about: Suggest something new for us to look at, or something we should remove.
- name: Suggest a New Guide
- name: Suggest a Guide
url: https://discuss.privacyguides.net/c/site-development/guide-suggestions
about: Suggest an area where you think guidance might be required.
- name: Ask a Question
+23 -5
View File
@@ -1,14 +1,32 @@
List of changes proposed in this PR:
-
<!--
<!-- SCROLL TO BOTTOM TO AGREE!:
Please use a descriptive title for your PR, it will be included in our changelog!
If you are making changes that you have a conflict of interest with, you MUST
Please share with us what you've changed.
If you are adding a software recommendation, give us a link to its website or
source code.
If you are making changes that you have a conflict of interest with, please
disclose this as well (this does not disqualify your PR by any means):
Conflict of interest contributions involve contributing about yourself,
family, friends, clients, employers, or your financial and other relationships.
ANY external relationship can trigger a conflict of interest.
Any external relationship can trigger a conflict of interest.
That someone has a conflict of interest is a description of a situation,
NOT a judgement about that person's opinions, integrity, or good faith.
If you have a conflict of interest, you MUST disclose who is paying you for
this contribution, who the client is (if for example, you are being paid by
an advertising agency), and any other relevant affiliations.
-->
<!-- Place an x in the boxes below, like: [x] -->
- [ ] Please check this box to confirm you have disclosed any relevant conflicts of interest in your post.
- [ ] Please check this box to confirm your agreement to grant Privacy Guides a perpetual, worldwide, non-exclusive, transferable, royalty-free, irrevocable license with the right to sublicense such rights through multiple tiers of sublicensees, to reproduce, modify, display, perform, relicense, and distribute your contribution as part of our project.
- [ ] Please check this box to confirm you are the sole author of this work, or that any additional authors will also reply to this PR on GitHub confirming their agreement to these terms.
<!-- What's this? When you submit a PR, you keep the Copyright for the work you
are contributing. We need you to agree to the above terms in order for us to
publish this contribution to our website. -->
+15
View File
@@ -0,0 +1,15 @@
version: 2
updates:
# Maintain dependencies for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
assignees:
- "jonaharagon"
reviewers:
- "jonaharagon"
labels:
- "fix:github_actions"
-79
View File
@@ -1,79 +0,0 @@
name: 🛠️ Build PR Preview
on:
pull_request:
concurrency:
group: ${{github.event.pull_request.head.ref}}
cancel-in-progress: true
permissions:
contents: read
jobs:
metadata:
runs-on: ubuntu-latest
outputs:
submodules: ${{ steps.submodules-fork.outputs.submodules || steps.submodules-main.outputs.submodules }}
privileged: ${{ steps.submodules-fork.outputs.privileged || steps.submodules-main.outputs.privileged }}
env:
ACTIONS_SSH_KEY: ${{ secrets.ACTIONS_SSH_KEY }}
steps:
- name: Save PR metadata
run: |
mkdir -p ./metadata
echo ${{ github.event.number }} > ./metadata/NR
echo ${{ github.event.pull_request.head.sha }} > ./metadata/SHA
- name: Set submodules for fork
if: env.ACTIONS_SSH_KEY == ''
id: submodules-fork
run: |
echo 'submodules={"repo":["brand","i18n"]}' >> "$GITHUB_OUTPUT"
echo "privileged=false" >> "$GITHUB_OUTPUT"
echo "false" > ./metadata/PRIVILEGED
- name: Set submodules for main repo
if: env.ACTIONS_SSH_KEY != ''
id: submodules-main
run: |
echo 'submodules={"repo":["brand","i18n","mkdocs-material-insiders"]}' >> "$GITHUB_OUTPUT"
echo "privileged=true" >> "$GITHUB_OUTPUT"
echo "true" > ./metadata/PRIVILEGED
- name: Upload metadata as artifact
uses: actions/upload-artifact@v4
with:
name: metadata
path: metadata
build_english:
strategy:
matrix:
lang: [en]
fail-fast: true
uses: ./.github/workflows/build.yml
with:
ref: ${{github.event.pull_request.head.ref}}
repo: ${{github.event.pull_request.head.repo.full_name}}
continue-on-error: false
combine_build:
needs: build_english
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v4
with:
pattern: site-build.tar.gz
merge-multiple: true
- run: |
for file in *.tar.gz; do tar -zxf "$file"; done
ls -la public/
- name: Upload Site
uses: actions/upload-artifact@v4
with:
name: site-build-combined
path: public
retention-days: 5
-54
View File
@@ -1,54 +0,0 @@
name: 🛠️ Build Website
on:
workflow_call:
inputs:
ref:
required: true
type: string
repo:
required: true
type: string
continue-on-error:
type: boolean
default: true
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
continue-on-error: ${{ inputs.continue-on-error }}
permissions:
contents: read
steps:
- name: Download Repository
uses: actions/checkout@v4
with:
repository: ${{ inputs.repo }}
ref: ${{ inputs.ref }}
persist-credentials: "false"
fetch-depth: 0
submodules: recursive
- name: Setup Hugo
uses: peaceiris/actions-hugo@v3
with:
hugo-version: 'latest'
- name: Build Website
run: |
hugo
- name: Package Website
run: |
tar -czf site-build.tar.gz public
- name: Upload Site
uses: actions/upload-artifact@v4
with:
name: site-build.tar.gz
path: site-build.tar.gz
retention-days: 1
+28
View File
@@ -0,0 +1,28 @@
name: 💬 Crowdin Upload
on:
workflow_dispatch:
release:
types: [published]
jobs:
synchronize-with-crowdin:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: crowdin action
uses: crowdin/github-action@v1.6.0
with:
upload_sources: true
upload_sources_args: '--auto-update --delete-obsolete'
upload_translations: false
download_translations: false
config: crowdin.yml
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
+41
View File
@@ -0,0 +1,41 @@
name: 🪞 Push to Mirrors
on: [ push, delete, create ]
# Ensures that only one mirror task will run at a time.
concurrency:
group: git-mirror
jobs:
gitlab:
runs-on: ubuntu-latest
steps:
- name: Mirror to GitLab
uses: wearerequired/git-mirror-action@v1
env:
SSH_PRIVATE_KEY: ${{ secrets.ACTIONS_SSH_KEY }}
with:
source-repo: "git@github.com:privacyguides/privacyguides.org.git"
destination-repo: "git@gitlab.com:privacyguides/privacyguides.org.git"
codeberg:
runs-on: ubuntu-latest
steps:
- name: Mirror to Codeberg
uses: wearerequired/git-mirror-action@v1
env:
SSH_PRIVATE_KEY: ${{ secrets.ACTIONS_SSH_KEY }}
with:
source-repo: "git@github.com:privacyguides/privacyguides.org.git"
destination-repo: "git@codeberg.org:privacyguides/privacyguides.org.git"
sourcehut:
runs-on: ubuntu-latest
steps:
- name: Mirror to SourceHut
uses: wearerequired/git-mirror-action@v1
env:
SSH_PRIVATE_KEY: ${{ secrets.ACTIONS_SSH_KEY }}
with:
source-repo: "git@github.com:privacyguides/privacyguides.org.git"
destination-repo: "git@git.sr.ht:~jonaharagon/privacyguides.org"
+87
View File
@@ -0,0 +1,87 @@
name: 🛠️ Deploy to GitHub Pages
on:
workflow_dispatch:
release:
types: [published]
# Allow one concurrent deployment
concurrency:
group: "pages"
cancel-in-progress: true
env:
PYTHON_VERSION: 3.x
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: '0'
ref: ${{github.event.pull_request.head.ref}}
repository: ${{github.event.pull_request.head.repo.full_name}}
ssh-key: ${{ secrets.ACTIONS_SSH_KEY }}
submodules: 'true'
- name: Pages setup
uses: actions/configure-pages@v3
- name: Python setup
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Cache files
uses: actions/cache@v3.2.5
with:
key: ${{ github.ref }}
path: .cache
- name: Install Python dependencies
run: |
pip install pipenv
pipenv install
- name: Build website
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CARDS: true
run: |
pipenv run mkdocs build --config-file mkdocs.production.yml
mv .well-known site/
pipenv run mkdocs --version
- name: Matrix homeserver configuration
run: |
mkdir -p site/.well-known/matrix
curl -o site/.well-known/matrix/server https://matrix.privacyguides.org/.well-known/matrix/server
curl -o site/.well-known/matrix/client https://matrix.privacyguides.org/.well-known/matrix/client
- name: Package website
uses: actions/upload-pages-artifact@v1
with:
path: site
deploy:
name: Deploy
needs: build
# Grant GITHUB_TOKEN the permissions required to make a Pages deployment
permissions:
pages: write # to deploy to Pages
id-token: write # to verify the deployment originates from an appropriate source
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@main
-143
View File
@@ -1,143 +0,0 @@
name: 📦 PR Preview
on:
workflow_run:
workflows: [🛠️ Build PR Preview]
types:
- completed
permissions:
actions: read
contents: read
pull-requests: write
jobs:
metadata:
if: >
github.event.workflow_run.event == 'pull_request' &&
github.event.workflow_run.conclusion == 'success'
runs-on: ubuntu-latest
outputs:
pr_number: ${{ steps.metadata.outputs.pr_number }}
sha: ${{ steps.metadata.outputs.sha }}
privileged: ${{ steps.metadata.outputs.privileged }}
steps:
- name: Download Website Build Artifact
uses: actions/github-script@v7.0.1
with:
script: |
var artifacts = await github.rest.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: ${{github.event.workflow_run.id }},
});
var matchArtifact = artifacts.data.artifacts.filter((artifact) => {
return artifact.name == "site-build-combined"
})[0];
var download = await github.rest.actions.downloadArtifact({
owner: context.repo.owner,
repo: context.repo.repo,
artifact_id: matchArtifact.id,
archive_format: 'zip',
});
var fs = require('fs');
fs.writeFileSync('${{github.workspace}}/site-build-combined.zip', Buffer.from(download.data));
- name: Unpack Website
run: |
mkdir -p site
unzip site-build-combined.zip -d site
tar -czvf site-build-combined.tar.gz site
- name: Upload Combined Build Artifact
uses: actions/upload-artifact@v4
with:
name: site-build-combined.tar.gz
path: site-build-combined.tar.gz
retention-days: 5
- name: Download Metadata Artifact
uses: actions/github-script@v7.0.1
with:
script: |
var artifacts = await github.rest.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: ${{github.event.workflow_run.id }},
});
var matchArtifact = artifacts.data.artifacts.filter((artifact) => {
return artifact.name == "metadata"
})[0];
var download = await github.rest.actions.downloadArtifact({
owner: context.repo.owner,
repo: context.repo.repo,
artifact_id: matchArtifact.id,
archive_format: 'zip',
});
var fs = require('fs');
fs.writeFileSync('${{github.workspace}}/metadata.zip', Buffer.from(download.data));
- name: Set Metadata
id: metadata
run: |
mkdir -p metadata
unzip metadata.zip -d metadata
echo "pr_number=$(cat metadata/NR)" >> "$GITHUB_OUTPUT"
echo "sha=$(cat metadata/SHA)" >> "$GITHUB_OUTPUT"
echo "privileged=$(cat metadata/PRIVILEGED)" >> "$GITHUB_OUTPUT"
deploy_garage:
needs: metadata
permissions:
contents: read
runs-on: ubuntu-latest
outputs:
address: ${{ steps.deployment.outputs.address }}
steps:
- uses: actions/download-artifact@v4
with:
pattern: site-build-combined.tar.gz
merge-multiple: true
- run: |
for file in *.tar.gz; do tar -zxf "$file"; done
ls -la public/
- name: Limit length of site alias to 12
run: echo "SHORT_ALIAS=$(echo "${{ needs.metadata.outputs.pr_number }}" | cut -c1-12)" >> "$GITHUB_ENV"
- uses: hkdobrev/minio-deploy-action@v1
with:
endpoint: https://${{ vars.PREVIEW_GARAGE_HOSTNAME }}
bucket: ${{ vars.PREVIEW_GARAGE_BUCKET }}
access_key: ${{ secrets.PREVIEW_GARAGE_KEY_ID }}
secret_key: ${{ secrets.PREVIEW_GARAGE_SECRET_KEY }}
source_dir: "public/"
target_dir: "/${{ env.SHORT_ALIAS }}/"
- id: deployment
run: |
echo "address=https://pr${{ env.SHORT_ALIAS }}.unreviewed.privacyguides.dev/en/" >> "$GITHUB_OUTPUT"
comment:
permissions:
pull-requests: write
needs: deploy_garage
runs-on: ubuntu-latest
env:
address: ${{ needs.deploy_garage.outputs.address }}
steps:
- uses: thollander/actions-comment-pull-request@v2.5.0
with:
pr_number: ${{ needs.metadata.outputs.pr_number }}
message: |
### <span aria-hidden="true">✅</span> Your preview is ready!
| Name | Link |
| :---: | ---- |
| <span aria-hidden="true">🔨</span> Latest commit | ${{ needs.metadata.outputs.sha }} |
| <span aria-hidden="true">😎</span> Preview | ${{ env.address }} |
comment_tag: deployment
+19
View File
@@ -0,0 +1,19 @@
name: 📦 Releases
on:
push:
tags:
- '*'
jobs:
release:
name: Create Release
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v3
- uses: ncipollo/release-action@v1
with:
generateReleaseNotes: true
token: ${{ secrets.REPO_TOKEN }}
+2 -5
View File
@@ -1,5 +1,2 @@
# Hugo output
public/
resources/
.hugo_build.lock
/scripts
site
.cache
+6 -3
View File
@@ -1,3 +1,6 @@
[submodule "static/brand"]
path = static/brand
url = https://github.com/privacyguides/brand
[submodule "mkdocs-material-insiders"]
path = mkdocs-material
url = git@github.com:privacyguides/mkdocs-material-insiders.git
[submodule "docs/assets/brand"]
path = docs/assets/brand
url = https://github.com/privacyguides/brand.git
-23
View File
@@ -1,23 +0,0 @@
# 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> <48640805+dngray@users.noreply.github.com>
Daniel Gray <dngray@privacyguides.org> <dngray@privacytools.io>
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@privacytools.io>
Jonah Aragon <jonah@privacyguides.org> <github@aragon.science>
Jordan Warne <jordan@privacyguides.org> <jw@omg.lol>
Jordan Warne <jordan@privacyguides.org> <contact@jordanwarne.net>
Justin Ehrenhofer <justin.ehrenhofer@gmail.com> <12520755+SamsungGalaxyPlayer@users.noreply.github.com>
Mare Polaris <ph00lt0@privacyguides.org> <15004290+ph00lt0@users.noreply.github.com>
Niek de Wilde <niek@privacyguides.org> <github.ef27z@simplelogin.com>
Niek de Wilde <niek@privacyguides.org> <blacklight447@privacytools.io>
redoomed1 <redoomed1@privacyguides.org> <161974310+redoomed1@users.noreply.github.com>
+3 -25
View File
@@ -1,33 +1,11 @@
# Copyright (c) 2022 Jonah Aragon <jonah@triplebit.net>
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
# IN THE SOFTWARE.
$schema: https://raw.githubusercontent.com/DavidAnson/markdownlint/v0.40.0/schema/markdownlint-config-schema.json
default: true
line-length: false
ul-indent:
indent: 4
no-inline-html: false
code-block-style: false
no-hard-tabs: true
no-hard-tabs:
spaces-per-tab: 4
emphasis-style:
style: "asterisk"
no-trailing-punctuation: false
no-duplicate-heading:
siblings_only: true
no-duplicate-header: false
-21
View File
@@ -1,21 +0,0 @@
{
// See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations.
// Extension identifier format: ${publisher}.${name}. Example: vscode.csharp
// List of extensions which should be recommended for users of this workspace.
"recommendations": [
"mhutchie.git-graph",
"esbenp.prettier-vscode",
"tamasfe.even-better-toml",
"budparr.language-hugo-vscode",
"EditorConfig.EditorConfig",
"github.vscode-github-actions",
"bierner.github-markdown-preview",
"ms-vsliveshare.vsliveshare",
"ltex-plus.vscode-ltex-plus",
"yzhang.markdown-all-in-one",
"redhat.vscode-yaml",
"rvben.rumdl",
"kaellarkin.hugo-shortcode-syntax"
]
}
-571
View File
@@ -1,571 +0,0 @@
Kinect
Scanalytics
mmWave
TODO
MotionScore
GaitMetrics
Bayometric
eSIM
microSD
Cellebrite
GrapheneOS
Gboard
IMEs
Briar
Meshtastic
Gizmodo
Wickr
Gizmodo
Arel
CryptPad
itemprop
md-button
XWiki
CryptDrive
scrypt
Anytype
PeerTube
Startpage
PrivacyTools
FedResults
Brøgger
EasyOptOuts
Optery
DeleteMe
PeopleConnect
dFPI
Arkenfox
LocalCDN
fingerprintable
NeatURLs
ClearURLs
Bromite
GeckoView
Thorin-Oakenpants
customizability
DoH
DNSCrypt
eSNI
Mullvad
CalyxOS
microG
DejaVu
DroidGuard
NewPipe
WebView
linux-hardened
malloc
Malloc
ASLR
Grindr
USCCB
USCCB-owned
de-anonymize
MkDocs
privacyguides
balenaEtcher
img
thumbsup
KeePassXC
OnionShare
Exif
ExifTool
zsh
ImageOptim
SendTo
Handoff
Jailbreaking
Flatpaks
ChromeOS
Flatseal
dbus
XWayland
filesystem
Firejail
Whonix
seccomp
AppArmor
MicroOS
setuid
Bubblewrap
Krathalan
noatsecure
Seirdy
Podman
Kata
Wonderfall
Vaultwarden
LinuxServer
io
daemonless
gVisor
syscalls
Portmaster
OpenSnitch
firewalld
Netfilter
bypassable
sysctl
KickSecure
fepitre
QubesOS
COPR
GRSecurity
Kicksecure
umask
SUID
Umask
Qubes-Whonix
USBGuard
initramfs
dracut
BadUSB
chronyd
swdate
sysfs
cgroups
MathML
WebAuthn
BlockBlock
HELLOTUX
Véliz
Poitras
Anonym
ISRG
Orbot
Qubes
publicinterest
Warne
Pham
material-youtube
OpenCollective
Monero
CoinJoin
Banxa
@proton
CashApp
Samouri
Coinjoin
USDC
Stablecoins
stablecoins
IWAs
IWA
Beens
Techlore
whitehouse
ShredOS
del
OMEMO
reglock
nofollow
SecureDrop
Cwtch
OTF
SimpleX
noyb
darknet
Surfshark
ExpressVPN
PerfectPrivacy
IPVanish
CyberGhost
ibVPN
SurfShark
VPNArea
ThatOnePrivacySite
fluffily
Huxleyan
MPRs
INVISV
QUIC
Fastly
OHTTP
Appelbaum
md-button--primary
Niek
openpgp
material-github
Tweakers
fontawesome-brands-creative-commons
fontawesome-brands-creative-commons-by
fontawesome-brands-creative-commons-sa
Attribution-ShareAlike
ChatGPT
LLMs
OLMoE
MMLU-Pro
OpenLLM
GGUF
Llamafile
Ollama
cpp
fontawesome-brands-windows
simple-linux
LLaVA
fontawesome-solid-desktop
llamafiles
simple-torbrowser
simple-googleplay
eepsites
simple-firefoxbrowser
simple-googlechrome
fontawesome-brands-edge
scriptlet
Adguard
simple-appstore
Tuta
simple-flathub
Flathub
Cryptomator
Securitum
Tresorit
Computest
Peergos
InterPlanetary
IPFS
DocumentsProvider
Modmail
CipherTrace
Monero-only
Monerujo
CEX
RetoSwap
Haveno-Reto
Haveno
Guardarian
BeenVerified
CheckPeople
ClustrMaps
Dataveria
InfoTracer
PeekYou
PublicDataUSA
Radaris
USPhonebook
Whitepages
Grauer
simple-github
ExifEraser
permissionless
Accrescent
ExtendedXMP
IPTC
NoScript
cryptominers
non-proxied
Solana
PipeWire
Btrfs
openQA
NixOS
Toolbx
Nixpkgs
ProxyVM
deanonymized
qubes
Xen
pg-viridian
qube
KingsPawn
sysdiagnose
iMazing
keystore
Cleartext
DoT
DoQ
eu
NextDNS
RethinkDNS
dnscrypt-proxy
anycast
geo-steering
QNAME
PII
SimpleLogin
twemoji
addy
material-apple-ios
@addy
ProxyStore
@username
backported
FairEmail
Kontact
Mailvelope
NeoMutt
WKD
BitPay
paydirekt
Sofortüberweisung
YubiCloud
@mailbox
@secure
ActiveSync
non-Tuta
SOGo
Mailcow
OpenSMTPD
Rspamd
Mbox
JMAP
Hardenize
Subresource
cryptolib
cryptofs
siv-mode
cryptolib-swift
cryptomator-objc-cryptor
VeraCrypt
TrueCrypt
cryptoprocessor
non-Bitlocker
FileVault
FDE
udiskie
Polkit
Kryptor
Minisign
Intevation
OpenKeychain
ffsend
FreedomBox
Syncthing
simple-freebsd
MySudo
Coincards
Redlib
Yattee
eepsite
proxying
LibreTube
FramaTube
IVPN
Cromite
Adblock
EasyList
fontawesome-solid-ellipsis
adblock
LineageOS
NitroPhone
Nitrokey
Ente
Akregator
NewsFlash
Inoreader
Miniflux
NetNewsWire
Newsboat
Newsbeuter
Notesnook
Cryptee
Psono
KeePassX
KeePassDX
gopass
Pastebins
PrivateBin
ZeroBin
pastebin
pastebins
Stingle
PhotoPrism
UnifiedPush
simple-fdroid
Mollysocket
Olm
util-linux
uClibc
BusyBox
OPNsense
Netgate
pfSense
SearXNG
SearX
Yubico
PIV-compatibile
CCID
PIV
HOTP
YubiKeys
Nitrokeys
Obtainium
deanonymization
VpnService
torrenting
AntiTracker
VMess
DAITA
deanonymize
OTPs
SafetyNet
IDEMIA
backport
Silverblue
Šamalík
PKGBUILDs
PPAs
Linux-libre
Libre
ConfinedUsers
ZRAM
Linux-libre-based
Spectre
SWAPGS
DEs
NetworkManager
systemd-networkd
rpm-ostree-countme
countme
Hackintoshes
OCSP
XProtect
appVM
inter-qube
AppVM
vchan
qrexec
Qube
sys-net
sys-firewall
sys-proxyvm
sys-whonix
anon-whonix
ProxyVMs
NetVM
Rutkowska
AutoRun
PINs
OnTheHub
DevContainers
fullwidth
Fullwidth
OptiPNG
cwebp
Keyring
JustDeleteMe
NotPetya
EternalBlue
Technopolice
Datalogix
Cryptoprocessor
TPMs
Pluton
Buskill
BusKill
diceware
Diceware
geo-restrictions
ECH
dVPNs
dVPN
Pseudonymity
@Thorin-Oakenpants
DocumentsUI
CameraX
AFWall
AdAway
TrackerControl
loopback
Aptoide
APKPure
simple-gitlab
IzzyOnDroid
Gadgetbridge
tshark
systemd
systemd-resolved
EDNS
Chainalysis
BadExit
HSDir
deanonymizing
WebTunnel
Computerphile
namazso
HelloTux
wordmark
Bagnard
sublicensees
BurungHantu
privacytoolsIO
privacytools
trai
PrivacyGuides
@dngray
simple-youtube
simple-peertube
simple-bluesky
dngray
bsky
@freddy
Memoji
QuickType
Freeform
subprocessors
Schrems
Subprocessor
Subprocessors
Triplebit
Fediverse
Safing
YubiHSM
ykman
material-linux
yubico
material-microsoft-windows
HSMauth
PUK
TDES
ModHex
OATH-TOTPs
OATH-HOTP
OATH-HOTPs
MODHEX
HMAC-based
subkeys
subkey
keysize
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
TrueNAS
Arti
Tailscale
allowlisted
MyMonero
Monero-LWS
OkCupid
Anom
misgendering
View File
+5
View File
@@ -0,0 +1,5 @@
Contact: mailto:jonah@triplebit.net
Expires: 2024-01-01T18:00:00.000Z
Preferred-Languages: en
Canonical: https://www.privacyguides.org/.well-known/security.txt
Policy: https://github.com/privacyguides/privacyguides.org/security/policy
+47
View File
@@ -0,0 +1,47 @@
cff-version: 1.2.0
title: Privacy Guides
message: 'If you reference this website, please cite it in your work.'
type: software
authors:
- email: jonah@privacyguides.org
given-names: Jonah
family-names: Aragon
orcid: 'https://orcid.org/0000-0001-6996-4965'
- name: The Privacy Guides team
website: 'https://github.com/orgs/privacyguides/people'
repository-code: 'https://github.com/privacyguides/privacyguides.org'
references:
- authors:
- family-names: Donath
given-names: Martin
title: 'mkdocs-material'
type: software
repository-code: 'https://github.com/squidfunk/mkdocs-material'
preferred-citation:
type: website
title: Privacy Guides
authors:
- email: jonah@privacyguides.org
given-names: Jonah
family-names: Aragon
orcid: 'https://orcid.org/0000-0001-6996-4965'
- given-names: Daniel
family-names: Gray
email: dngray@privacyguides.org
- name: The Privacy Guides team
website: 'https://github.com/orgs/privacyguides/people'
- name: Various project contributors
url: 'https://www.privacyguides.org'
abstract: >-
Privacy Guides is a socially motivated website that
provides information for protecting your data
security and privacy. We are a non-profit
collective operated entirely by volunteer team
members and contributors.
keywords:
- privacy
- surveillance
- encryption
- website
- markdown
license: "CC-BY-ND-4.0"
+34 -69
View File
@@ -1,4 +1,4 @@
Attribution-ShareAlike 4.0 International
Attribution-NoDerivatives 4.0 International
=======================================================================
@@ -33,7 +33,7 @@ exhaustive, and do not form part of our licenses.
material not subject to the license. This includes other CC-
licensed material, or material used under an exception or
limitation to copyright. More considerations for licensors:
wiki.creativecommons.org/Considerations_for_licensors
wiki.creativecommons.org/Considerations_for_licensors
Considerations for the public: By using one of our public
licenses, a licensor grants the public permission to use the
@@ -50,16 +50,17 @@ exhaustive, and do not form part of our licenses.
Although not required by our licenses, you are encouraged to
respect those requests where reasonable. More considerations
for the public:
wiki.creativecommons.org/Considerations_for_licensees
wiki.creativecommons.org/Considerations_for_licensees
=======================================================================
Creative Commons Attribution-ShareAlike 4.0 International Public
Creative Commons Attribution-NoDerivatives 4.0 International Public
License
By exercising the Licensed Rights (defined below), You accept and agree
to be bound by the terms and conditions of this Creative Commons
Attribution-ShareAlike 4.0 International Public License ("Public
Attribution-NoDerivatives 4.0 International Public License ("Public
License"). To the extent this Public License may be interpreted as a
contract, You are granted the Licensed Rights in consideration of Your
acceptance of these terms and conditions, and the Licensor grants You
@@ -80,15 +81,7 @@ Section 1 -- Definitions.
Adapted Material is always produced where the Licensed Material is
synched in timed relation with a moving image.
b. Adapter's License means the license You apply to Your Copyright
and Similar Rights in Your contributions to Adapted Material in
accordance with the terms and conditions of this Public License.
c. BY-SA Compatible License means a license listed at
creativecommons.org/compatiblelicenses, approved by Creative
Commons as essentially the equivalent of this Public License.
d. Copyright and Similar Rights means copyright and/or similar rights
b. Copyright and Similar Rights means copyright and/or similar rights
closely related to copyright including, without limitation,
performance, broadcast, sound recording, and Sui Generis Database
Rights, without regard to how the rights are labeled or
@@ -96,33 +89,29 @@ Section 1 -- Definitions.
specified in Section 2(b)(1)-(2) are not Copyright and Similar
Rights.
e. Effective Technological Measures means those measures that, in the
c. Effective Technological Measures means those measures that, in the
absence of proper authority, may not be circumvented under laws
fulfilling obligations under Article 11 of the WIPO Copyright
Treaty adopted on December 20, 1996, and/or similar international
agreements.
f. Exceptions and Limitations means fair use, fair dealing, and/or
d. Exceptions and Limitations means fair use, fair dealing, and/or
any other exception or limitation to Copyright and Similar Rights
that applies to Your use of the Licensed Material.
g. License Elements means the license attributes listed in the name
of a Creative Commons Public License. The License Elements of this
Public License are Attribution and ShareAlike.
h. Licensed Material means the artistic or literary work, database,
e. Licensed Material means the artistic or literary work, database,
or other material to which the Licensor applied this Public
License.
i. Licensed Rights means the rights granted to You subject to the
f. Licensed Rights means the rights granted to You subject to the
terms and conditions of this Public License, which are limited to
all Copyright and Similar Rights that apply to Your use of the
Licensed Material and that the Licensor has authority to license.
j. Licensor means the individual(s) or entity(ies) granting rights
g. Licensor means the individual(s) or entity(ies) granting rights
under this Public License.
k. Share means to provide material to the public by any means or
h. Share means to provide material to the public by any means or
process that requires permission under the Licensed Rights, such
as reproduction, public display, public performance, distribution,
dissemination, communication, or importation, and to make material
@@ -130,13 +119,13 @@ Section 1 -- Definitions.
public may access the material from a place and at a time
individually chosen by them.
l. Sui Generis Database Rights means rights other than copyright
i. Sui Generis Database Rights means rights other than copyright
resulting from Directive 96/9/EC of the European Parliament and of
the Council of 11 March 1996 on the legal protection of databases,
as amended and/or succeeded, as well as other essentially
equivalent rights anywhere in the world.
m. You means the individual or entity exercising the Licensed Rights
j. You means the individual or entity exercising the Licensed Rights
under this Public License. Your has a corresponding meaning.
@@ -152,7 +141,7 @@ Section 2 -- Scope.
a. reproduce and Share the Licensed Material, in whole or
in part; and
b. produce, reproduce, and Share Adapted Material.
b. produce and reproduce, but not Share, Adapted Material.
2. Exceptions and Limitations. For the avoidance of doubt, where
Exceptions and Limitations apply to Your use, this Public
@@ -182,13 +171,7 @@ Section 2 -- Scope.
Licensed Rights under the terms and conditions of this
Public License.
b. Additional offer from the Licensor -- Adapted Material.
Every recipient of Adapted Material from You
automatically receives an offer from the Licensor to
exercise the Licensed Rights in the Adapted Material
under the conditions of the Adapter's License You apply.
c. No downstream restrictions. You may not offer or impose
b. No downstream restrictions. You may not offer or impose
any additional or different terms or conditions on, or
apply any Effective Technological Measures to, the
Licensed Material if doing so restricts exercise of the
@@ -230,8 +213,7 @@ following conditions.
a. Attribution.
1. If You Share the Licensed Material (including in modified
form), You must:
1. If You Share the Licensed Material, You must:
a. retain the following if it is supplied by the Licensor
with the Licensed Material:
@@ -259,6 +241,9 @@ following conditions.
Public License, and include the text of, or the URI or
hyperlink to, this Public License.
For the avoidance of doubt, You do not have permission under
this Public License to Share Adapted Material.
2. You may satisfy the conditions in Section 3(a)(1) in any
reasonable manner based on the medium, means, and context in
which You Share the Licensed Material. For example, it may be
@@ -270,25 +255,6 @@ following conditions.
information required by Section 3(a)(1)(A) to the extent
reasonably practicable.
b. ShareAlike.
In addition to the conditions in Section 3(a), if You Share
Adapted Material You produce, the following conditions also apply.
1. The Adapter's License You apply must be a Creative Commons
license with the same License Elements, this version or
later, or a BY-SA Compatible License.
2. You must include the text of, or the URI or hyperlink to, the
Adapter's License You apply. You may satisfy this condition
in any reasonable manner based on the medium, means, and
context in which You Share Adapted Material.
3. You may not offer or impose any additional or different terms
or conditions on, or apply any Effective Technological
Measures to, Adapted Material that restrict exercise of the
rights granted under the Adapter's License You apply.
Section 4 -- Sui Generis Database Rights.
@@ -297,13 +263,13 @@ apply to Your use of the Licensed Material:
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
to extract, reuse, reproduce, and Share all or a substantial
portion of the contents of the database;
portion of the contents of the database, provided You do not Share
Adapted Material;
b. if You include all or a substantial portion of the database
contents in a database in which You have Sui Generis Database
Rights, then the database in which You have Sui Generis Database
Rights (but not its individual contents) is Adapted Material,
including for purposes of Section 3(b); and
Rights (but not its individual contents) is Adapted Material; and
c. You must comply with the conditions in Section 3(a) if You Share
all or a substantial portion of the contents of the database.
@@ -404,24 +370,23 @@ Section 8 -- Interpretation.
that apply to the Licensor or You, including from the legal
processes of any jurisdiction or authority.
=======================================================================
Creative Commons is not a party to its public licenses.
Notwithstanding, Creative Commons may elect to apply one of its public
licenses to material it publishes and in those instances will be
considered the “Licensor.” The text of the Creative Commons public
licenses is dedicated to the public domain under the CC0 Public Domain
Dedication. Except for the limited purpose of indicating that material
is shared under a Creative Commons public license or as otherwise
permitted by the Creative Commons policies published at
Creative Commons is not a party to its public
licenses. Notwithstanding, Creative Commons may elect to apply one of
its public licenses to material it publishes and in those instances
will be considered the “Licensor.” The text of the Creative Commons
public licenses is dedicated to the public domain under the CC0 Public
Domain Dedication. Except for the limited purpose of indicating that
material is shared under a Creative Commons public license or as
otherwise permitted by the Creative Commons policies published at
creativecommons.org/policies, Creative Commons does not authorize the
use of the trademark "Creative Commons" or any other trademark or logo
of Creative Commons without its prior written consent including,
without limitation, in connection with any unauthorized modifications
to any of its public licenses or any other arrangements,
understandings, or agreements concerning use of licensed material. For
the avoidance of doubt, this paragraph does not form part of the public
licenses.
the avoidance of doubt, this paragraph does not form part of the
public licenses.
Creative Commons may be contacted at creativecommons.org.
-22
View File
@@ -1,22 +0,0 @@
MIT License
Copyright (c) 2019 - 2024 Jonah Aragon <jonah@triplebit.net>
Copyright (c) 2020 - 2024 Privacy Guides contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+21
View File
@@ -0,0 +1,21 @@
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
mkdocs = "*"
mkdocs-material = {path = "./mkdocs-material"}
mkdocs-static-i18n = "*"
mkdocs-git-revision-date-localized-plugin = "*"
typing-extensions = "*"
mkdocs-git-committers-plugin-2 = "*"
mkdocs-macros-plugin = "*"
pillow = "*"
cairosvg = "*"
[dev-packages]
scour = "*"
[requires]
python_version = "3.8"
Generated
+959
View File
@@ -0,0 +1,959 @@
{
"_meta": {
"hash": {
"sha256": "e58ad55b2281815cbad8bd08738bc446b516cd8a1892d8d6df9e27dc709e4b76"
},
"pipfile-spec": 6,
"requires": {
"python_version": "3.8"
},
"sources": [
{
"name": "pypi",
"url": "https://pypi.org/simple",
"verify_ssl": true
}
]
},
"default": {
"babel": {
"hashes": [
"sha256:1ad3eca1c885218f6dce2ab67291178944f810a10a9b5f3cb8382a5a232b64fe",
"sha256:5ef4b3226b0180dedded4229651c8b0e1a3a6a2837d45a073272f313e4cf97f6"
],
"markers": "python_version >= '3.6'",
"version": "==2.11.0"
},
"beautifulsoup4": {
"hashes": [
"sha256:0e79446b10b3ecb499c1556f7e228a53e64a2bfcebd455f370d8927cb5b59e39",
"sha256:bc4bdda6717de5a2987436fb8d72f45dc90dd856bdfd512a1314ce90349a0106"
],
"markers": "python_version >= '3.6'",
"version": "==4.11.2"
},
"cairocffi": {
"hashes": [
"sha256:509339b32ccd8d7b00c2204c32736cde78db53a32e6a162d312478d25626cd9a"
],
"markers": "python_version >= '3.7'",
"version": "==1.4.0"
},
"cairosvg": {
"hashes": [
"sha256:05069d5316e9f02f33028942f96929e01782db41e6ff07d8454c8d021b5b52f3",
"sha256:d5ec93e90101b3b6e82aa245d0546ee9b016cfda0b6344675159830d853d5d04"
],
"index": "pypi",
"version": "==2.6.0"
},
"certifi": {
"hashes": [
"sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3",
"sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"
],
"markers": "python_version >= '3.6'",
"version": "==2022.12.7"
},
"cffi": {
"hashes": [
"sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5",
"sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef",
"sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104",
"sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426",
"sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405",
"sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375",
"sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a",
"sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e",
"sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc",
"sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf",
"sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185",
"sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497",
"sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3",
"sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35",
"sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c",
"sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83",
"sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21",
"sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca",
"sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984",
"sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac",
"sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd",
"sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee",
"sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a",
"sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2",
"sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192",
"sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7",
"sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585",
"sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f",
"sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e",
"sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27",
"sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b",
"sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e",
"sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e",
"sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d",
"sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c",
"sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415",
"sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82",
"sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02",
"sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314",
"sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325",
"sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c",
"sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3",
"sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914",
"sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045",
"sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d",
"sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9",
"sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5",
"sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2",
"sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c",
"sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3",
"sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2",
"sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8",
"sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d",
"sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d",
"sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9",
"sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162",
"sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76",
"sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4",
"sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e",
"sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9",
"sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6",
"sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b",
"sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01",
"sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0"
],
"version": "==1.15.1"
},
"charset-normalizer": {
"hashes": [
"sha256:00d3ffdaafe92a5dc603cb9bd5111aaa36dfa187c8285c543be562e61b755f6b",
"sha256:024e606be3ed92216e2b6952ed859d86b4cfa52cd5bc5f050e7dc28f9b43ec42",
"sha256:0298eafff88c99982a4cf66ba2efa1128e4ddaca0b05eec4c456bbc7db691d8d",
"sha256:02a51034802cbf38db3f89c66fb5d2ec57e6fe7ef2f4a44d070a593c3688667b",
"sha256:083c8d17153ecb403e5e1eb76a7ef4babfc2c48d58899c98fcaa04833e7a2f9a",
"sha256:0a11e971ed097d24c534c037d298ad32c6ce81a45736d31e0ff0ad37ab437d59",
"sha256:0bf2dae5291758b6f84cf923bfaa285632816007db0330002fa1de38bfcb7154",
"sha256:0c0a590235ccd933d9892c627dec5bc7511ce6ad6c1011fdf5b11363022746c1",
"sha256:0f438ae3532723fb6ead77e7c604be7c8374094ef4ee2c5e03a3a17f1fca256c",
"sha256:109487860ef6a328f3eec66f2bf78b0b72400280d8f8ea05f69c51644ba6521a",
"sha256:11b53acf2411c3b09e6af37e4b9005cba376c872503c8f28218c7243582df45d",
"sha256:12db3b2c533c23ab812c2b25934f60383361f8a376ae272665f8e48b88e8e1c6",
"sha256:14e76c0f23218b8f46c4d87018ca2e441535aed3632ca134b10239dfb6dadd6b",
"sha256:16a8663d6e281208d78806dbe14ee9903715361cf81f6d4309944e4d1e59ac5b",
"sha256:292d5e8ba896bbfd6334b096e34bffb56161c81408d6d036a7dfa6929cff8783",
"sha256:2c03cc56021a4bd59be889c2b9257dae13bf55041a3372d3295416f86b295fb5",
"sha256:2e396d70bc4ef5325b72b593a72c8979999aa52fb8bcf03f701c1b03e1166918",
"sha256:2edb64ee7bf1ed524a1da60cdcd2e1f6e2b4f66ef7c077680739f1641f62f555",
"sha256:31a9ddf4718d10ae04d9b18801bd776693487cbb57d74cc3458a7673f6f34639",
"sha256:356541bf4381fa35856dafa6a965916e54bed415ad8a24ee6de6e37deccf2786",
"sha256:358a7c4cb8ba9b46c453b1dd8d9e431452d5249072e4f56cfda3149f6ab1405e",
"sha256:37f8febc8ec50c14f3ec9637505f28e58d4f66752207ea177c1d67df25da5aed",
"sha256:39049da0ffb96c8cbb65cbf5c5f3ca3168990adf3551bd1dee10c48fce8ae820",
"sha256:39cf9ed17fe3b1bc81f33c9ceb6ce67683ee7526e65fde1447c772afc54a1bb8",
"sha256:3ae1de54a77dc0d6d5fcf623290af4266412a7c4be0b1ff7444394f03f5c54e3",
"sha256:3b590df687e3c5ee0deef9fc8c547d81986d9a1b56073d82de008744452d6541",
"sha256:3e45867f1f2ab0711d60c6c71746ac53537f1684baa699f4f668d4c6f6ce8e14",
"sha256:3fc1c4a2ffd64890aebdb3f97e1278b0cc72579a08ca4de8cd2c04799a3a22be",
"sha256:4457ea6774b5611f4bed5eaa5df55f70abde42364d498c5134b7ef4c6958e20e",
"sha256:44ba614de5361b3e5278e1241fda3dc1838deed864b50a10d7ce92983797fa76",
"sha256:4a8fcf28c05c1f6d7e177a9a46a1c52798bfe2ad80681d275b10dcf317deaf0b",
"sha256:4b0d02d7102dd0f997580b51edc4cebcf2ab6397a7edf89f1c73b586c614272c",
"sha256:502218f52498a36d6bf5ea77081844017bf7982cdbe521ad85e64cabee1b608b",
"sha256:503e65837c71b875ecdd733877d852adbc465bd82c768a067badd953bf1bc5a3",
"sha256:5995f0164fa7df59db4746112fec3f49c461dd6b31b841873443bdb077c13cfc",
"sha256:59e5686dd847347e55dffcc191a96622f016bc0ad89105e24c14e0d6305acbc6",
"sha256:601f36512f9e28f029d9481bdaf8e89e5148ac5d89cffd3b05cd533eeb423b59",
"sha256:608862a7bf6957f2333fc54ab4399e405baad0163dc9f8d99cb236816db169d4",
"sha256:62595ab75873d50d57323a91dd03e6966eb79c41fa834b7a1661ed043b2d404d",
"sha256:70990b9c51340e4044cfc394a81f614f3f90d41397104d226f21e66de668730d",
"sha256:71140351489970dfe5e60fc621ada3e0f41104a5eddaca47a7acb3c1b851d6d3",
"sha256:72966d1b297c741541ca8cf1223ff262a6febe52481af742036a0b296e35fa5a",
"sha256:74292fc76c905c0ef095fe11e188a32ebd03bc38f3f3e9bcb85e4e6db177b7ea",
"sha256:761e8904c07ad053d285670f36dd94e1b6ab7f16ce62b9805c475b7aa1cffde6",
"sha256:772b87914ff1152b92a197ef4ea40efe27a378606c39446ded52c8f80f79702e",
"sha256:79909e27e8e4fcc9db4addea88aa63f6423ebb171db091fb4373e3312cb6d603",
"sha256:7e189e2e1d3ed2f4aebabd2d5b0f931e883676e51c7624826e0a4e5fe8a0bf24",
"sha256:7eb33a30d75562222b64f569c642ff3dc6689e09adda43a082208397f016c39a",
"sha256:81d6741ab457d14fdedc215516665050f3822d3e56508921cc7239f8c8e66a58",
"sha256:8499ca8f4502af841f68135133d8258f7b32a53a1d594aa98cc52013fff55678",
"sha256:84c3990934bae40ea69a82034912ffe5a62c60bbf6ec5bc9691419641d7d5c9a",
"sha256:87701167f2a5c930b403e9756fab1d31d4d4da52856143b609e30a1ce7160f3c",
"sha256:88600c72ef7587fe1708fd242b385b6ed4b8904976d5da0893e31df8b3480cb6",
"sha256:8ac7b6a045b814cf0c47f3623d21ebd88b3e8cf216a14790b455ea7ff0135d18",
"sha256:8b8af03d2e37866d023ad0ddea594edefc31e827fee64f8de5611a1dbc373174",
"sha256:8c7fe7afa480e3e82eed58e0ca89f751cd14d767638e2550c77a92a9e749c317",
"sha256:8eade758719add78ec36dc13201483f8e9b5d940329285edcd5f70c0a9edbd7f",
"sha256:911d8a40b2bef5b8bbae2e36a0b103f142ac53557ab421dc16ac4aafee6f53dc",
"sha256:93ad6d87ac18e2a90b0fe89df7c65263b9a99a0eb98f0a3d2e079f12a0735837",
"sha256:95dea361dd73757c6f1c0a1480ac499952c16ac83f7f5f4f84f0658a01b8ef41",
"sha256:9ab77acb98eba3fd2a85cd160851816bfce6871d944d885febf012713f06659c",
"sha256:9cb3032517f1627cc012dbc80a8ec976ae76d93ea2b5feaa9d2a5b8882597579",
"sha256:9cf4e8ad252f7c38dd1f676b46514f92dc0ebeb0db5552f5f403509705e24753",
"sha256:9d9153257a3f70d5f69edf2325357251ed20f772b12e593f3b3377b5f78e7ef8",
"sha256:a152f5f33d64a6be73f1d30c9cc82dfc73cec6477ec268e7c6e4c7d23c2d2291",
"sha256:a16418ecf1329f71df119e8a65f3aa68004a3f9383821edcb20f0702934d8087",
"sha256:a60332922359f920193b1d4826953c507a877b523b2395ad7bc716ddd386d866",
"sha256:a8d0fc946c784ff7f7c3742310cc8a57c5c6dc31631269876a88b809dbeff3d3",
"sha256:ab5de034a886f616a5668aa5d098af2b5385ed70142090e2a31bcbd0af0fdb3d",
"sha256:c22d3fe05ce11d3671297dc8973267daa0f938b93ec716e12e0f6dee81591dc1",
"sha256:c2ac1b08635a8cd4e0cbeaf6f5e922085908d48eb05d44c5ae9eabab148512ca",
"sha256:c512accbd6ff0270939b9ac214b84fb5ada5f0409c44298361b2f5e13f9aed9e",
"sha256:c75ffc45f25324e68ab238cb4b5c0a38cd1c3d7f1fb1f72b5541de469e2247db",
"sha256:c95a03c79bbe30eec3ec2b7f076074f4281526724c8685a42872974ef4d36b72",
"sha256:cadaeaba78750d58d3cc6ac4d1fd867da6fc73c88156b7a3212a3cd4819d679d",
"sha256:cd6056167405314a4dc3c173943f11249fa0f1b204f8b51ed4bde1a9cd1834dc",
"sha256:db72b07027db150f468fbada4d85b3b2729a3db39178abf5c543b784c1254539",
"sha256:df2c707231459e8a4028eabcd3cfc827befd635b3ef72eada84ab13b52e1574d",
"sha256:e62164b50f84e20601c1ff8eb55620d2ad25fb81b59e3cd776a1902527a788af",
"sha256:e696f0dd336161fca9adbb846875d40752e6eba585843c768935ba5c9960722b",
"sha256:eaa379fcd227ca235d04152ca6704c7cb55564116f8bc52545ff357628e10602",
"sha256:ebea339af930f8ca5d7a699b921106c6e29c617fe9606fa7baa043c1cdae326f",
"sha256:f4c39b0e3eac288fedc2b43055cfc2ca7a60362d0e5e87a637beac5d801ef478",
"sha256:f5057856d21e7586765171eac8b9fc3f7d44ef39425f85dbcccb13b3ebea806c",
"sha256:f6f45710b4459401609ebebdbcfb34515da4fc2aa886f95107f556ac69a9147e",
"sha256:f97e83fa6c25693c7a35de154681fcc257c1c41b38beb0304b9c4d2d9e164479",
"sha256:f9d0c5c045a3ca9bedfc35dca8526798eb91a07aa7a2c0fee134c6c6f321cbd7",
"sha256:ff6f3db31555657f3163b15a6b7c6938d08df7adbfc9dd13d9d19edad678f1e8"
],
"markers": "python_version >= '3.6'",
"version": "==3.0.1"
},
"click": {
"hashes": [
"sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e",
"sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"
],
"markers": "python_version >= '3.7'",
"version": "==8.1.3"
},
"colorama": {
"hashes": [
"sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44",
"sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6'",
"version": "==0.4.6"
},
"cssselect": {
"hashes": [
"sha256:666b19839cfaddb9ce9d36bfe4c969132c647b92fc9088c4e23f786b30f1b3dc",
"sha256:da1885f0c10b60c03ed5eccbb6b68d6eff248d91976fcde348f395d54c9fd35e"
],
"markers": "python_version >= '3.7'",
"version": "==1.2.0"
},
"cssselect2": {
"hashes": [
"sha256:1ccd984dab89fc68955043aca4e1b03e0cf29cad9880f6e28e3ba7a74b14aa5a",
"sha256:fd23a65bfd444595913f02fc71f6b286c29261e354c41d722ca7a261a49b5969"
],
"markers": "python_version >= '3.7'",
"version": "==0.7.0"
},
"defusedxml": {
"hashes": [
"sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69",
"sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
"version": "==0.7.1"
},
"ghp-import": {
"hashes": [
"sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619",
"sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"
],
"version": "==2.1.0"
},
"gitdb": {
"hashes": [
"sha256:6eb990b69df4e15bad899ea868dc46572c3f75339735663b81de79b06f17eb9a",
"sha256:c286cf298426064079ed96a9e4a9d39e7f3e9bf15ba60701e95f5492f28415c7"
],
"markers": "python_version >= '3.7'",
"version": "==4.0.10"
},
"gitpython": {
"hashes": [
"sha256:769c2d83e13f5d938b7688479da374c4e3d49f71549aaf462b646db9602ea6f8",
"sha256:cd455b0000615c60e286208ba540271af9fe531fa6a87cc590a7298785ab2882"
],
"markers": "python_version >= '3.7'",
"version": "==3.1.30"
},
"idna": {
"hashes": [
"sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4",
"sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"
],
"markers": "python_version >= '3.5'",
"version": "==3.4"
},
"importlib-metadata": {
"hashes": [
"sha256:7efb448ec9a5e313a57655d35aa54cd3e01b7e1fbcf72dce1bf06119420f5bad",
"sha256:e354bedeb60efa6affdcc8ae121b73544a7aa74156d047311948f6d711cd378d"
],
"markers": "python_version < '3.10'",
"version": "==6.0.0"
},
"jinja2": {
"hashes": [
"sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852",
"sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"
],
"markers": "python_version >= '3.7'",
"version": "==3.1.2"
},
"lxml": {
"hashes": [
"sha256:01d36c05f4afb8f7c20fd9ed5badca32a2029b93b1750f571ccc0b142531caf7",
"sha256:04876580c050a8c5341d706dd464ff04fd597095cc8c023252566a8826505726",
"sha256:05ca3f6abf5cf78fe053da9b1166e062ade3fa5d4f92b4ed688127ea7d7b1d03",
"sha256:090c6543d3696cbe15b4ac6e175e576bcc3f1ccfbba970061b7300b0c15a2140",
"sha256:0dc313ef231edf866912e9d8f5a042ddab56c752619e92dfd3a2c277e6a7299a",
"sha256:0f2b1e0d79180f344ff9f321327b005ca043a50ece8713de61d1cb383fb8ac05",
"sha256:13598ecfbd2e86ea7ae45ec28a2a54fb87ee9b9fdb0f6d343297d8e548392c03",
"sha256:16efd54337136e8cd72fb9485c368d91d77a47ee2d42b057564aae201257d419",
"sha256:1ab8f1f932e8f82355e75dda5413a57612c6ea448069d4fb2e217e9a4bed13d4",
"sha256:223f4232855ade399bd409331e6ca70fb5578efef22cf4069a6090acc0f53c0e",
"sha256:2455cfaeb7ac70338b3257f41e21f0724f4b5b0c0e7702da67ee6c3640835b67",
"sha256:2899456259589aa38bfb018c364d6ae7b53c5c22d8e27d0ec7609c2a1ff78b50",
"sha256:2a29ba94d065945944016b6b74e538bdb1751a1db6ffb80c9d3c2e40d6fa9894",
"sha256:2a87fa548561d2f4643c99cd13131acb607ddabb70682dcf1dff5f71f781a4bf",
"sha256:2e430cd2824f05f2d4f687701144556646bae8f249fd60aa1e4c768ba7018947",
"sha256:36c3c175d34652a35475a73762b545f4527aec044910a651d2bf50de9c3352b1",
"sha256:3818b8e2c4b5148567e1b09ce739006acfaa44ce3156f8cbbc11062994b8e8dd",
"sha256:3ab9fa9d6dc2a7f29d7affdf3edebf6ece6fb28a6d80b14c3b2fb9d39b9322c3",
"sha256:3efea981d956a6f7173b4659849f55081867cf897e719f57383698af6f618a92",
"sha256:4c8f293f14abc8fd3e8e01c5bd86e6ed0b6ef71936ded5bf10fe7a5efefbaca3",
"sha256:5344a43228767f53a9df6e5b253f8cdca7dfc7b7aeae52551958192f56d98457",
"sha256:58bfa3aa19ca4c0f28c5dde0ff56c520fbac6f0daf4fac66ed4c8d2fb7f22e74",
"sha256:5b4545b8a40478183ac06c073e81a5ce4cf01bf1734962577cf2bb569a5b3bbf",
"sha256:5f50a1c177e2fa3ee0667a5ab79fdc6b23086bc8b589d90b93b4bd17eb0e64d1",
"sha256:63da2ccc0857c311d764e7d3d90f429c252e83b52d1f8f1d1fe55be26827d1f4",
"sha256:6749649eecd6a9871cae297bffa4ee76f90b4504a2a2ab528d9ebe912b101975",
"sha256:6804daeb7ef69e7b36f76caddb85cccd63d0c56dedb47555d2fc969e2af6a1a5",
"sha256:689bb688a1db722485e4610a503e3e9210dcc20c520b45ac8f7533c837be76fe",
"sha256:699a9af7dffaf67deeae27b2112aa06b41c370d5e7633e0ee0aea2e0b6c211f7",
"sha256:6b418afe5df18233fc6b6093deb82a32895b6bb0b1155c2cdb05203f583053f1",
"sha256:76cf573e5a365e790396a5cc2b909812633409306c6531a6877c59061e42c4f2",
"sha256:7b515674acfdcadb0eb5d00d8a709868173acece5cb0be3dd165950cbfdf5409",
"sha256:7b770ed79542ed52c519119473898198761d78beb24b107acf3ad65deae61f1f",
"sha256:7d2278d59425777cfcb19735018d897ca8303abe67cc735f9f97177ceff8027f",
"sha256:7e91ee82f4199af8c43d8158024cbdff3d931df350252288f0d4ce656df7f3b5",
"sha256:821b7f59b99551c69c85a6039c65b75f5683bdc63270fec660f75da67469ca24",
"sha256:822068f85e12a6e292803e112ab876bc03ed1f03dddb80154c395f891ca6b31e",
"sha256:8340225bd5e7a701c0fa98284c849c9b9fc9238abf53a0ebd90900f25d39a4e4",
"sha256:85cabf64adec449132e55616e7ca3e1000ab449d1d0f9d7f83146ed5bdcb6d8a",
"sha256:880bbbcbe2fca64e2f4d8e04db47bcdf504936fa2b33933efd945e1b429bea8c",
"sha256:8d0b4612b66ff5d62d03bcaa043bb018f74dfea51184e53f067e6fdcba4bd8de",
"sha256:8e20cb5a47247e383cf4ff523205060991021233ebd6f924bca927fcf25cf86f",
"sha256:925073b2fe14ab9b87e73f9a5fde6ce6392da430f3004d8b72cc86f746f5163b",
"sha256:998c7c41910666d2976928c38ea96a70d1aa43be6fe502f21a651e17483a43c5",
"sha256:9b22c5c66f67ae00c0199f6055705bc3eb3fcb08d03d2ec4059a2b1b25ed48d7",
"sha256:9f102706d0ca011de571de32c3247c6476b55bb6bc65a20f682f000b07a4852a",
"sha256:a08cff61517ee26cb56f1e949cca38caabe9ea9fbb4b1e10a805dc39844b7d5c",
"sha256:a0a336d6d3e8b234a3aae3c674873d8f0e720b76bc1d9416866c41cd9500ffb9",
"sha256:a35f8b7fa99f90dd2f5dc5a9fa12332642f087a7641289ca6c40d6e1a2637d8e",
"sha256:a38486985ca49cfa574a507e7a2215c0c780fd1778bb6290c21193b7211702ab",
"sha256:a5da296eb617d18e497bcf0a5c528f5d3b18dadb3619fbdadf4ed2356ef8d941",
"sha256:a6e441a86553c310258aca15d1c05903aaf4965b23f3bc2d55f200804e005ee5",
"sha256:a82d05da00a58b8e4c0008edbc8a4b6ec5a4bc1e2ee0fb6ed157cf634ed7fa45",
"sha256:ab323679b8b3030000f2be63e22cdeea5b47ee0abd2d6a1dc0c8103ddaa56cd7",
"sha256:b1f42b6921d0e81b1bcb5e395bc091a70f41c4d4e55ba99c6da2b31626c44892",
"sha256:b23e19989c355ca854276178a0463951a653309fb8e57ce674497f2d9f208746",
"sha256:b264171e3143d842ded311b7dccd46ff9ef34247129ff5bf5066123c55c2431c",
"sha256:b26a29f0b7fc6f0897f043ca366142d2b609dc60756ee6e4e90b5f762c6adc53",
"sha256:b64d891da92e232c36976c80ed7ebb383e3f148489796d8d31a5b6a677825efe",
"sha256:b9cc34af337a97d470040f99ba4282f6e6bac88407d021688a5d585e44a23184",
"sha256:bc718cd47b765e790eecb74d044cc8d37d58562f6c314ee9484df26276d36a38",
"sha256:be7292c55101e22f2a3d4d8913944cbea71eea90792bf914add27454a13905df",
"sha256:c83203addf554215463b59f6399835201999b5e48019dc17f182ed5ad87205c9",
"sha256:c9ec3eaf616d67db0764b3bb983962b4f385a1f08304fd30c7283954e6a7869b",
"sha256:ca34efc80a29351897e18888c71c6aca4a359247c87e0b1c7ada14f0ab0c0fb2",
"sha256:ca989b91cf3a3ba28930a9fc1e9aeafc2a395448641df1f387a2d394638943b0",
"sha256:d02a5399126a53492415d4906ab0ad0375a5456cc05c3fc0fc4ca11771745cda",
"sha256:d17bc7c2ccf49c478c5bdd447594e82692c74222698cfc9b5daae7ae7e90743b",
"sha256:d5bf6545cd27aaa8a13033ce56354ed9e25ab0e4ac3b5392b763d8d04b08e0c5",
"sha256:d6b430a9938a5a5d85fc107d852262ddcd48602c120e3dbb02137c83d212b380",
"sha256:da248f93f0418a9e9d94b0080d7ebc407a9a5e6d0b57bb30db9b5cc28de1ad33",
"sha256:da4dd7c9c50c059aba52b3524f84d7de956f7fef88f0bafcf4ad7dde94a064e8",
"sha256:df0623dcf9668ad0445e0558a21211d4e9a149ea8f5666917c8eeec515f0a6d1",
"sha256:e5168986b90a8d1f2f9dc1b841467c74221bd752537b99761a93d2d981e04889",
"sha256:efa29c2fe6b4fdd32e8ef81c1528506895eca86e1d8c4657fda04c9b3786ddf9",
"sha256:f1496ea22ca2c830cbcbd473de8f114a320da308438ae65abad6bab7867fe38f",
"sha256:f49e52d174375a7def9915c9f06ec4e569d235ad428f70751765f48d5926678c"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
"version": "==4.9.2"
},
"markdown": {
"hashes": [
"sha256:cbb516f16218e643d8e0a95b309f77eb118cb138d39a4f27851e6a63581db874",
"sha256:f5da449a6e1c989a4cea2631aa8ee67caa5a2ef855d551c88f9e309f4634c621"
],
"markers": "python_version >= '3.6'",
"version": "==3.3.7"
},
"markdown2": {
"hashes": [
"sha256:62156ad2426249a1d1a9059cfe7eab712ff2f397660991b1796c342c19bfa922",
"sha256:dfb52ff4007389567b391ce8fa3cff3dd363d1f282d20205383c6a710f9870d1"
],
"markers": "python_version >= '3.5' and python_version < '4'",
"version": "==2.4.7"
},
"markupsafe": {
"hashes": [
"sha256:0576fe974b40a400449768941d5d0858cc624e3249dfd1e0c33674e5c7ca7aed",
"sha256:085fd3201e7b12809f9e6e9bc1e5c96a368c8523fad5afb02afe3c051ae4afcc",
"sha256:090376d812fb6ac5f171e5938e82e7f2d7adc2b629101cec0db8b267815c85e2",
"sha256:0b462104ba25f1ac006fdab8b6a01ebbfbce9ed37fd37fd4acd70c67c973e460",
"sha256:137678c63c977754abe9086a3ec011e8fd985ab90631145dfb9294ad09c102a7",
"sha256:1bea30e9bf331f3fef67e0a3877b2288593c98a21ccb2cf29b74c581a4eb3af0",
"sha256:22152d00bf4a9c7c83960521fc558f55a1adbc0631fbb00a9471e097b19d72e1",
"sha256:22731d79ed2eb25059ae3df1dfc9cb1546691cc41f4e3130fe6bfbc3ecbbecfa",
"sha256:2298c859cfc5463f1b64bd55cb3e602528db6fa0f3cfd568d3605c50678f8f03",
"sha256:28057e985dace2f478e042eaa15606c7efccb700797660629da387eb289b9323",
"sha256:2e7821bffe00aa6bd07a23913b7f4e01328c3d5cc0b40b36c0bd81d362faeb65",
"sha256:2ec4f2d48ae59bbb9d1f9d7efb9236ab81429a764dedca114f5fdabbc3788013",
"sha256:340bea174e9761308703ae988e982005aedf427de816d1afe98147668cc03036",
"sha256:40627dcf047dadb22cd25ea7ecfe9cbf3bbbad0482ee5920b582f3809c97654f",
"sha256:40dfd3fefbef579ee058f139733ac336312663c6706d1163b82b3003fb1925c4",
"sha256:4cf06cdc1dda95223e9d2d3c58d3b178aa5dacb35ee7e3bbac10e4e1faacb419",
"sha256:50c42830a633fa0cf9e7d27664637532791bfc31c731a87b202d2d8ac40c3ea2",
"sha256:55f44b440d491028addb3b88f72207d71eeebfb7b5dbf0643f7c023ae1fba619",
"sha256:608e7073dfa9e38a85d38474c082d4281f4ce276ac0010224eaba11e929dd53a",
"sha256:63ba06c9941e46fa389d389644e2d8225e0e3e5ebcc4ff1ea8506dce646f8c8a",
"sha256:65608c35bfb8a76763f37036547f7adfd09270fbdbf96608be2bead319728fcd",
"sha256:665a36ae6f8f20a4676b53224e33d456a6f5a72657d9c83c2aa00765072f31f7",
"sha256:6d6607f98fcf17e534162f0709aaad3ab7a96032723d8ac8750ffe17ae5a0666",
"sha256:7313ce6a199651c4ed9d7e4cfb4aa56fe923b1adf9af3b420ee14e6d9a73df65",
"sha256:7668b52e102d0ed87cb082380a7e2e1e78737ddecdde129acadb0eccc5423859",
"sha256:7df70907e00c970c60b9ef2938d894a9381f38e6b9db73c5be35e59d92e06625",
"sha256:7e007132af78ea9df29495dbf7b5824cb71648d7133cf7848a2a5dd00d36f9ff",
"sha256:835fb5e38fd89328e9c81067fd642b3593c33e1e17e2fdbf77f5676abb14a156",
"sha256:8bca7e26c1dd751236cfb0c6c72d4ad61d986e9a41bbf76cb445f69488b2a2bd",
"sha256:8db032bf0ce9022a8e41a22598eefc802314e81b879ae093f36ce9ddf39ab1ba",
"sha256:99625a92da8229df6d44335e6fcc558a5037dd0a760e11d84be2260e6f37002f",
"sha256:9cad97ab29dfc3f0249b483412c85c8ef4766d96cdf9dcf5a1e3caa3f3661cf1",
"sha256:a4abaec6ca3ad8660690236d11bfe28dfd707778e2442b45addd2f086d6ef094",
"sha256:a6e40afa7f45939ca356f348c8e23048e02cb109ced1eb8420961b2f40fb373a",
"sha256:a6f2fcca746e8d5910e18782f976489939d54a91f9411c32051b4aab2bd7c513",
"sha256:a806db027852538d2ad7555b203300173dd1b77ba116de92da9afbc3a3be3eed",
"sha256:abcabc8c2b26036d62d4c746381a6f7cf60aafcc653198ad678306986b09450d",
"sha256:b8526c6d437855442cdd3d87eede9c425c4445ea011ca38d937db299382e6fa3",
"sha256:bb06feb762bade6bf3c8b844462274db0c76acc95c52abe8dbed28ae3d44a147",
"sha256:c0a33bc9f02c2b17c3ea382f91b4db0e6cde90b63b296422a939886a7a80de1c",
"sha256:c4a549890a45f57f1ebf99c067a4ad0cb423a05544accaf2b065246827ed9603",
"sha256:ca244fa73f50a800cf8c3ebf7fd93149ec37f5cb9596aa8873ae2c1d23498601",
"sha256:cf877ab4ed6e302ec1d04952ca358b381a882fbd9d1b07cccbfd61783561f98a",
"sha256:d9d971ec1e79906046aa3ca266de79eac42f1dbf3612a05dc9368125952bd1a1",
"sha256:da25303d91526aac3672ee6d49a2f3db2d9502a4a60b55519feb1a4c7714e07d",
"sha256:e55e40ff0cc8cc5c07996915ad367fa47da6b3fc091fdadca7f5403239c5fec3",
"sha256:f03a532d7dee1bed20bc4884194a16160a2de9ffc6354b3878ec9682bb623c54",
"sha256:f1cd098434e83e656abf198f103a8207a8187c0fc110306691a2e94a78d0abb2",
"sha256:f2bfb563d0211ce16b63c7cb9395d2c682a23187f54c3d79bfec33e6705473c6",
"sha256:f8ffb705ffcf5ddd0e80b65ddf7bed7ee4f5a441ea7d3419e861a12eaf41af58"
],
"markers": "python_version >= '3.7'",
"version": "==2.1.2"
},
"mergedeep": {
"hashes": [
"sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8",
"sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"
],
"markers": "python_version >= '3.6'",
"version": "==1.3.4"
},
"mkdocs": {
"hashes": [
"sha256:8947af423a6d0facf41ea1195b8e1e8c85ad94ac95ae307fe11232e0424b11c5",
"sha256:c8856a832c1e56702577023cd64cc5f84948280c1c0fcc6af4cd39006ea6aa8c"
],
"index": "pypi",
"version": "==1.4.2"
},
"mkdocs-git-committers-plugin-2": {
"hashes": [
"sha256:14d4a89bf8965ab62ca9b8b0cd90f6c9b421bb89bfedca0d91c5119f18791360",
"sha256:4f6eb6137f35967dfa444703b6ea293f05bf2fd183506bc51db8fb21b061d5a3"
],
"index": "pypi",
"version": "==1.1.1"
},
"mkdocs-git-revision-date-localized-plugin": {
"hashes": [
"sha256:38517e2084229da1a1b9460e846c2748d238c2d79efd405d1b9174a87bd81d79",
"sha256:4ba0e49abea3e9f6ee26e2623ff7283873da657471c61f1d0cfbb986f403316d"
],
"index": "pypi",
"version": "==1.1.0"
},
"mkdocs-macros-plugin": {
"hashes": [
"sha256:96bdabeb98b96139544f0048ea2f5cb80c7befde6b21e94c6d4596c22774cbcf",
"sha256:9e64e1cabcf6925359de29fe54f62d5847fb455c2528c440b87f8f1240650608"
],
"index": "pypi",
"version": "==0.7.0"
},
"mkdocs-material": {
"path": "./mkdocs-material",
"version": "==9.0.11+insiders.4.30.0"
},
"mkdocs-material-extensions": {
"hashes": [
"sha256:9c003da71e2cc2493d910237448c672e00cefc800d3d6ae93d2fc69979e3bd93",
"sha256:e41d9f38e4798b6617ad98ca8f7f1157b1e4385ac1459ca1e4ea219b556df945"
],
"markers": "python_version >= '3.7'",
"version": "==1.1.1"
},
"mkdocs-static-i18n": {
"hashes": [
"sha256:eccd819e727bc91bb58cc7c34230266f9e475abfbc11ace1e4c1f262969e2c2e"
],
"index": "pypi",
"version": "==0.53"
},
"packaging": {
"hashes": [
"sha256:714ac14496c3e68c99c29b00845f7a2b85f3bb6f1078fd9f72fd20f0570002b2",
"sha256:b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97"
],
"markers": "python_version >= '3.7'",
"version": "==23.0"
},
"paginate": {
"hashes": [
"sha256:5e6007b6a9398177a7e1648d04fdd9f8c9766a1a945bceac82f1929e8c78af2d"
],
"version": "==0.5.6"
},
"pillow": {
"hashes": [
"sha256:013016af6b3a12a2f40b704677f8b51f72cb007dac785a9933d5c86a72a7fe33",
"sha256:0845adc64fe9886db00f5ab68c4a8cd933ab749a87747555cec1c95acea64b0b",
"sha256:0884ba7b515163a1a05440a138adeb722b8a6ae2c2b33aea93ea3118dd3a899e",
"sha256:09b89ddc95c248ee788328528e6a2996e09eaccddeeb82a5356e92645733be35",
"sha256:0dd4c681b82214b36273c18ca7ee87065a50e013112eea7d78c7a1b89a739153",
"sha256:0e51f608da093e5d9038c592b5b575cadc12fd748af1479b5e858045fff955a9",
"sha256:0f3269304c1a7ce82f1759c12ce731ef9b6e95b6df829dccd9fe42912cc48569",
"sha256:16a8df99701f9095bea8a6c4b3197da105df6f74e6176c5b410bc2df2fd29a57",
"sha256:19005a8e58b7c1796bc0167862b1f54a64d3b44ee5d48152b06bb861458bc0f8",
"sha256:1b4b4e9dda4f4e4c4e6896f93e84a8f0bcca3b059de9ddf67dac3c334b1195e1",
"sha256:28676836c7796805914b76b1837a40f76827ee0d5398f72f7dcc634bae7c6264",
"sha256:2968c58feca624bb6c8502f9564dd187d0e1389964898f5e9e1fbc8533169157",
"sha256:3f4cc516e0b264c8d4ccd6b6cbc69a07c6d582d8337df79be1e15a5056b258c9",
"sha256:3fa1284762aacca6dc97474ee9c16f83990b8eeb6697f2ba17140d54b453e133",
"sha256:43521ce2c4b865d385e78579a082b6ad1166ebed2b1a2293c3be1d68dd7ca3b9",
"sha256:451f10ef963918e65b8869e17d67db5e2f4ab40e716ee6ce7129b0cde2876eab",
"sha256:46c259e87199041583658457372a183636ae8cd56dbf3f0755e0f376a7f9d0e6",
"sha256:46f39cab8bbf4a384ba7cb0bc8bae7b7062b6a11cfac1ca4bc144dea90d4a9f5",
"sha256:519e14e2c49fcf7616d6d2cfc5c70adae95682ae20f0395e9280db85e8d6c4df",
"sha256:53dcb50fbdc3fb2c55431a9b30caeb2f7027fcd2aeb501459464f0214200a503",
"sha256:54614444887e0d3043557d9dbc697dbb16cfb5a35d672b7a0fcc1ed0cf1c600b",
"sha256:575d8912dca808edd9acd6f7795199332696d3469665ef26163cd090fa1f8bfa",
"sha256:5dd5a9c3091a0f414a963d427f920368e2b6a4c2f7527fdd82cde8ef0bc7a327",
"sha256:5f532a2ad4d174eb73494e7397988e22bf427f91acc8e6ebf5bb10597b49c493",
"sha256:60e7da3a3ad1812c128750fc1bc14a7ceeb8d29f77e0a2356a8fb2aa8925287d",
"sha256:653d7fb2df65efefbcbf81ef5fe5e5be931f1ee4332c2893ca638c9b11a409c4",
"sha256:6663977496d616b618b6cfa43ec86e479ee62b942e1da76a2c3daa1c75933ef4",
"sha256:6abfb51a82e919e3933eb137e17c4ae9c0475a25508ea88993bb59faf82f3b35",
"sha256:6c6b1389ed66cdd174d040105123a5a1bc91d0aa7059c7261d20e583b6d8cbd2",
"sha256:6d9dfb9959a3b0039ee06c1a1a90dc23bac3b430842dcb97908ddde05870601c",
"sha256:765cb54c0b8724a7c12c55146ae4647e0274a839fb6de7bcba841e04298e1011",
"sha256:7a21222644ab69ddd9967cfe6f2bb420b460dae4289c9d40ff9a4896e7c35c9a",
"sha256:7ac7594397698f77bce84382929747130765f66406dc2cd8b4ab4da68ade4c6e",
"sha256:7cfc287da09f9d2a7ec146ee4d72d6ea1342e770d975e49a8621bf54eaa8f30f",
"sha256:83125753a60cfc8c412de5896d10a0a405e0bd88d0470ad82e0869ddf0cb3848",
"sha256:847b114580c5cc9ebaf216dd8c8dbc6b00a3b7ab0131e173d7120e6deade1f57",
"sha256:87708d78a14d56a990fbf4f9cb350b7d89ee8988705e58e39bdf4d82c149210f",
"sha256:8a2b5874d17e72dfb80d917213abd55d7e1ed2479f38f001f264f7ce7bae757c",
"sha256:8f127e7b028900421cad64f51f75c051b628db17fb00e099eb148761eed598c9",
"sha256:94cdff45173b1919350601f82d61365e792895e3c3a3443cf99819e6fbf717a5",
"sha256:99d92d148dd03fd19d16175b6d355cc1b01faf80dae93c6c3eb4163709edc0a9",
"sha256:9a3049a10261d7f2b6514d35bbb7a4dfc3ece4c4de14ef5876c4b7a23a0e566d",
"sha256:9d9a62576b68cd90f7075876f4e8444487db5eeea0e4df3ba298ee38a8d067b0",
"sha256:9e5f94742033898bfe84c93c831a6f552bb629448d4072dd312306bab3bd96f1",
"sha256:a1c2d7780448eb93fbcc3789bf3916aa5720d942e37945f4056680317f1cd23e",
"sha256:a2e0f87144fcbbe54297cae708c5e7f9da21a4646523456b00cc956bd4c65815",
"sha256:a4dfdae195335abb4e89cc9762b2edc524f3c6e80d647a9a81bf81e17e3fb6f0",
"sha256:a96e6e23f2b79433390273eaf8cc94fec9c6370842e577ab10dabdcc7ea0a66b",
"sha256:aabdab8ec1e7ca7f1434d042bf8b1e92056245fb179790dc97ed040361f16bfd",
"sha256:b222090c455d6d1a64e6b7bb5f4035c4dff479e22455c9eaa1bdd4c75b52c80c",
"sha256:b52ff4f4e002f828ea6483faf4c4e8deea8d743cf801b74910243c58acc6eda3",
"sha256:b70756ec9417c34e097f987b4d8c510975216ad26ba6e57ccb53bc758f490dab",
"sha256:b8c2f6eb0df979ee99433d8b3f6d193d9590f735cf12274c108bd954e30ca858",
"sha256:b9b752ab91e78234941e44abdecc07f1f0d8f51fb62941d32995b8161f68cfe5",
"sha256:ba6612b6548220ff5e9df85261bddc811a057b0b465a1226b39bfb8550616aee",
"sha256:bd752c5ff1b4a870b7661234694f24b1d2b9076b8bf337321a814c612665f343",
"sha256:c3c4ed2ff6760e98d262e0cc9c9a7f7b8a9f61aa4d47c58835cdaf7b0b8811bb",
"sha256:c5c1362c14aee73f50143d74389b2c158707b4abce2cb055b7ad37ce60738d47",
"sha256:cb362e3b0976dc994857391b776ddaa8c13c28a16f80ac6522c23d5257156bed",
"sha256:d197df5489004db87d90b918033edbeee0bd6df3848a204bca3ff0a903bef837",
"sha256:d3b56206244dc8711f7e8b7d6cad4663917cd5b2d950799425076681e8766286",
"sha256:d5b2f8a31bd43e0f18172d8ac82347c8f37ef3e0b414431157718aa234991b28",
"sha256:d7081c084ceb58278dd3cf81f836bc818978c0ccc770cbbb202125ddabec6628",
"sha256:db74f5562c09953b2c5f8ec4b7dfd3f5421f31811e97d1dbc0a7c93d6e3a24df",
"sha256:df41112ccce5d47770a0c13651479fbcd8793f34232a2dd9faeccb75eb5d0d0d",
"sha256:e1339790c083c5a4de48f688b4841f18df839eb3c9584a770cbd818b33e26d5d",
"sha256:e621b0246192d3b9cb1dc62c78cfa4c6f6d2ddc0ec207d43c0dedecb914f152a",
"sha256:e8c5cf126889a4de385c02a2c3d3aba4b00f70234bfddae82a5eaa3ee6d5e3e6",
"sha256:e9d7747847c53a16a729b6ee5e737cf170f7a16611c143d95aa60a109a59c336",
"sha256:eaef5d2de3c7e9b21f1e762f289d17b726c2239a42b11e25446abf82b26ac132",
"sha256:ed3e4b4e1e6de75fdc16d3259098de7c6571b1a6cc863b1a49e7d3d53e036070",
"sha256:ef21af928e807f10bf4141cad4746eee692a0dd3ff56cfb25fce076ec3cc8abe",
"sha256:f09598b416ba39a8f489c124447b007fe865f786a89dbfa48bb5cf395693132a",
"sha256:f0caf4a5dcf610d96c3bd32932bfac8aee61c96e60481c2a0ea58da435e25acd",
"sha256:f6e78171be3fb7941f9910ea15b4b14ec27725865a73c15277bc39f5ca4f8391",
"sha256:f715c32e774a60a337b2bb8ad9839b4abf75b267a0f18806f6f4f5f1688c4b5a",
"sha256:fb5c1ad6bad98c57482236a21bf985ab0ef42bd51f7ad4e4538e89a997624e12"
],
"index": "pypi",
"version": "==9.4.0"
},
"pipdeptree": {
"hashes": [
"sha256:8c012fd8ee79083806db9d1410a44648f71dba11364719aa40ed718f4762e964",
"sha256:9d666f77ff1b9528d01b3d98594096484f56de70d752abe22f13e681be239bd8"
],
"markers": "python_version >= '3.7'",
"version": "==2.3.3"
},
"pycparser": {
"hashes": [
"sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9",
"sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"
],
"version": "==2.21"
},
"pygments": {
"hashes": [
"sha256:b3ed06a9e8ac9a9aae5a6f5dbe78a8a58655d17b43b93c078f094ddc476ae297",
"sha256:fa7bd7bd2771287c0de303af8bfdfc731f51bd2c6a47ab69d117138893b82717"
],
"markers": "python_version >= '3.6'",
"version": "==2.14.0"
},
"pymdown-extensions": {
"hashes": [
"sha256:c3d804eb4a42b85bafb5f36436342a5ad38df03878bb24db8855a4aa8b08b765",
"sha256:ebb33069bafcb64d5f5988043331d4ea4929325dc678a6bcf247ddfcf96499f8"
],
"markers": "python_version >= '3.7'",
"version": "==9.9.2"
},
"pyquery": {
"hashes": [
"sha256:8dfc9b4b7c5f877d619bbae74b1898d5743f6ca248cfd5d72b504dd614da312f",
"sha256:963e8d4e90262ff6d8dec072ea97285dc374a2f69cad7776f4082abcf6a1d8ae"
],
"version": "==2.0.0"
},
"python-dateutil": {
"hashes": [
"sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86",
"sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==2.8.2"
},
"pytz": {
"hashes": [
"sha256:01a0681c4b9684a28304615eba55d1ab31ae00bf68ec157ec3708a8182dbbcd0",
"sha256:78f4f37d8198e0627c5f1143240bb0206b8691d8d7ac6d78fee88b78733f8c4a"
],
"markers": "python_version < '3.9'",
"version": "==2022.7.1"
},
"pyyaml": {
"hashes": [
"sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf",
"sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293",
"sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b",
"sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57",
"sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b",
"sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4",
"sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07",
"sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba",
"sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9",
"sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287",
"sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513",
"sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0",
"sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782",
"sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0",
"sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92",
"sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f",
"sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2",
"sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc",
"sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1",
"sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c",
"sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86",
"sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4",
"sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c",
"sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34",
"sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b",
"sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d",
"sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c",
"sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb",
"sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7",
"sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737",
"sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3",
"sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d",
"sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358",
"sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53",
"sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78",
"sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803",
"sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a",
"sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f",
"sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174",
"sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"
],
"markers": "python_version >= '3.6'",
"version": "==6.0"
},
"pyyaml-env-tag": {
"hashes": [
"sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb",
"sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"
],
"markers": "python_version >= '3.6'",
"version": "==0.1"
},
"readtime": {
"hashes": [
"sha256:0a67e29adfcfb25488b1edd6f08e158de5f832e84fe8e35cf83e639208ce0b97",
"sha256:ddf221ed5b004c97ee350bc782dda1139ea6dfb817a404cdcc251ac33c11aa28"
],
"version": "==2.0.0"
},
"regex": {
"hashes": [
"sha256:052b670fafbe30966bbe5d025e90b2a491f85dfe5b2583a163b5e60a85a321ad",
"sha256:0653d012b3bf45f194e5e6a41df9258811ac8fc395579fa82958a8b76286bea4",
"sha256:0a069c8483466806ab94ea9068c34b200b8bfc66b6762f45a831c4baaa9e8cdd",
"sha256:0cf0da36a212978be2c2e2e2d04bdff46f850108fccc1851332bcae51c8907cc",
"sha256:131d4be09bea7ce2577f9623e415cab287a3c8e0624f778c1d955ec7c281bd4d",
"sha256:144486e029793a733e43b2e37df16a16df4ceb62102636ff3db6033994711066",
"sha256:1ddf14031a3882f684b8642cb74eea3af93a2be68893901b2b387c5fd92a03ec",
"sha256:1eba476b1b242620c266edf6325b443a2e22b633217a9835a52d8da2b5c051f9",
"sha256:20f61c9944f0be2dc2b75689ba409938c14876c19d02f7585af4460b6a21403e",
"sha256:22960019a842777a9fa5134c2364efaed5fbf9610ddc5c904bd3a400973b0eb8",
"sha256:22e7ebc231d28393dfdc19b185d97e14a0f178bedd78e85aad660e93b646604e",
"sha256:23cbb932cc53a86ebde0fb72e7e645f9a5eec1a5af7aa9ce333e46286caef783",
"sha256:29c04741b9ae13d1e94cf93fca257730b97ce6ea64cfe1eba11cf9ac4e85afb6",
"sha256:2bde29cc44fa81c0a0c8686992c3080b37c488df167a371500b2a43ce9f026d1",
"sha256:2cdc55ca07b4e70dda898d2ab7150ecf17c990076d3acd7a5f3b25cb23a69f1c",
"sha256:370f6e97d02bf2dd20d7468ce4f38e173a124e769762d00beadec3bc2f4b3bc4",
"sha256:395161bbdbd04a8333b9ff9763a05e9ceb4fe210e3c7690f5e68cedd3d65d8e1",
"sha256:44136355e2f5e06bf6b23d337a75386371ba742ffa771440b85bed367c1318d1",
"sha256:44a6c2f6374e0033873e9ed577a54a3602b4f609867794c1a3ebba65e4c93ee7",
"sha256:4919899577ba37f505aaebdf6e7dc812d55e8f097331312db7f1aab18767cce8",
"sha256:4b4b1fe58cd102d75ef0552cf17242705ce0759f9695334a56644ad2d83903fe",
"sha256:4bdd56ee719a8f751cf5a593476a441c4e56c9b64dc1f0f30902858c4ef8771d",
"sha256:4bf41b8b0a80708f7e0384519795e80dcb44d7199a35d52c15cc674d10b3081b",
"sha256:4cac3405d8dda8bc6ed499557625585544dd5cbf32072dcc72b5a176cb1271c8",
"sha256:4fe7fda2fe7c8890d454f2cbc91d6c01baf206fbc96d89a80241a02985118c0c",
"sha256:50921c140561d3db2ab9f5b11c5184846cde686bb5a9dc64cae442926e86f3af",
"sha256:5217c25229b6a85049416a5c1e6451e9060a1edcf988641e309dbe3ab26d3e49",
"sha256:5352bea8a8f84b89d45ccc503f390a6be77917932b1c98c4cdc3565137acc714",
"sha256:542e3e306d1669b25936b64917285cdffcd4f5c6f0247636fec037187bd93542",
"sha256:543883e3496c8b6d58bd036c99486c3c8387c2fc01f7a342b760c1ea3158a318",
"sha256:586b36ebda81e6c1a9c5a5d0bfdc236399ba6595e1397842fd4a45648c30f35e",
"sha256:597f899f4ed42a38df7b0e46714880fb4e19a25c2f66e5c908805466721760f5",
"sha256:5a260758454580f11dd8743fa98319bb046037dfab4f7828008909d0aa5292bc",
"sha256:5aefb84a301327ad115e9d346c8e2760009131d9d4b4c6b213648d02e2abe144",
"sha256:5e6a5567078b3eaed93558842346c9d678e116ab0135e22eb72db8325e90b453",
"sha256:5ff525698de226c0ca743bfa71fc6b378cda2ddcf0d22d7c37b1cc925c9650a5",
"sha256:61edbca89aa3f5ef7ecac8c23d975fe7261c12665f1d90a6b1af527bba86ce61",
"sha256:659175b2144d199560d99a8d13b2228b85e6019b6e09e556209dfb8c37b78a11",
"sha256:6a9a19bea8495bb419dc5d38c4519567781cd8d571c72efc6aa959473d10221a",
"sha256:6b30bddd61d2a3261f025ad0f9ee2586988c6a00c780a2fb0a92cea2aa702c54",
"sha256:6ffd55b5aedc6f25fd8d9f905c9376ca44fcf768673ffb9d160dd6f409bfda73",
"sha256:702d8fc6f25bbf412ee706bd73019da5e44a8400861dfff7ff31eb5b4a1276dc",
"sha256:74bcab50a13960f2a610cdcd066e25f1fd59e23b69637c92ad470784a51b1347",
"sha256:75f591b2055523fc02a4bbe598aa867df9e953255f0b7f7715d2a36a9c30065c",
"sha256:763b64853b0a8f4f9cfb41a76a4a85a9bcda7fdda5cb057016e7706fde928e66",
"sha256:76c598ca73ec73a2f568e2a72ba46c3b6c8690ad9a07092b18e48ceb936e9f0c",
"sha256:78d680ef3e4d405f36f0d6d1ea54e740366f061645930072d39bca16a10d8c93",
"sha256:7b280948d00bd3973c1998f92e22aa3ecb76682e3a4255f33e1020bd32adf443",
"sha256:7db345956ecce0c99b97b042b4ca7326feeec6b75facd8390af73b18e2650ffc",
"sha256:7dbdce0c534bbf52274b94768b3498abdf675a691fec5f751b6057b3030f34c1",
"sha256:7ef6b5942e6bfc5706301a18a62300c60db9af7f6368042227ccb7eeb22d0892",
"sha256:7f5a3ffc731494f1a57bd91c47dc483a1e10048131ffb52d901bfe2beb6102e8",
"sha256:8a45b6514861916c429e6059a55cf7db74670eaed2052a648e3e4d04f070e001",
"sha256:8ad241da7fac963d7573cc67a064c57c58766b62a9a20c452ca1f21050868dfa",
"sha256:8b0886885f7323beea6f552c28bff62cbe0983b9fbb94126531693ea6c5ebb90",
"sha256:8ca88da1bd78990b536c4a7765f719803eb4f8f9971cc22d6ca965c10a7f2c4c",
"sha256:8e0caeff18b96ea90fc0eb6e3bdb2b10ab5b01a95128dfeccb64a7238decf5f0",
"sha256:957403a978e10fb3ca42572a23e6f7badff39aa1ce2f4ade68ee452dc6807692",
"sha256:9af69f6746120998cd9c355e9c3c6aec7dff70d47247188feb4f829502be8ab4",
"sha256:9c94f7cc91ab16b36ba5ce476f1904c91d6c92441f01cd61a8e2729442d6fcf5",
"sha256:a37d51fa9a00d265cf73f3de3930fa9c41548177ba4f0faf76e61d512c774690",
"sha256:a3a98921da9a1bf8457aeee6a551948a83601689e5ecdd736894ea9bbec77e83",
"sha256:a3c1ebd4ed8e76e886507c9eddb1a891673686c813adf889b864a17fafcf6d66",
"sha256:a5f9505efd574d1e5b4a76ac9dd92a12acb2b309551e9aa874c13c11caefbe4f",
"sha256:a8ff454ef0bb061e37df03557afda9d785c905dab15584860f982e88be73015f",
"sha256:a9d0b68ac1743964755ae2d89772c7e6fb0118acd4d0b7464eaf3921c6b49dd4",
"sha256:aa62a07ac93b7cb6b7d0389d8ef57ffc321d78f60c037b19dfa78d6b17c928ee",
"sha256:ac741bf78b9bb432e2d314439275235f41656e189856b11fb4e774d9f7246d81",
"sha256:ae1e96785696b543394a4e3f15f3f225d44f3c55dafe3f206493031419fedf95",
"sha256:b683e5fd7f74fb66e89a1ed16076dbab3f8e9f34c18b1979ded614fe10cdc4d9",
"sha256:b7a8b43ee64ca8f4befa2bea4083f7c52c92864d8518244bfa6e88c751fa8fff",
"sha256:b8e38472739028e5f2c3a4aded0ab7eadc447f0d84f310c7a8bb697ec417229e",
"sha256:bfff48c7bd23c6e2aec6454aaf6edc44444b229e94743b34bdcdda2e35126cf5",
"sha256:c14b63c9d7bab795d17392c7c1f9aaabbffd4cf4387725a0ac69109fb3b550c6",
"sha256:c27cc1e4b197092e50ddbf0118c788d9977f3f8f35bfbbd3e76c1846a3443df7",
"sha256:c28d3309ebd6d6b2cf82969b5179bed5fefe6142c70f354ece94324fa11bf6a1",
"sha256:c670f4773f2f6f1957ff8a3962c7dd12e4be54d05839b216cb7fd70b5a1df394",
"sha256:ce6910b56b700bea7be82c54ddf2e0ed792a577dfaa4a76b9af07d550af435c6",
"sha256:d0213671691e341f6849bf33cd9fad21f7b1cb88b89e024f33370733fec58742",
"sha256:d03fe67b2325cb3f09be029fd5da8df9e6974f0cde2c2ac6a79d2634e791dd57",
"sha256:d0e5af9a9effb88535a472e19169e09ce750c3d442fb222254a276d77808620b",
"sha256:d243b36fbf3d73c25e48014961e83c19c9cc92530516ce3c43050ea6276a2ab7",
"sha256:d26166acf62f731f50bdd885b04b38828436d74e8e362bfcb8df221d868b5d9b",
"sha256:d403d781b0e06d2922435ce3b8d2376579f0c217ae491e273bab8d092727d244",
"sha256:d8716f82502997b3d0895d1c64c3b834181b1eaca28f3f6336a71777e437c2af",
"sha256:e4f781ffedd17b0b834c8731b75cce2639d5a8afe961c1e58ee7f1f20b3af185",
"sha256:e613a98ead2005c4ce037c7b061f2409a1a4e45099edb0ef3200ee26ed2a69a8",
"sha256:ef4163770525257876f10e8ece1cf25b71468316f61451ded1a6f44273eedeb5"
],
"markers": "python_version >= '3.6'",
"version": "==2022.10.31"
},
"requests": {
"hashes": [
"sha256:64299f4909223da747622c030b781c0d7811e359c37124b4bd368fb8c6518baa",
"sha256:98b1b2782e3c6c4904938b84c0eb932721069dfdb9134313beff7c83c2df24bf"
],
"markers": "python_version >= '3.7' and python_version < '4'",
"version": "==2.28.2"
},
"six": {
"hashes": [
"sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926",
"sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==1.16.0"
},
"smmap": {
"hashes": [
"sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94",
"sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"
],
"markers": "python_version >= '3.6'",
"version": "==5.0.0"
},
"soupsieve": {
"hashes": [
"sha256:3b2503d3c7084a42b1ebd08116e5f81aadfaea95863628c80a3b774a11b7c759",
"sha256:fc53893b3da2c33de295667a0e19f078c14bf86544af307354de5fcf12a3f30d"
],
"markers": "python_version >= '3.6'",
"version": "==2.3.2.post1"
},
"termcolor": {
"hashes": [
"sha256:91ddd848e7251200eac969846cbae2dacd7d71c2871e92733289e7e3666f48e7",
"sha256:dfc8ac3f350788f23b2947b3e6cfa5a53b630b612e6cd8965a015a776020b99a"
],
"markers": "python_version >= '3.7'",
"version": "==2.2.0"
},
"tinycss2": {
"hashes": [
"sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847",
"sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627"
],
"markers": "python_version >= '3.7'",
"version": "==1.2.1"
},
"typing-extensions": {
"hashes": [
"sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa",
"sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"
],
"index": "pypi",
"version": "==4.4.0"
},
"urllib3": {
"hashes": [
"sha256:076907bf8fd355cde77728471316625a4d2f7e713c125f51953bb5b3eecf4f72",
"sha256:75edcdc2f7d85b137124a6c3c9fc3933cdeaa12ecb9a6a959f22797a0feca7e1"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'",
"version": "==1.26.14"
},
"watchdog": {
"hashes": [
"sha256:102a60093090fc3ff76c983367b19849b7cc24ec414a43c0333680106e62aae1",
"sha256:17f1708f7410af92ddf591e94ae71a27a13974559e72f7e9fde3ec174b26ba2e",
"sha256:195ab1d9d611a4c1e5311cbf42273bc541e18ea8c32712f2fb703cfc6ff006f9",
"sha256:4cb5ecc332112017fbdb19ede78d92e29a8165c46b68a0b8ccbd0a154f196d5e",
"sha256:5100eae58133355d3ca6c1083a33b81355c4f452afa474c2633bd2fbbba398b3",
"sha256:61fdb8e9c57baf625e27e1420e7ca17f7d2023929cd0065eb79c83da1dfbeacd",
"sha256:6ccd8d84b9490a82b51b230740468116b8205822ea5fdc700a553d92661253a3",
"sha256:6e01d699cd260d59b84da6bda019dce0a3353e3fcc774408ae767fe88ee096b7",
"sha256:748ca797ff59962e83cc8e4b233f87113f3cf247c23e6be58b8a2885c7337aa3",
"sha256:83a7cead445008e880dbde833cb9e5cc7b9a0958edb697a96b936621975f15b9",
"sha256:8586d98c494690482c963ffb24c49bf9c8c2fe0589cec4dc2f753b78d1ec301d",
"sha256:8b5cde14e5c72b2df5d074774bdff69e9b55da77e102a91f36ef26ca35f9819c",
"sha256:8c28c23972ec9c524967895ccb1954bc6f6d4a557d36e681a36e84368660c4ce",
"sha256:967636031fa4c4955f0f3f22da3c5c418aa65d50908d31b73b3b3ffd66d60640",
"sha256:96cbeb494e6cbe3ae6aacc430e678ce4b4dd3ae5125035f72b6eb4e5e9eb4f4e",
"sha256:978a1aed55de0b807913b7482d09943b23a2d634040b112bdf31811a422f6344",
"sha256:a09483249d25cbdb4c268e020cb861c51baab2d1affd9a6affc68ffe6a231260",
"sha256:a480d122740debf0afac4ddd583c6c0bb519c24f817b42ed6f850e2f6f9d64a8",
"sha256:adaf2ece15f3afa33a6b45f76b333a7da9256e1360003032524d61bdb4c422ae",
"sha256:bc43c1b24d2f86b6e1cc15f68635a959388219426109233e606517ff7d0a5a73",
"sha256:c27d8c1535fd4474e40a4b5e01f4ba6720bac58e6751c667895cbc5c8a7af33c",
"sha256:cdcc23c9528601a8a293eb4369cbd14f6b4f34f07ae8769421252e9c22718b6f",
"sha256:cece1aa596027ff56369f0b50a9de209920e1df9ac6d02c7f9e5d8162eb4f02b",
"sha256:d0f29fd9f3f149a5277929de33b4f121a04cf84bb494634707cfa8ea8ae106a8",
"sha256:d6b87477752bd86ac5392ecb9eeed92b416898c30bd40c7e2dd03c3146105646",
"sha256:e038be858425c4f621900b8ff1a3a1330d9edcfeaa1c0468aeb7e330fb87693e",
"sha256:e618a4863726bc7a3c64f95c218437f3349fb9d909eb9ea3a1ed3b567417c661",
"sha256:f8ac23ff2c2df4471a61af6490f847633024e5aa120567e08d07af5718c9d092"
],
"markers": "python_version >= '3.6'",
"version": "==2.2.1"
},
"webencodings": {
"hashes": [
"sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78",
"sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"
],
"version": "==0.5.1"
},
"zipp": {
"hashes": [
"sha256:23f70e964bc11a34cef175bc90ba2914e1e4545ea1e3e2f67c079671883f9cb6",
"sha256:e8b2a36ea17df80ffe9e2c4fda3f693c3dad6df1697d3cd3af232db680950b0b"
],
"markers": "python_version >= '3.7'",
"version": "==3.13.0"
}
},
"develop": {
"scour": {
"hashes": [
"sha256:6881ec26660c130c5ecd996ac6f6b03939dd574198f50773f2508b81a68e0daf"
],
"index": "pypi",
"version": "==0.38.2"
},
"six": {
"hashes": [
"sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926",
"sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==1.16.0"
}
}
}
+63 -77
View File
@@ -1,113 +1,99 @@
<!-- markdownlint-disable MD041 MD045 -->
<!-- markdownlint-disable MD041 -->
<div align="center">
<a href="https://www.privacyguides.org">
<a href="https://www.privacyguides.org/">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/privacyguides/brand/67166ed8b641d8ac1837d0b75329e02ed4056704/logos/svg/logo/privacy-guides-logo-dark.svg">
<img alt="Privacy Guides" width="500px" src="https://raw.githubusercontent.com/privacyguides/brand/67166ed8b641d8ac1837d0b75329e02ed4056704/logos/svg/logo/privacy-guides-logo.svg">
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/privacyguides/brand/main/SVG/Logo/privacy-guides-logo-dark.svg">
<img alt="Privacy Guides" width="500px" src="https://raw.githubusercontent.com/privacyguides/brand/main/SVG/Logo/privacy-guides-logo.svg">
</picture>
</a>
<p><em>Your central privacy and security resource to protect yourself online.</em></p>
<p><a href="https://discuss.privacyguides.net">
<img src="https://img.shields.io/discourse/users?label=Join%20our%20forum&logo=discourse&server=https%3A%2F%2Fdiscuss.privacyguides.net&style=social"></a>
<p><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%20%40privacyguides%40neat.computer&style=social">
</a>
<a href="https://twitter.com/privacy_guides">
<img src="https://img.shields.io/twitter/follow/privacy_guides?style=social">
</a>
<a href="https://discuss.privacyguides.net/">
<img src="https://img.shields.io/discourse/users?label=Join%20our%20forum&logo=discourse&server=https%3A%2F%2Fdiscuss.privacyguides.net&style=social">
</a>
<a href="https://github.com/privacyguides/privacyguides.org/stargazers">
<img src="https://img.shields.io/github/stars/privacyguides?style=social"></a>
<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/github/stars/privacyguides?style=social">
</a></p>
<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>
<a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+is%3Aclosed">
<img src="https://img.shields.io/github/issues-pr-closed-raw/privacyguides/privacyguides.org"></a>
<a href="https://github.com/privacyguides/privacyguides.org/graphs/contributors">
<img src="https://img.shields.io/github/commit-activity/m/privacyguides/privacyguides.org"></a>
<a href="#contributors">
<img src="https://img.shields.io/github/all-contributors/privacyguides/privacyguides.org"></a>
<a href="https://github.com/privacyguides/privacyguides.org/releases/latest">
<img src="https://img.shields.io/github/release-date/privacyguides/privacyguides.org"></a>
<a href="https://github.com/privacyguides/privacyguides.org/releases/latest">
<img src="https://img.shields.io/github/commits-since/privacyguides/privacyguides.org/latest"></a>
<a href="https://crowdin.com/project/privacyguides">
<img src="https://badges.crowdin.net/privacyguides/localized.svg"></a>
<a href="https://github.com/sponsors/privacyguides#sponsors">
<img src="https://img.shields.io/github/sponsors/privacyguides"></a>
<a href="https://github.com/privacyguides/privacyguides.org/actions/workflows/publish-release.yml">
<img src="https://img.shields.io/github/actions/workflow/status/privacyguides/privacyguides.org/publish-release.yml?label=release"></a></p>
<img src="https://img.shields.io/github/issues-pr-closed-raw/privacyguides/privacyguides.org">
</a>
<a href="https://opencollective.com/privacyguides">
<img src="https://img.shields.io/opencollective/all/privacyguides">
</a></p>
</div>
## About
**Privacy Guides** is a socially motivated website that provides information for protecting your data security and privacy. Our mission is to inform the public about the value of digital privacy, and global government initiatives which aim to monitor your online activity. We are a non-profit collective operated entirely by volunteer team members and contributors. Our website is free of advertisements and not affiliated with any of the listed providers.
**Privacy Guides** is a socially motivated website that provides information for protecting your data security and privacy. We are a non-profit collective operated entirely by volunteer team members and contributors.
The current list of team members can be found on [the executive committee page](https://www.privacyguides.org/en/about/#executive-committee). Additionally, many people have made contributions to the project, and you can too!
*Featured on: [Tweakers](https://tweakers.net/reviews/10568/op-zoek-naar-privacyvriendelijke-tools-niek-de-wilde-van-privacy-guides.html), [The New York Times](https://nytimes.com/wirecutter/guides/online-security-social-media-privacy), [Wired](https://wired.com/story/firefox-mozilla-2022), and [Fast Company](https://www.fastcompany.com/91167564/mozilla-wants-you-to-love-firefox-again).*
Our current list of team members can be found [here](https://www.privacyguides.org/about/#our-team). Additionally, [many people](https://github.com/privacyguides/privacyguides.org/graphs/contributors) have made contributions to the project, and you can too!
## Contributing
[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/privacyguides/privacyguides.org?devcontainer_path=.devcontainer%2Fdevcontainer.json)
- 💬 [Start a discussion or suggest an idea](https://discuss.privacyguides.net)
- 💬 [Start a discussion or suggest an idea](https://discuss.privacyguides.net/)
- 💖 [Sponsor the project](https://github.com/sponsors/privacyguides)
- 🈴 [Help translate the site](https://crowdin.com/project/privacyguides) [[Matrix chat](https://matrix.to/#/#pg-i18n:aragon.sh)]
- 🈴 [Help translate the site](https://crwd.in/privacyguides) [[Matrix chat](https://matrix.to/#/#pg-i18n:aragon.sh)]
- 📝 Edit the site, everything's accessible in this repo
- Browse our [open issues](https://github.com/privacyguides/privacyguides.org/issues) to see what needs to be updated
- View the list of [approved topics waiting for a PR](https://discuss.privacyguides.net/tag/approved)
- Read some writing tips in our [style guide](https://www.privacyguides.org/en/meta/writing-style)
- Browse our [open issues](https://github.com/privacyguides/privacyguides.org/issues) to see what needs to be updated
- View some contribution tips on our [contributor's wiki](https://github.com/privacyguides/privacyguides.org/wiki)
### Alternative Networks
> [!NOTE]
> Most hidden service providers are not very extensively used or tested, [which is why we strongly recommend Tor](https://www.privacyguides.org/en/tor/). Using other networks could be more likely to endanger your anonymity, so make sure you know what you're doing.
- **Tor/onion:** [xoe4vn5uwdztif6goazfbmogh6wh5jc4up35bqdflu6bkdc5cas5vjqd.onion](http://www.xoe4vn5uwdztif6goazfbmogh6wh5jc4up35bqdflu6bkdc5cas5vjqd.onion)
### Git Mirrors
## Mirrors
[![GitHub](https://img.shields.io/static/v1?logo=github&label=&message=GitHub&color=000&style=for-the-badge)](https://github.com/privacyguides/privacyguides.org)
[![Gitea](https://img.shields.io/static/v1?logo=gitea&label=&message=Gitea&color=000&style=for-the-badge)](https://code.privacyguides.dev/privacyguides/privacyguides.org)
[![GitLab](https://img.shields.io/static/v1?logo=gitlab&label=&message=GitLab&color=000&style=for-the-badge)](https://gitlab.com/privacyguides/privacyguides.org)
[![Codeberg](https://img.shields.io/static/v1?logo=codeberg&label=&message=Codeberg&color=000&style=for-the-badge)](https://codeberg.org/privacyguides/privacyguides.org)
[![Gitea](https://img.shields.io/static/v1?logo=gitea&label=&message=Gitea&color=000&style=for-the-badge)](https://code.privacyguides.dev/privacyguides/privacyguides.org)
[![Forgejo](https://img.shields.io/static/v1?logo=forgejo&label=&message=Forgejo&color=000&style=for-the-badge)](https://git.jonaharagon.net/privacyguides/privacyguides.org)
## License
Copyright &copy; 20192026 Privacy Guides contributors.
Privacy Guides content is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International Public License](/LICENSE), and the underlying source code used to format and display that content on [www.privacyguides.org](https://www.privacyguides.org) is licensed under the [MIT License](/LICENSE-CODE).
Generally speaking, **content** can be found in the [`/docs`](/docs), [`/theme/assets/img`](/theme/assets/img) and [`/includes`](/includes) folders; and **source code** and configuration files can be found in the [`/config`](/config) and [`/theme`](/theme) folders, and in the root of this repository. Any source code snippets contained within documentation files are [MIT Licensed](/LICENSE-CODE). Please contact us if you require clarification on any of these terms.
These licenses do not apply to any work where another license is otherwise noted.
**Logos** in the [`/theme/assets/img`](/theme/assets/img) folder may not be original works of Privacy Guides and therefore cannot be (re)licensed by us. We believe that these logos obtained from third-party providers are either in the public domain or **fair use**. In a nutshell, legal [fair use doctrine](https://copyright.gov/fair-use/more-info.html) allows the use of copyrighted images in order to identify the subject for purposes of public comment. However, these logos and other images may still be subject to trademark laws in one or more jurisdictions. Before using this content, please ensure that it is used to identify the entity or organization that owns the trademark and that you have the right to use it under the laws which apply in the circumstances of your intended use. *When copying content from this website, you are solely responsible for ensuring that you do not infringe someone else's trademark or copyright.*
You may comply with our license terms in any reasonable manner, but not in any way that suggests Privacy Guides endorses you or your use. You **may not** use the Privacy Guides branding in your own project without express approval from this project. Privacy Guides's brand trademarks include the "Privacy Guides" wordmark and shield logo.
When you contribute to this repository you are doing so under the above licenses, and you are granting Privacy Guides a perpetual, worldwide, non-exclusive, transferable, royalty-free, irrevocable license with the right to sublicense such rights through multiple tiers of sublicensees, to reproduce, modify, display, perform and distribute your contribution as part of our project.
[![SourceHut](https://img.shields.io/static/v1?logo=git&label=&message=SourceHut&color=000&style=for-the-badge)](https://git.sr.ht/~jonaharagon/privacyguides.org)
## Developing
The only supported method of building and previewing this website locally is by running the automatic dev container. The easiest way to do this in your web browser without installing any software is to use [GitHub Codespaces](https://codespaces.new/privacyguides/privacyguides.org). To build the website locally, you will need the following software:
- macOS/Windows: [Docker Desktop](https://www.docker.com/products/docker-desktop/)
- Linux: [Docker CE](https://docs.docker.com/get-started/get-docker/#supported-platforms)
- [VS Code](https://code.visualstudio.com/)
- [Dev Containers for VS Code](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) extension
- [GitHub Desktop](https://github.com/apps/desktop) (optional)
You can technically use any IDE which supports [development containers](https://containers.dev/), but YMMV. Docker Desktop has an experimental Dev Environments option which allows you to use any text editor under Settings > Features in development. We are only testing with the combination of software above.
Committing to this repository requires [signing your commits](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits) (`git config commit.gpgsign true`) unless you are making edits via the GitHub.com text editor interface. As of August 2022 the preferred signing method is [SSH commit signatures](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification#ssh-commit-signature-verification), but GPG signing is also acceptable. You should add your signing key to your GitHub profile.
This website uses [`mkdocs-material-insiders`](https://squidfunk.github.io/mkdocs-material/insiders/) which offers additional functionality over the open-source `mkdocs-material` project. For obvious reasons we cannot distribute access to the insiders repository. You can install the website locally with the open-source version of `mkdocs-material`:
1. Clone this repository:
- `git clone https://github.com/privacyguides/privacyguides.org.git` (then `cd privacyguides.org`)
- `git submodule init`
- `git submodule update docs/assets/brand`
- `git config gpg.ssh.allowedSignersFile .allowed_signers`
2. Install [Python 3.6+](https://www.python.org/downloads/) (currently only tested with 3.10)
3. Install [dependencies](/Pipfile): `pip install mkdocs mkdocs-material mkdocs-static-i18n mkdocs-macros-plugin typing-extensions`
4. Serve the site locally: `mkdocs serve`
- The site will be available at `http://localhost:8000`
- You can build the site locally with `mkdocs build`
- Your local version of the site may be missing functionality, which is expected. If you are submitting a PR, please ensure the automatic preview generated for your PR looks correct, as that site will be built with the production insiders build.
**Team members** should clone the repository with `mkdocs-material-insiders` directly. This method is identical to production:
1. Clone this repository and submodules: `git clone --recurse-submodules https://github.com/privacyguides/privacyguides.org.git`
2. Enable SSH commit verification with our local [`.allowed_signers`](/.allowed_signers) file: `git config gpg.ssh.allowedSignersFile .allowed_signers`
3. Install Python **3.10**
4. Install **pipenv**: `pip install pipenv`
5. Install dependencies: `pipenv install --dev` (install [Pillow and CairoSVG](https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/#dependencies) as well to generate social cards)
6. Serve the site locally: `pipenv run mkdocs serve --config-file mkdocs.production.yml` (set `CARDS=true` to generate social cards)
- The site will be available at `http://localhost:8000`
- You can build the site locally with `pipenv run mkdocs build`
- This version of the site should be identical to the live, production version
If you commit to `main` with commits signed with your SSH key, you should add your SSH key to [`.allowed_signers`](/.allowed_signers) in this repo.
## Releasing
It is required to create a GitHub release to publish the current site to privacyguides.org. The current `main` branch can be previewed at [https://main.staging.privacyguides.dev](https://main.staging.privacyguides.dev) prior to release.
1. Create a new tag: `git tag -s YYYY.MM.DD -m 'Some message'`
- Tag numbering: `YYYY.MM.DD` - if two+ releases are published on the same day, append short commit to the next release, e.g. `YYYY.MM.DD-6aa14e8`
- Enable GPG tag signing by default (`git config tag.gpgSign true`) to avoid missing signatures
1. Create a new tag: `git tag -s v2.X.X -m 'Some message'`
- [View existing tags](https://github.com/privacyguides/privacyguides.org/tags)
- Tag [numbering](https://semver.org/): Increment the MINOR (2nd) number when making significant changes (adding/deleting pages, etc.), increment the PATCH (3rd) number when making minor changes (typos, bug fixes). Probably leave the MAJOR number at 2 until a massive revamp (v1 -> v2 was the Jekyll to MkDocs transition).
- Consider enabling GPG tag signing by default (`git config tag.gpgSign true`) to avoid missing signatures
2. Push the tag to GitHub: `git push --tags`
3. A GitHub Release will be automatically created and deployed to the live site.
- You may wish to manually check or edit the release changelog/title after it is published for accuracy.
-253
View File
@@ -1,253 +0,0 @@
# Redirects from legacy MkDocs /en/ URLs to the Hugo site structure.
# Generated by scripts/generate_redirects.py — re-run after sitemap or content changes.
/en/ https://en.privacyguides.org/ 301
/ https://en.privacyguides.org/ 301
/en/CODE_OF_CONDUCT/ https://github.com/privacyguides/privacyguides.org/blob/main/.github/CODE_OF_CONDUCT.md 301
/CODE_OF_CONDUCT/ https://github.com/privacyguides/privacyguides.org/blob/main/.github/CODE_OF_CONDUCT.md 301
/en/about/ https://en.privacyguides.org/about/ 301
/about/ https://en.privacyguides.org/about/ 301
/en/about/contributors/ https://en.privacyguides.org/about/ 301
/about/contributors/ https://en.privacyguides.org/about/ 301
/en/about/criteria/ https://en.privacyguides.org/about/criteria/ 301
/about/criteria/ https://en.privacyguides.org/about/criteria/ 301
/en/about/donate/ https://en.privacyguides.org/about/donate/ 301
/about/donate/ https://en.privacyguides.org/about/donate/ 301
/en/about/donation-acceptance-policy/ https://en.privacyguides.org/about/donation-acceptance-policy/ 301
/about/donation-acceptance-policy/ https://en.privacyguides.org/about/donation-acceptance-policy/ 301
/en/about/executive-policy/ https://en.privacyguides.org/about/executive-policy/ 301
/about/executive-policy/ https://en.privacyguides.org/about/executive-policy/ 301
/en/about/jobs/ https://en.privacyguides.org/about/jobs/ 301
/about/jobs/ https://en.privacyguides.org/about/jobs/ 301
/en/about/jobs/content-creator/ https://en.privacyguides.org/about/jobs/ 301
/about/jobs/content-creator/ https://en.privacyguides.org/about/jobs/ 301
/en/about/jobs/intern-news/ https://en.privacyguides.org/about/jobs/ 301
/about/jobs/intern-news/ https://en.privacyguides.org/about/jobs/ 301
/en/about/jobs/journalist/ https://en.privacyguides.org/about/jobs/ 301
/about/jobs/journalist/ https://en.privacyguides.org/about/jobs/ 301
/en/about/notices/ https://en.privacyguides.org/about/notices/ 301
/about/notices/ https://en.privacyguides.org/about/notices/ 301
/en/about/privacytools/ https://en.privacyguides.org/about/privacytools/ 301
/about/privacytools/ https://en.privacyguides.org/about/privacytools/ 301
/en/about/services/ https://en.privacyguides.org/about/services/ 301
/about/services/ https://en.privacyguides.org/about/services/ 301
/en/about/statistics/ https://en.privacyguides.org/about/statistics/ 301
/about/statistics/ https://en.privacyguides.org/about/statistics/ 301
/en/activism/ https://en.privacyguides.org/activism/ 301
/activism/ https://en.privacyguides.org/activism/ 301
/en/activism/legal/dpa-directory/ https://en.privacyguides.org/activism/legal/dpa-directory/ 301
/activism/legal/dpa-directory/ https://en.privacyguides.org/activism/legal/dpa-directory/ 301
/en/activism/toolbox/ https://en.privacyguides.org/activism/toolbox/ 301
/activism/toolbox/ https://en.privacyguides.org/activism/toolbox/ 301
/en/activism/toolbox/tip-be-kind-to-people-but-be-relentless-with-institutions/ https://en.privacyguides.org/activism/toolbox/tip-be-kind-to-people-but-be-relentless-with-institutions/ 301
/activism/toolbox/tip-be-kind-to-people-but-be-relentless-with-institutions/ https://en.privacyguides.org/activism/toolbox/tip-be-kind-to-people-but-be-relentless-with-institutions/ 301
/en/activism/toolbox/tip-be-mindful-of-accessibility/ https://en.privacyguides.org/activism/toolbox/tip-be-mindful-of-accessibility/ 301
/activism/toolbox/tip-be-mindful-of-accessibility/ https://en.privacyguides.org/activism/toolbox/tip-be-mindful-of-accessibility/ 301
/en/activism/toolbox/tip-beware-of-privacy-snake-oil/ https://en.privacyguides.org/activism/toolbox/tip-beware-of-privacy-snake-oil/ 301
/activism/toolbox/tip-beware-of-privacy-snake-oil/ https://en.privacyguides.org/activism/toolbox/tip-beware-of-privacy-snake-oil/ 301
/en/activism/toolbox/tip-consider-everyones-unique-situation/ https://en.privacyguides.org/activism/toolbox/tip-consider-everyones-unique-situation/ 301
/activism/toolbox/tip-consider-everyones-unique-situation/ https://en.privacyguides.org/activism/toolbox/tip-consider-everyones-unique-situation/ 301
/en/activism/toolbox/tip-dont-stop-at-individual-solutions/ https://en.privacyguides.org/activism/toolbox/tip-dont-stop-at-individual-solutions/ 301
/activism/toolbox/tip-dont-stop-at-individual-solutions/ https://en.privacyguides.org/activism/toolbox/tip-dont-stop-at-individual-solutions/ 301
/en/activism/toolbox/tip-engage-boosts-and-contribute/ https://en.privacyguides.org/activism/toolbox/tip-engage-boosts-and-contribute/ 301
/activism/toolbox/tip-engage-boosts-and-contribute/ https://en.privacyguides.org/activism/toolbox/tip-engage-boosts-and-contribute/ 301
/en/activism/toolbox/tip-give-credit-where-credit-is-due/ https://en.privacyguides.org/activism/toolbox/tip-give-credit-where-credit-is-due/ 301
/activism/toolbox/tip-give-credit-where-credit-is-due/ https://en.privacyguides.org/activism/toolbox/tip-give-credit-where-credit-is-due/ 301
/en/activism/toolbox/tip-improve-your-social-media-and-build-resilient-communities/ https://en.privacyguides.org/activism/toolbox/tip-improve-your-social-media-and-build-resilient-communities/ 301
/activism/toolbox/tip-improve-your-social-media-and-build-resilient-communities/ https://en.privacyguides.org/activism/toolbox/tip-improve-your-social-media-and-build-resilient-communities/ 301
/en/activism/toolbox/tip-keep-in-mind-the-whole-landscape/ https://en.privacyguides.org/activism/toolbox/tip-keep-in-mind-the-whole-landscape/ 301
/activism/toolbox/tip-keep-in-mind-the-whole-landscape/ https://en.privacyguides.org/activism/toolbox/tip-keep-in-mind-the-whole-landscape/ 301
/en/activism/toolbox/tip-keep-your-posts-and-community-inclusive/ https://en.privacyguides.org/activism/toolbox/tip-keep-your-posts-and-community-inclusive/ 301
/activism/toolbox/tip-keep-your-posts-and-community-inclusive/ https://en.privacyguides.org/activism/toolbox/tip-keep-your-posts-and-community-inclusive/ 301
/en/activism/toolbox/tip-know-your-privacy-laws/ https://en.privacyguides.org/activism/toolbox/tip-know-your-privacy-laws/ 301
/activism/toolbox/tip-know-your-privacy-laws/ https://en.privacyguides.org/activism/toolbox/tip-know-your-privacy-laws/ 301
/en/activism/toolbox/tip-level-up-assemble-and-organize/ https://en.privacyguides.org/activism/toolbox/tip-level-up-assemble-and-organize/ 301
/activism/toolbox/tip-level-up-assemble-and-organize/ https://en.privacyguides.org/activism/toolbox/tip-level-up-assemble-and-organize/ 301
/en/activism/toolbox/tip-lift-your-allies-up/ https://en.privacyguides.org/activism/toolbox/tip-lift-your-allies-up/ 301
/activism/toolbox/tip-lift-your-allies-up/ https://en.privacyguides.org/activism/toolbox/tip-lift-your-allies-up/ 301
/en/activism/toolbox/tip-make-it-cute/ https://en.privacyguides.org/activism/toolbox/tip-make-it-cute/ 301
/activism/toolbox/tip-make-it-cute/ https://en.privacyguides.org/activism/toolbox/tip-make-it-cute/ 301
/en/activism/toolbox/tip-migrate-outside-the-surveillance-ecosystem/ https://en.privacyguides.org/activism/toolbox/tip-migrate-outside-the-surveillance-ecosystem/ 301
/activism/toolbox/tip-migrate-outside-the-surveillance-ecosystem/ https://en.privacyguides.org/activism/toolbox/tip-migrate-outside-the-surveillance-ecosystem/ 301
/en/activism/toolbox/tip-protect-your-allies/ https://en.privacyguides.org/activism/toolbox/tip-protect-your-allies/ 301
/activism/toolbox/tip-protect-your-allies/ https://en.privacyguides.org/activism/toolbox/tip-protect-your-allies/ 301
/en/activism/toolbox/tip-refuse-to-participate/ https://en.privacyguides.org/activism/toolbox/tip-refuse-to-participate/ 301
/activism/toolbox/tip-refuse-to-participate/ https://en.privacyguides.org/activism/toolbox/tip-refuse-to-participate/ 301
/en/activism/toolbox/tip-report-privacy-violations/ https://en.privacyguides.org/activism/toolbox/tip-report-privacy-violations/ 301
/activism/toolbox/tip-report-privacy-violations/ https://en.privacyguides.org/activism/toolbox/tip-report-privacy-violations/ 301
/en/activism/toolbox/tip-small-actions-matter/ https://en.privacyguides.org/activism/toolbox/tip-small-actions-matter/ 301
/activism/toolbox/tip-small-actions-matter/ https://en.privacyguides.org/activism/toolbox/tip-small-actions-matter/ 301
/en/activism/toolbox/tip-start-alliances-not-wars/ https://en.privacyguides.org/activism/toolbox/tip-start-alliances-not-wars/ 301
/activism/toolbox/tip-start-alliances-not-wars/ https://en.privacyguides.org/activism/toolbox/tip-start-alliances-not-wars/ 301
/en/activism/toolbox/tip-stay-true-to-your-principles/ https://en.privacyguides.org/activism/toolbox/tip-stay-true-to-your-principles/ 301
/activism/toolbox/tip-stay-true-to-your-principles/ https://en.privacyguides.org/activism/toolbox/tip-stay-true-to-your-principles/ 301
/en/activism/toolbox/tip-support-your-privacy-comrades/ https://en.privacyguides.org/activism/toolbox/tip-support-your-privacy-comrades/ 301
/activism/toolbox/tip-support-your-privacy-comrades/ https://en.privacyguides.org/activism/toolbox/tip-support-your-privacy-comrades/ 301
/en/activism/toolbox/tip-take-time-to-rest/ https://en.privacyguides.org/activism/toolbox/tip-take-time-to-rest/ 301
/activism/toolbox/tip-take-time-to-rest/ https://en.privacyguides.org/activism/toolbox/tip-take-time-to-rest/ 301
/en/activism/toolbox/tip-value-allies-with-complementary-expertise/ https://en.privacyguides.org/activism/toolbox/tip-value-allies-with-complementary-expertise/ 301
/activism/toolbox/tip-value-allies-with-complementary-expertise/ https://en.privacyguides.org/activism/toolbox/tip-value-allies-with-complementary-expertise/ 301
/en/activism/toolbox/tip-welcome-beginners/ https://en.privacyguides.org/activism/toolbox/tip-welcome-beginners/ 301
/activism/toolbox/tip-welcome-beginners/ https://en.privacyguides.org/activism/toolbox/tip-welcome-beginners/ 301
/en/advanced/communication-network-types/ https://en.privacyguides.org/wiki/advanced/communication-networks/ 301
/advanced/communication-network-types/ https://en.privacyguides.org/wiki/advanced/communication-networks/ 301
/en/advanced/dns-overview/ https://en.privacyguides.org/wiki/advanced/dns-overview/ 301
/advanced/dns-overview/ https://en.privacyguides.org/wiki/advanced/dns-overview/ 301
/en/advanced/payments/ https://en.privacyguides.org/wiki/advanced/payments/ 301
/advanced/payments/ https://en.privacyguides.org/wiki/advanced/payments/ 301
/en/advanced/tor-overview/ https://en.privacyguides.org/wiki/advanced/tor-overview/ 301
/advanced/tor-overview/ https://en.privacyguides.org/wiki/advanced/tor-overview/ 301
/en/ai-chat/ https://en.privacyguides.org/tools/software/ai-chat/ 301
/ai-chat/ https://en.privacyguides.org/tools/software/ai-chat/ 301
/en/alternative-networks/ https://en.privacyguides.org/tools/advanced/alternative-networks/ 301
/alternative-networks/ https://en.privacyguides.org/tools/advanced/alternative-networks/ 301
/en/android/ https://en.privacyguides.org/tools/os/android/ 301
/android/ https://en.privacyguides.org/tools/os/android/ 301
/en/android/distributions/ https://en.privacyguides.org/tools/os/android/distributions/ 301
/android/distributions/ https://en.privacyguides.org/tools/os/android/distributions/ 301
/en/android/general-apps/ https://en.privacyguides.org/tools/os/android/general-apps/ 301
/android/general-apps/ https://en.privacyguides.org/tools/os/android/general-apps/ 301
/en/android/obtaining-apps/ https://en.privacyguides.org/tools/os/android/obtaining-apps/ 301
/android/obtaining-apps/ https://en.privacyguides.org/tools/os/android/obtaining-apps/ 301
/en/basics/account-creation/ https://en.privacyguides.org/wiki/basics/account-creation/ 301
/basics/account-creation/ https://en.privacyguides.org/wiki/basics/account-creation/ 301
/en/basics/account-deletion/ https://en.privacyguides.org/wiki/basics/account-deletion/ 301
/basics/account-deletion/ https://en.privacyguides.org/wiki/basics/account-deletion/ 301
/en/basics/common-misconceptions/ https://en.privacyguides.org/wiki/basics/common-misconceptions/ 301
/basics/common-misconceptions/ https://en.privacyguides.org/wiki/basics/common-misconceptions/ 301
/en/basics/common-threats/ https://en.privacyguides.org/wiki/basics/common-threats/ 301
/basics/common-threats/ https://en.privacyguides.org/wiki/basics/common-threats/ 301
/en/basics/email-security/ https://en.privacyguides.org/wiki/basics/email-security/ 301
/basics/email-security/ https://en.privacyguides.org/wiki/basics/email-security/ 301
/en/basics/hardware/ https://en.privacyguides.org/wiki/basics/hardware/ 301
/basics/hardware/ https://en.privacyguides.org/wiki/basics/hardware/ 301
/en/basics/multi-factor-authentication/ https://en.privacyguides.org/wiki/basics/multi-factor-authentication/ 301
/basics/multi-factor-authentication/ https://en.privacyguides.org/wiki/basics/multi-factor-authentication/ 301
/en/basics/passwords-overview/ https://en.privacyguides.org/wiki/basics/passwords-overview/ 301
/basics/passwords-overview/ https://en.privacyguides.org/wiki/basics/passwords-overview/ 301
/en/basics/threat-modeling/ https://en.privacyguides.org/wiki/basics/threat-modeling/ 301
/basics/threat-modeling/ https://en.privacyguides.org/wiki/basics/threat-modeling/ 301
/en/basics/vpn-overview/ https://en.privacyguides.org/wiki/basics/vpn-overview/ 301
/basics/vpn-overview/ https://en.privacyguides.org/wiki/basics/vpn-overview/ 301
/en/basics/why-privacy-matters/ https://en.privacyguides.org/wiki/basics/why-privacy-matters/ 301
/basics/why-privacy-matters/ https://en.privacyguides.org/wiki/basics/why-privacy-matters/ 301
/en/browser-extensions/ https://en.privacyguides.org/tools/software/browser-extensions/ 301
/browser-extensions/ https://en.privacyguides.org/tools/software/browser-extensions/ 301
/en/calendar/ https://en.privacyguides.org/tools/services/calendar/ 301
/calendar/ https://en.privacyguides.org/tools/services/calendar/ 301
/en/cloud/ https://en.privacyguides.org/tools/services/cloud/ 301
/cloud/ https://en.privacyguides.org/tools/services/cloud/ 301
/en/cryptocurrency/ https://en.privacyguides.org/tools/software/cryptocurrency/ 301
/cryptocurrency/ https://en.privacyguides.org/tools/software/cryptocurrency/ 301
/en/data-broker-removals/ https://en.privacyguides.org/tools/services/data-broker-removals/ 301
/data-broker-removals/ https://en.privacyguides.org/tools/services/data-broker-removals/ 301
/en/data-redaction/ https://en.privacyguides.org/tools/software/data-redaction/ 301
/data-redaction/ https://en.privacyguides.org/tools/software/data-redaction/ 301
/en/desktop-browsers/ https://en.privacyguides.org/tools/software/desktop-browsers/ 301
/desktop-browsers/ https://en.privacyguides.org/tools/software/desktop-browsers/ 301
/en/desktop/ https://en.privacyguides.org/tools/os/desktop/ 301
/desktop/ https://en.privacyguides.org/tools/os/desktop/ 301
/en/device-integrity/ https://en.privacyguides.org/tools/advanced/device-integrity/ 301
/device-integrity/ https://en.privacyguides.org/tools/advanced/device-integrity/ 301
/en/dns/ https://en.privacyguides.org/tools/services/dns/ 301
/dns/ https://en.privacyguides.org/tools/services/dns/ 301
/en/document-collaboration/ https://en.privacyguides.org/tools/software/document-collaboration/ 301
/document-collaboration/ https://en.privacyguides.org/tools/software/document-collaboration/ 301
/en/email-aliasing/ https://en.privacyguides.org/tools/services/email-aliasing/ 301
/email-aliasing/ https://en.privacyguides.org/tools/services/email-aliasing/ 301
/en/email-clients/ https://en.privacyguides.org/tools/software/email-clients/ 301
/email-clients/ https://en.privacyguides.org/tools/software/email-clients/ 301
/en/email/ https://en.privacyguides.org/tools/services/email/ 301
/email/ https://en.privacyguides.org/tools/services/email/ 301
/en/encryption/ https://en.privacyguides.org/tools/software/encryption/ 301
/encryption/ https://en.privacyguides.org/tools/software/encryption/ 301
/en/file-sharing/ https://en.privacyguides.org/tools/software/file-sharing/ 301
/file-sharing/ https://en.privacyguides.org/tools/software/file-sharing/ 301
/en/financial-services/ https://en.privacyguides.org/tools/services/financial-services/ 301
/financial-services/ https://en.privacyguides.org/tools/services/financial-services/ 301
/en/frontends/ https://en.privacyguides.org/tools/software/frontends/ 301
/frontends/ https://en.privacyguides.org/tools/software/frontends/ 301
/en/health-and-wellness/ https://en.privacyguides.org/tools/software/health-and-wellness/ 301
/health-and-wellness/ https://en.privacyguides.org/tools/software/health-and-wellness/ 301
/en/language-tools/ https://en.privacyguides.org/tools/software/language-tools/ 301
/language-tools/ https://en.privacyguides.org/tools/software/language-tools/ 301
/en/maps/ https://en.privacyguides.org/tools/software/maps/ 301
/maps/ https://en.privacyguides.org/tools/software/maps/ 301
/en/meta/admonitions/ https://github.com/privacyguides/privacyguides.org 301
/meta/admonitions/ https://github.com/privacyguides/privacyguides.org 301
/en/meta/brand/ https://github.com/privacyguides/brand 301
/meta/brand/ https://github.com/privacyguides/brand 301
/en/meta/commit-messages/ https://github.com/privacyguides/privacyguides.org 301
/meta/commit-messages/ https://github.com/privacyguides/privacyguides.org 301
/en/meta/git-recommendations/ https://github.com/privacyguides/privacyguides.org 301
/meta/git-recommendations/ https://github.com/privacyguides/privacyguides.org 301
/en/meta/pr-comments/ https://github.com/privacyguides/privacyguides.org 301
/meta/pr-comments/ https://github.com/privacyguides/privacyguides.org 301
/en/meta/translations/ https://crowdin.com/project/privacyguides 301
/meta/translations/ https://crowdin.com/project/privacyguides 301
/en/meta/uploading-images/ https://github.com/privacyguides/privacyguides.org 301
/meta/uploading-images/ https://github.com/privacyguides/privacyguides.org 301
/en/meta/writing-style/ https://github.com/privacyguides/privacyguides.org 301
/meta/writing-style/ https://github.com/privacyguides/privacyguides.org 301
/en/mobile-browsers/ https://en.privacyguides.org/tools/software/mobile-browsers/ 301
/mobile-browsers/ https://en.privacyguides.org/tools/software/mobile-browsers/ 301
/en/mobile-phones/ https://en.privacyguides.org/tools/hardware/mobile-phones/ 301
/mobile-phones/ https://en.privacyguides.org/tools/hardware/mobile-phones/ 301
/en/multi-factor-authentication/ https://en.privacyguides.org/tools/software/multi-factor-authentication/ 301
/multi-factor-authentication/ https://en.privacyguides.org/tools/software/multi-factor-authentication/ 301
/en/news-aggregators/ https://en.privacyguides.org/tools/software/news-aggregators/ 301
/news-aggregators/ https://en.privacyguides.org/tools/software/news-aggregators/ 301
/en/notebooks/ https://en.privacyguides.org/tools/software/notebooks/ 301
/notebooks/ https://en.privacyguides.org/tools/software/notebooks/ 301
/en/office-suites/ https://en.privacyguides.org/tools/software/office-suites/ 301
/office-suites/ https://en.privacyguides.org/tools/software/office-suites/ 301
/en/os/ https://en.privacyguides.org/wiki/os/ 301
/os/ https://en.privacyguides.org/wiki/os/ 301
/en/os/android-overview/ https://en.privacyguides.org/wiki/os/android/ 301
/os/android-overview/ https://en.privacyguides.org/wiki/os/android/ 301
/en/os/ios-overview/ https://en.privacyguides.org/wiki/os/ios/ 301
/os/ios-overview/ https://en.privacyguides.org/wiki/os/ios/ 301
/en/os/linux-overview/ https://en.privacyguides.org/wiki/os/linux/ 301
/os/linux-overview/ https://en.privacyguides.org/wiki/os/linux/ 301
/en/os/macos-overview/ https://en.privacyguides.org/wiki/os/macos/ 301
/os/macos-overview/ https://en.privacyguides.org/wiki/os/macos/ 301
/en/os/qubes-overview/ https://en.privacyguides.org/wiki/os/qubes/ 301
/os/qubes-overview/ https://en.privacyguides.org/wiki/os/qubes/ 301
/en/os/windows/ https://en.privacyguides.org/wiki/os/windows/ 301
/os/windows/ https://en.privacyguides.org/wiki/os/windows/ 301
/en/os/windows/group-policies/ https://en.privacyguides.org/wiki/os/windows/group-policies/ 301
/os/windows/group-policies/ https://en.privacyguides.org/wiki/os/windows/group-policies/ 301
/en/passwords/ https://en.privacyguides.org/tools/software/passwords/ 301
/passwords/ https://en.privacyguides.org/tools/software/passwords/ 301
/en/pastebins/ https://en.privacyguides.org/tools/software/pastebins/ 301
/pastebins/ https://en.privacyguides.org/tools/software/pastebins/ 301
/en/photo-management/ https://en.privacyguides.org/tools/services/photo-backups/ 301
/photo-management/ https://en.privacyguides.org/tools/services/photo-backups/ 301
/en/privacy/ https://en.privacyguides.org/privacy/ 301
/privacy/ https://en.privacyguides.org/privacy/ 301
/en/real-time-communication/ https://en.privacyguides.org/tools/services/messengers/ 301
/real-time-communication/ https://en.privacyguides.org/tools/services/messengers/ 301
/en/router/ https://en.privacyguides.org/tools/os/router-firmware/ 301
/router/ https://en.privacyguides.org/tools/os/router-firmware/ 301
/en/search-engines/ https://en.privacyguides.org/tools/services/search-engines/ 301
/search-engines/ https://en.privacyguides.org/tools/services/search-engines/ 301
/en/security-keys/ https://en.privacyguides.org/tools/hardware/security-keys/ 301
/security-keys/ https://en.privacyguides.org/tools/hardware/security-keys/ 301
/en/self-hosting/ https://en.privacyguides.org/tools/self-hosting/ 301
/self-hosting/ https://en.privacyguides.org/tools/self-hosting/ 301
/en/self-hosting/dns-filtering/ https://en.privacyguides.org/tools/self-hosting/dns-filtering/ 301
/self-hosting/dns-filtering/ https://en.privacyguides.org/tools/self-hosting/dns-filtering/ 301
/en/self-hosting/email-servers/ https://en.privacyguides.org/tools/self-hosting/email-servers/ 301
/self-hosting/email-servers/ https://en.privacyguides.org/tools/self-hosting/email-servers/ 301
/en/self-hosting/file-management/ https://en.privacyguides.org/tools/self-hosting/file-management/ 301
/self-hosting/file-management/ https://en.privacyguides.org/tools/self-hosting/file-management/ 301
/en/social-networks/ https://en.privacyguides.org/tools/self-hosting/social-networks/ 301
/social-networks/ https://en.privacyguides.org/tools/self-hosting/social-networks/ 301
/en/tools/software/social-networks/ https://en.privacyguides.org/tools/self-hosting/social-networks/ 301
/tools/software/social-networks/ https://en.privacyguides.org/tools/self-hosting/social-networks/ 301
/en/tools/ https://en.privacyguides.org/tools/ 301
/tools/ https://en.privacyguides.org/tools/ 301
/en/tor/ https://en.privacyguides.org/tools/software/tor/ 301
/tor/ https://en.privacyguides.org/tools/software/tor/ 301
/en/vpn/ https://en.privacyguides.org/tools/services/vpn/ 301
/vpn/ https://en.privacyguides.org/tools/services/vpn/ 301
-782
View File
@@ -1,782 +0,0 @@
@font-face {
font-family: 'Bagnard';
src: url("../../brand/fonts/Bagnard/Bold.woff") format("woff");
font-display: swap;
}
@font-face {
font-family: 'Public Sans';
src: url("../../brand/fonts/Public%20Sans/Thin.ttf") format("truetype");
font-weight: 100;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Public Sans';
src: url("../../brand/fonts/Public%20Sans/Thin%20Italic.ttf") format("truetype");
font-weight: 100;
font-style: italic;
font-display: swap;
}
@font-face {
font-family: 'Public Sans';
src: url("../../brand/fonts/Public%20Sans/ExtraLight.ttf") format("truetype");
font-weight: 200;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Public Sans';
src: url("../../brand/fonts/Public%20Sans/ExtraLight%20Italic.ttf") format("truetype");
font-weight: 200;
font-style: italic;
font-display: swap;
}
@font-face {
font-family: 'Public Sans';
src: url("../../brand/fonts/Public%20Sans/Light.ttf") format("truetype");
font-weight: 300;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Public Sans';
src: url("../../brand/fonts/Public%20Sans/Light%20Italic.ttf") format("truetype");
font-weight: 300;
font-style: italic;
font-display: swap;
}
@font-face {
font-family: 'Public Sans';
src: url("../../brand/fonts/Public%20Sans/Italic.ttf") format("truetype");
font-weight: 400;
font-style: italic;
font-display: swap;
}
@font-face {
font-family: 'Public Sans';
src: url("../../brand/fonts/Public%20Sans/Regular.ttf") format("truetype");
font-weight: 400;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Public Sans';
src: url("../../brand/fonts/Public%20Sans/Medium.ttf") format("truetype");
font-weight: 500;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Public Sans';
src: url("../../brand/fonts/Public%20Sans/Medium%20Italic.ttf") format("truetype");
font-weight: 500;
font-style: italic;
font-display: swap;
}
@font-face {
font-family: 'Public Sans';
src: url("../../brand/fonts/Public%20Sans/SemiBold.ttf") format("truetype");
font-weight: 600;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Public Sans';
src: url("../../brand/fonts/Public%20Sans/SemiBold%20Italic.ttf") format("truetype");
font-weight: 600;
font-style: italic;
font-display: swap;
}
@font-face {
font-family: 'Public Sans';
src: url("../../brand/fonts/Public%20Sans/Bold.ttf") format("truetype");
font-weight: 700;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Public Sans';
src: url("../../brand/fonts/Public%20Sans/Bold%20Italic.ttf") format("truetype");
font-weight: 700;
font-style: italic;
font-display: swap;
}
@font-face {
font-family: 'Public Sans';
src: url("../../brand/fonts/Public%20Sans/ExtraBold.ttf") format("truetype");
font-weight: 800;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Public Sans';
src: url("../../brand/fonts/Public%20Sans/ExtraBold%20Italic.ttf") format("truetype");
font-weight: 800;
font-style: italic;
font-display: swap;
}
@font-face {
font-family: 'Public Sans';
src: url("../../brand/fonts/Public%20Sans/Black.ttf") format("truetype");
font-weight: 900;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Public Sans';
src: url("../../brand/fonts/Public%20Sans/Black%20Italic.ttf") format("truetype");
font-weight: 900;
font-style: italic;
font-display: swap;
}
@font-face {
font-family: 'DM Mono';
src: url("../../brand/fonts/DM%20Mono/Regular.woff2") format("woff2");
font-weight: normal;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'DM Mono';
src: url("../../brand/fonts/DM%20Mono/Medium.woff2") format("woff2");
font-weight: 500;
font-style: normal;
font-display: swap;
}
.content {
font-family: "Public Sans", Helvetica, ui-sans-serif, system-ui, sans-serif;
}
h1, .content h1, .content h2, .content h3 {
font-family: "Bagnard", "Georgia", ui-serif, serif;
font-weight: bold;
padding-top: 0.5em;
border: none;
}
.pg-home h3 {
font-weight: 900;
}
:root {
--primary-hue: 40.42deg;
--primary-saturation: 100%;
--primary-lightness: 71.76%;
--hx-font-sans: "Public Sans", Helvetica, ui-sans-serif, system-ui, sans-serif;
}
:root:has(body.recommended-privacy-tools), body.privacy-guides .hextra-feature-grid a[href*="tools"] {
--primary-hue: 200deg;
--primary-saturation: 37.75%;
--primary-lightness: 70.39%;
}
:root:has(body.privacy-wiki), body.privacy-guides .hextra-feature-grid a[href*="wiki"] {
--primary-hue: 167.57deg;
--primary-saturation: 97.13%;
--primary-lightness: 40.98%;
}
:root:has(body.privacy-activism), body.privacy-guides .hextra-feature-grid a[href*="activism"] {
--primary-hue: 5deg;
--primary-saturation: 96.43%;
--primary-lightness: 56.08%;
}
body.privacy-guides .hextra-feature-grid a[href*="youtube.com"] {
--primary-hue: 259.83deg;
--primary-saturation: 95.04%;
--primary-lightness: 76.27%;
}
body.privacy-guides .hextra-feature-grid a[href*="discuss.privacyguides.net"] {
--primary-hue: 33deg;
--primary-saturation: 100%;
--primary-lightness: 92.16%;
}
body.privacy-guides .hextra-feature-grid a[href*="news"] {
--primary-hue: 217.97deg;
--primary-saturation: 100%;
--primary-lightness: 69.02%;
}
body.privacy-guides .hextra-feature-grid a.pg\:colored-card:has(img) {
background: radial-gradient(ellipse at 50% 80%,hsl(var(--primary-hue)var(--primary-saturation)calc(var(--primary-lightness) + calc(calc(100% - var(--primary-lightness))/50)*16)),hsla(0,0%,100%,0));
}
.hextra-feature-grid img {
filter: opacity(85%)
}
.hextra-nav-container {
background: radial-gradient(ellipse at 50% 80%,var(--hx-color-primary-500),hsla(0,0%,100%,0));
border-bottom: 1px solid var(--hx-color-primary-500);
}
.hextra-max-navbar-width a.hx\:text-sm[href*="/about/donate/"] {
color: white;
background-color: var(--hx-color-primary-800);
font-weight: 900;
text-transform: uppercase;
margin-left: 16px;
border-radius: var(--hx-radius-md);
}
.hextra-search-wrapper {
margin-right: 1em;
}
p.pg\:image\:right img {
float: right;
width: 150px;
margin-left: 1em;
}
html.light {
.content {
:where(h1):not(:where([class~=not-prose],[class~=not-prose] *)) {
color: var(--hx-color-primary-900)
}
:where(a):not(:where([class~=not-prose],
[class~=not-prose] *)) {
color:var(--hx-color-primary-900);
}
mark {
background-color: #ffff0080;
}
.pg\:title-card {
background-color: var(--hx-color-gray-100);
.hextra-card {
background-color: var(--hx-color-gray-50);
}
img {
float: right;
margin-top: 0;
max-width: 100px;
max-height: 100px;
margin: 0em 0em 1em 2em;
}
p:first-of-type {
margin-top: 0;
}
}
}
nav.hextra-toc li:has(~ li a.hextra-toc-active) > a {
color: var(--hx-color-gray-400);
opacity: 0.85;
}
}
html.dark {
.content {
:where(h1):not(:where([class~=not-prose],[class~=not-prose] *)) {
color: var(--hx-color-primary-200)
}
:where(a):not(:where([class~=not-prose],
[class~=not-prose] *)) {
color:var(--hx-color-primary-300);
}
mark {
background-color: #4287ff4d;
color: white;
}
.pg\:title-card {
background-color: var(--hx-color-gray-800);
.hextra-card {
background-color: var(--hx-color-gray-900);
}
}
}
nav.hextra-toc li:has(~ li a.hextra-toc-active) > a {
color: var(--hx-color-gray-500);
opacity: 0.9;
}
}
.content :where(a):not(:where([class~=not-prose],
[class~=not-prose] *)):hover {
text-decoration: underline;
}
a.footnote-ref {
font-weight: 900;
}
.pg-card-logos img {
width: 100px;
padding: 16px;
}
.pg-unstyled-cards .hextra-card {
border: none;
box-shadow: none;
}
.pg-unstyled-cards .hextra-card:hover {
background-color: inherit;
}
.content .pg\:buttons {
a {
background-color: var(--hx-color-gray-300);
color: var(--hx-color-gray-700);
text-decoration: none;
padding: 1em;
border-radius: var(--hx-radius-md);
font-weight: 600;
line-height: 4em;
}
a:hover {
background-color: var(--hx-color-gray-400);
}
a:first-of-type {
background-color: var(--hx-color-primary-900);
color: var(--hx-color-primary-100)
}
a:first-of-type:hover {
background-color: var(--hx-color-primary-800);
}
}
/*********** Activism Section ***********/
/* Activism Button Colors*/
.dpadirectory-bg {
background-color: #7dbd5b;
color: #2d2d2d !important;
}
/* Toolbox Color Variables */
:root {
--color-toolbox: #21bddc;
--color-toolbox-legal: #15678a;
--color-toolbox-tools: #457759;
--color-toolbox-perspective: #5c7e40;
--color-toolbox-community: #717924;
--color-toolbox-alliances: #847306;
--color-toolbox-accessibility: #926d07;
--color-toolbox-integrity: #ad5c14;
--color-toolbox-persistence: #ba4d13;
--color-toolbox-action: #a83410;
}
/* Toolbox Button Style*/
.toolbox-button-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(0, min(100%/0, max(150px, 100%/4))));
grid-gap: 1em 5em;
}
.content .toolbox-button-grid p {
margin-top: auto;
color: white;
a {
display: flex;
flex-direction: column;
text-align: center;
align-items: center;
font-size: 1.1em;
font-weight: bold;
line-height: 1;
height: 11em;
width: 11em;
color: white;
padding: 1em;
border-radius: 12px;
cursor: pointer;
text-decoration: none;
}
}
.toolbox-button-grid a:hover, .toolbox-button-grid a:focus {
position: relative;
transform: scale(1.08);
/* box-shadow: 5px 10px 10px 5px rgba(0,0,0,0.3); */
color: white;
}
.toolbox-button-grid .toolbox-button-icon {
height: 7em;
display: inline-flex;
padding: 1.1em;
overflow: visible;
}
.toolbox-button-grid .hextra-icon svg {
width: 5em;
height: 5em;
overflow: visible;
margin-bottom: 1.4em;
fill: white;
}
/* Toolbox Button Colors*/
.toolbox-bg {
background-color: var(--color-toolbox);
color: #2d2d2d !important;
}
.toolbox-bg-legal a {
background-color: var(--color-toolbox-legal);
}
.toolbox-bg-tools a {
background-color: var(--color-toolbox-tools);
}
.toolbox-bg-perspective a {
background-color: var(--color-toolbox-perspective);
}
.toolbox-bg-community a {
background-color: var(--color-toolbox-community);
}
.toolbox-bg-alliances a {
background-color: var(--color-toolbox-alliances);
}
.toolbox-bg-accessibility a {
background-color: var(--color-toolbox-accessibility);
}
.toolbox-bg-integrity a {
background-color: var(--color-toolbox-integrity);
}
.toolbox-bg-persistence a {
background-color: var(--color-toolbox-persistence);
}
.toolbox-bg-action a {
background-color: var(--color-toolbox-action);
}
/* Toolbox Tip Card Style */
.toolbox-tip-card {
padding-top: 0;
padding-left: 1.5rem;
padding-right: 1.5rem;
margin-bottom: 2rem;
border: 5px solid var(--hx-color-primary-500);
border-radius: 15px;
}
.toolbox-tip-card-learn-more {
text-align: right;
}
.toolbox-tip-card-list {
h2 {
margin-bottom: 1em;
}
a, a:hover {
text-decoration: none;
}
}
.light .toolbox-tip-card-list {
h3, a {
color: black;
}
}
.dark .toolbox-tip-card-list {
h3, a {
color: white;
}
}
.toolbox-tip-icon {
float: left;
height: 120px;
width: 120px;
margin-right: 20px;
}
.toolbox-tip-card:hover {
position: relative;
transform: scale(1.01);
box-shadow: 0 10px 20px 0 rgba(0,0,0,0.5);
}
.toolbox-tip-card a, .toolbox-tip-card a:hover {
color: var(--md-typeset-color);
}
/* Toolbox Tip Card Colors */
.toolbox-border-legal {
border-color: var(--color-toolbox-legal);
}
.toolbox-border-tools {
border-color: var(--color-toolbox-tools);
}
.toolbox-border-perspective {
border-color: var(--color-toolbox-perspective);
}
.toolbox-border-community {
border-color: var(--color-toolbox-community);
}
.toolbox-border-alliances {
border-color: var(--color-toolbox-alliances);
}
.toolbox-border-accessibility {
border-color: var(--color-toolbox-accessibility);
}
.toolbox-border-integrity {
border-color: var(--color-toolbox-integrity);
}
.toolbox-border-persistence {
border-color: var(--color-toolbox-persistence);
}
.toolbox-border-action {
border-color: var(--color-toolbox-action);
}
/* Toolbox Button Top Style */
.toolbox-button-top {
font-size: 0.7rem;
text-align: right;
}
.toolbox-button-top a, .toolbox-button-top a:visited {
color: var(--md-default-fg-color--light);
}
/* DPA Directory */
.dpadirectory-table {
padding-top: 1rem;
border-collapse: collapse;
width: 100%;
line-height: 1.05rem;
table-layout: fixed;
width: 100%;
overflow-wrap: normal;
table-layout: fixed;
}
/* Column Width - Region */
.dpadirectory-table th:first-child {
min-width: 110px;
}
/* Column Width - Law */
.dpadirectory-table th:nth-child(2) {
min-width: 140px;
}
/* Column Width - Abbreviation */
.dpadirectory-table th:nth-child(3) {
min-width: 100px;
}
/* Column Width - DPA */
.dpadirectory-table th:nth-child(4) {
min-width: 150px;
}
/* Column Width - Contact */
.dpadirectory-table th:nth-child(5) {
min-width: 85px;
}
/* Column Width - Complaint */
.dpadirectory-table th:nth-child(6) {
min-width: 110px;
}
.dpadirectory-table caption, th, td {
padding: 1rem;
text-align: left;
}
.dpadirectory-table caption, th {
font-weight: 700;
}
.dpadirectory-table caption {
text-transform: uppercase;
color: #000000 !important;
overflow: hidden;
background: #7dbd5b;
border-radius: 5px 5px 0 0;
}
.dpadirectory-table th {
border-bottom: none;
}
.dpadirectory-table tr:nth-of-type(2n) {
background: hsl(0 0% 0% / 0.03);
}
.dpadirectory-table tr {
border: none;
}
.dpadirectory-table tr:hover {
border: none;
}
.dpadirectory-table td {
padding: 0.8rem;
}
.dpadirectory-contact-cell hr {
margin: 0.3rem;
max-width: 100%;
margin-left:0;
}
/* Table Colors Per Region */
:root {
--color-dpadirectory-africa: #ffe26e;
--color-dpadirectory-asia: #91d16f;
--color-dpadirectory-europe: #7fbcfc;
--color-dpadirectory-northamerica: #ff8f75;
--color-dpadirectory-oceania: #c394de;
--color-dpadirectory-southamerica: #fcb249;
}
.table-africa caption {
background: var(--color-dpadirectory-africa);
}
.table-africa tbody {
border-bottom: 3px solid var(--color-dpadirectory-africa);
}
.table-asia caption {
background: var(--color-dpadirectory-asia);
}
.table-asia tbody {
border-bottom: 3px solid var(--color-dpadirectory-asia);
}
.table-europe caption {
background: var(--color-dpadirectory-europe);
}
.table-europe tbody {
border-bottom: 3px solid var(--color-dpadirectory-europe);
}
.table-northamerica caption {
background: var(--color-dpadirectory-northamerica);
}
.table-northamerica tbody {
border-bottom: 3px solid var(--color-dpadirectory-northamerica);
}
.table-oceania caption {
background: var(--color-dpadirectory-oceania);
}
.table-oceania tbody {
border-bottom: 3px solid var(--color-dpadirectory-oceania);
}
.table-southamerica caption {
background: var(--color-dpadirectory-southamerica);
}
.table-southamerica tbody {
border-bottom: 3px solid var(--color-dpadirectory-southamerica);
}
/* DPA Directory Buttons */
.content .toolbox-button-grid .dpadirectory-button {
a {
color: #000000;
}
svg {
fill: black;
width: 6em;
height: 6em;
}
}
.dpadirectory-button-africa a {
background-color: var(--color-dpadirectory-africa);
}
.dpadirectory-button-asia a {
background-color: var(--color-dpadirectory-asia);
}
.dpadirectory-button-europe a {
background-color: var(--color-dpadirectory-europe);
}
.dpadirectory-button-northamerica a {
background-color: var(--color-dpadirectory-northamerica);
}
.dpadirectory-button-oceania a {
background-color: var(--color-dpadirectory-oceania);
}
.dpadirectory-button-southamerica a {
background-color: var(--color-dpadirectory-southamerica);
}
@media (max-width: 650px) {
.dpadirectory-table th {
display: none;
}
.dpadirectory-table td {
display: grid;
gap: 0.5rem;
grid-template-columns: 12ch auto;
padding: 0.3rem 1rem;
}
.dpadirectory-table td:first-child {
padding-top: 1.2rem;
grid-template-columns: 9ch auto;
font-size: 0.8rem;
font-weight: 700;
}
.dpadirectory-table td:last-child {
padding-bottom: 1.2rem;
}
.dpadirectory-table td::before {
content: attr(data-cell) ": ";
font-weight: 700;
}
}
-51
View File
@@ -1,51 +0,0 @@
var feedback = document.forms.feedback
feedback.hidden = false
feedback.addEventListener("submit", function(ev) {
ev.preventDefault()
var data = ev.submitter.getAttribute("data-md-value")
if (data == 1) {
var umamiEventName = "feedback-positive"
} else if (data == 0) {
var umamiEventName = "feedback-negative"
}
var umamiEvent = {
payload: {
hostname: window.location.hostname,
language: navigator.language,
referrer: document.referrer,
screen: `${window.screen.width}x${window.screen.height}`,
url: window.location.pathname,
website: '246e357e-0764-4674-9314-7676724b3a88',
name: umamiEventName,
},
type: 'event',
};
// remove trailing slash from path
if (umamiEvent.payload.url.slice(-1) === '/') {
umamiEvent.payload.url = umamiEvent.payload.url.slice(0, -1);
}
console.log(umamiEvent)
fetch("https://stats.triplebit.net/api/send", {
method: "POST",
body: JSON.stringify(umamiEvent),
headers: {
"Content-type": "application/json",
}
})
.then((response) => console.log(response));
feedback.firstElementChild.disabled = true
var note = feedback.querySelector(
".md-feedback__note [data-md-value='" + data + "']"
)
if (note)
note.hidden = false
})
-65
View File
@@ -1,65 +0,0 @@
/**
* @overview Randomizes the order of an HTML element's children.
* @author Jonah Aragon <jonah@triplebit.net>
* @license
* Copyright (c) 2024 Jonah Aragon
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
// Fetch global data from meta tag
let globalData = document.querySelector("#global-data");
if (globalData.dataset.randomizeElement) {
// Get elements to be randomized from meta tag in HTML
let randomizeElement = globalData.dataset.randomizeElement;
console.log("Randomizing child elements of " + randomizeElement);
// Get all elements to be randomized
let randomizeChildren = document.querySelectorAll(randomizeElement);
let randomizeArray = Array.from(randomizeChildren);
// Handle multiple elements to be randomized
for (const element of randomizeArray) {
let selector = " > *";
if (globalData.dataset.randomizeElementSelector) {
selector = globalData.dataset.randomizeElementSelector
}
// Select all direct children of element
let children = element.querySelectorAll(randomizeElement + selector);
// Randomize rows (simple, probably not efficient)
let randomChildren = Array.from(children)
.map(value => ({ value, sort: Math.random() }))
.sort((a, b) => a.sort - b.sort)
.map(({ value }) => value);
// Replace each element with randomly selected element
for (let i = 0; i < children.length; i++) {
let child = randomChildren[i].cloneNode(true);
child.classList.add("randomized");
let parent = children[i].parentNode;
parent.insertBefore(child, children[i]);
children[i].remove();
}
}
}
-140
View File
@@ -1,140 +0,0 @@
---
title: Privacy Guides
layout: pg-home
aliases:
- /en
---
<div class=" hextra-feature-grid hx:grid hx:sm:max-lg:grid-cols-2 hx:max-sm:grid-cols-1 hx:gap-4 hx:w-full not-prose" style="--hextra-feature-grid-cols: 2; ">
<div class="hx:w-full">
<div class="hx:mt-6 hx:mb-6">
{{< hextra/hero-headline >}}
Consumer Data Privacy Advocacy &amp; Resources
{{< /hextra/hero-headline >}}
</div>
<div class="hx:mb-12">
{{< hextra/hero-subtitle >}}
<strong>Privacy Guides</strong> is the only impartial, non-profit project
focused on building a <strong>strong privacy advocacy</strong> community
and delivering the best <strong>digital privacy education</strong> on the internet.
{{< /hextra/hero-subtitle >}}
</div>
<div class="hx:mb-6">
{{< hextra/hero-button text="Why Privacy Matters" link="wiki/basics/why-privacy-matters" style="margin-top: 8px; margin-right: 8px; color: var(--hx-color-gray-800); background-color: var(--hx-color-primary-500);" >}}
{{< hextra/hero-button text="Recommended Tools" link="tools" style="margin-top: 8px; color: white; background-color: var(--hx-color-gray-600);" >}}
</div>
</div>
<div class="hx:mx-auto hx:sm:block hx:hidden">
<a class="hx:dark:hidden">
<img src="/brand/logos/svg/square/pg-yellow-nobg.svg" width="350" height="350" alt="Privacy Guides shield logo">
</a>
<a class="hx:hidden hx:dark:block">
<img src="/brand/logos/svg/square/pg-blue-dark-nobg.svg" width="350" height="350" alt="Privacy Guides shield logo">
</a>
</div>
</div>
<div class="hx:mt-12"></div>
{{< hextra/hero-section style="text-align: center; width: 100%; margin-bottom: 1em;" >}}
What <strong>Privacy Champions</strong> Like You Have Built:
{{< /hextra/hero-section >}}
{{< hextra/feature-grid >}}
{{< hextra/feature-card
title="Privacy Wiki"
subtitle="A comprehensive resource for understanding digital privacy concepts and best practices."
class="hx:aspect-auto hx:md:aspect-[1.1/1] hx:max-md:min-h-[340px] pg:colored-card"
image="pg-home-privacy-wiki.png"
imageClass="hx:top-[40%] hx:left-[24px] hx:w-[180%] hx:sm:w-[110%] hx:dark:opacity-80"
link="wiki"
>}}
{{< hextra/feature-card
title="Educational Videos"
subtitle="Watch our educational videos to learn more about digital privacy and how to protect yourself online."
class="hx:aspect-auto hx:md:aspect-[1.1/1] hx:max-md:min-h-[340px] pg:colored-card"
image="pg-home-youtube.png"
imageClass="hx:top-[40%] hx:left-[24px] hx:w-[180%] hx:sm:w-[110%] hx:dark:opacity-80"
link="https://www.privacyguides.org/videos/"
>}}
{{< hextra/feature-card
title="Activism Toolbox"
subtitle="Get involved in privacy activism and help us build a more private internet."
class="hx:aspect-auto hx:md:aspect-[1.1/1] hx:max-md:min-h-[340px] pg:colored-card"
image="pg-home-privacy-activism.png"
imageClass="hx:top-[40%] hx:left-[24px] hx:w-[180%] hx:sm:w-[110%] hx:dark:opacity-80"
link="activism"
>}}
{{< hextra/feature-card
title="Privacy Tools"
subtitle="The essential tools you need to safeguard your digital privacy, chosen by community consensus."
class="hx:aspect-auto hx:md:aspect-[1.1/1] hx:max-md:min-h-[340px] pg:colored-card"
image="pg-home-privacy-tools.png"
imageClass="hx:top-[40%] hx:left-[24px] hx:w-[180%] hx:sm:w-[110%] hx:dark:opacity-80"
link="tools"
>}}
{{< hextra/feature-card
title="Community Forum"
subtitle="Join the conversation, get answers, and connect with others who share your commitment to digital privacy."
class="hx:aspect-auto hx:md:aspect-[1.1/1] hx:max-md:min-h-[340px] pg:colored-card"
image="pg-home-privacy-forum.png"
imageClass="hx:top-[40%] hx:left-[24px] hx:w-[180%] hx:sm:w-[110%] hx:dark:opacity-80"
link="https://discuss.privacyguides.net"
>}}
{{< hextra/feature-card
title="News Briefs"
subtitle="Stay updated with the latest news and developments in the world of cybersecurity, privacy, and digital rights."
class="hx:aspect-auto hx:md:aspect-[1.1/1] hx:max-md:min-h-[340px] pg:colored-card"
image="pg-home-privacy-news.png"
imageClass="hx:top-[40%] hx:left-[24px] hx:w-[180%] hx:sm:w-[110%] hx:dark:opacity-80"
link="https://www.privacyguides.org/news/"
>}}
{{< /hextra/feature-grid >}}
<div class="hx:mt-12"></div>
{{< hextra/hero-section style="text-align: center; width: 100%; margin-bottom: 1em;" >}}
More Resources:
{{< /hextra/hero-section >}}
{{< hextra/feature-grid >}}
{{< hextra/feature-card
title="Newsletter"
subtitle="Subscribe to our newsletter and never miss an update on the latest in the consumer digital privacy world."
link="#/portal"
icon="mail-open"
>}}
{{< hextra/feature-card
title="Articles"
subtitle="Read the latest articles from our team of privacy experts and guest contributors."
link="https://www.privacyguides.org/articles/"
icon="book-open"
>}}
{{< hextra/feature-card
title="This Week in Privacy"
subtitle="Our livestream and podcast discussing the latest news and answering your questions, every single week."
link="https://thisweekinprivacy.net"
icon="chat-alt-2"
>}}
{{< hextra/feature-card
title="Courses and Tutorials"
subtitle="Follow our courses and tutorials to learn more about digital privacy and how to protect yourself online."
link="https://www.youtube.com/@PrivacyGuides/courses"
icon="academic-cap"
>}}
{{< hextra/feature-card
title="Trustworthy Reviews"
subtitle="We're committed to providing unbiased and comprehensive reviews of privacy tools and services."
icon="badge-check"
>}}
{{< hextra/feature-card
title="Learn More"
subtitle="Find out more about Privacy Guides and how you can support our mission."
link="about"
icon="heart"
>}}
{{< /hextra/feature-grid >}}
-181
View File
@@ -1,181 +0,0 @@
---
title: "About Privacy Guides"
description: Privacy Guides is a socially motivated website that provides information for protecting your data security and privacy.
breadcrumbs: false
cascade:
type: docs
aliases:
- /about/contributors
- /en/about
- /en/about/contributors
---
![Privacy Guides logo](./pg-yellow.svg)
{ .pg:image:right }
**Privacy Guides** is a socially motivated website that provides information for protecting your data security and privacy. We are a non-profit project with a mission to inform the public about the value of digital privacy, and about global government initiatives which aim to monitor your online activity. Our website is free of advertisements and not affiliated with any of the listed providers.
[Become a Member](https://donate.magicgrants.org/privacyguides)
[Homepage](https://www.privacyguides.org)
[Source Code](https://github.com/privacyguides/privacyguides.org)
{ .pg:buttons }
Privacy Guides is built by volunteers and staff members around the world. All changes to our recommendations and resources are reviewed by at least two [trusted](https://discuss.privacyguides.net/u?group=team&order=solutions&period=all) individuals, and we work diligently to ensure our content is updated as quickly as possible to adapt to the ever-changing cybersecurity threat landscape.
In addition to our core team, many other people have made contributions to the project. You can too! We're open source on GitHub, and accepting translation suggestions on [Crowdin](https://crowdin.com/project/privacyguides).
## Contact Us
[Join the Privacy Guides forum](https://discuss.privacyguides.net)
{ .pg:buttons }
The best way to get individual help is from our community on Discourse. If you notice an issue with our website, please open a discussion in the [Site Development](https://discuss.privacyguides.net/c/site-development/7) category on our forum. If you have a question about anything we cover, please ask it in the [Questions](https://discuss.privacyguides.net/c/privacy/questions/8) category on our forum.
![Signal contact QR code](./signal-contact-qr.png)
{ .pg:image:right }
Have a tip for us, or need to share some sensitive information? The best way to get in touch with us securely is via `@privacyguides.01` on Signal. This group account is monitored by [Jonah](https://discuss.privacyguides.net/u/jonah), [Niek](https://discuss.privacyguides.net/u/niek-de-wilde), [Em](https://discuss.privacyguides.net/u/em), and [Jordan](https://discuss.privacyguides.net/u/jordan).
[Chat on Signal](https://signal.me/#eu/zg9xcrIv5w-EtXt2FmTJgfWv01LmyTed8rpr7RDv35Mizq8ISZ9NJLmYtzsxI0Z4)
{ .pg:buttons }
You may also email the entire team at <team@privacyguides.org>. This is a shared inbox that could be read by any [team member](https://discuss.privacyguides.net/u?group=team&order=solutions&period=all), so please consider what sensitive information you share via email accordingly.
We will do our best to respond to all queries within 3 business days, but please understand we are unable to provide individualized advice to everyone who asks. If you have a question about privacy, you will receive a much more detailed and timely response from the Privacy Guides community by [asking on our forum](https://discuss.privacyguides.net/c/privacy/questions/8).
You can also use OpenPGP to contact us via email, if you feel comfortable with your client's security settings. You can discover the PGP keys of our team members using WKD if your client supports it. If it doesn't, or you don't know what that means, you can also find the public key for any Privacy Guides email account by searching on [keys.openpgp.org](https://keys.openpgp.org). We do not have PGP for the shared team inbox, only individual mailboxes which can be found in our team directory below.
If you need an alternative secure channel, please request one via any contact method including social media, and we will work with you to establish one. Please do not share any sensitive information with us before we have established an appropriately secure discussion channel.
## Executive Committee
The project executive committee consists of five volunteers charged with management of the [MAGIC Privacy Guides Fund](https://magicgrants.org/funds/privacy_guides), making most critical project-related decisions.
### Daniel Gray
Founder
- [Forum profile](https://discuss.privacyguides.net/u/dngray)
- [GitHub](https://github.com/dngray)
- [Mastodon](https://mastodon.social/@dngray "@dngray@mastodon.social"){rel=me}
- [Email](mailto:dngray@privacyguides.org)
### Freddy
Founder
- [Forum profile](https://discuss.privacyguides.net/u/freddy)
- [GitHub](https://github.com/freddy-m)
- [Mastodon](https://social.lol/@freddy "@freddy@social.lol"){rel=me}
- [Email](mailto:freddy@privacyguides.org)
### Jonah Aragon
Founder, Program Director
- [Forum profile](https://discuss.privacyguides.net/u/jonah)
- [Homepage](https://www.jonaharagon.com)
- [GitHub](https://github.com/jonaharagon)
- [Mastodon](https://mastodon.neat.computer/@jonah "@jonah@neat.computer"){rel=me}
- [Email](mailto:jonah@privacyguides.org)
### Niek de Wilde
Founder
- [Forum profile](https://discuss.privacyguides.net/u/Niek-de-Wilde)
- [GitHub](https://github.com/blacklight447)
- [Mastodon](https://mastodon.social/@blacklight447 "@blacklight447@mastodon.social"){rel=me}
- [Email](mailto:niekdewilde@privacyguides.org)
### Olivia
Founder
- [Forum profile](https://discuss.privacyguides.net/u/olivia)
- [GitHub](https://github.com/hook9)
- [Mastodon](https://mastodon.neat.computer/@oliviablob "@oliviablob@neat.computer"){rel=me}
## Staff
Our staff are paid to contribute to supplemental content at Privacy Guides, like [video production](https://www.youtube.com/@privacyguides), [news articles and tutorials](https://www.privacyguides.org/articles), and our discussion communities and social media. Most are available and paid on a full-time basis to assist the organization.
### Jordan Warne
Digital Content Producer
- [Forum profile](https://discuss.privacyguides.net/u/Jordan)
- [GitHub](https://github.com/jordan-warne)
- [Mastodon](https://social.lol/@jw "@jw@social.lol"){rel=me}
- [Email](mailto:jordan@privacyguides.org)
### Nate Bartram
Digital Content Producer
- [Forum profile](https://discuss.privacyguides.net/u/nateb)
- [GitHub](https://github.com/tnonate)
- [Mastodon](https://mastodon.thenewoil.org/@nateb "@nateb@mastodon.thenewoil.org"){rel=me}
- [Email](mailto:nate@privacyguides.org)
## Social Media
We have a general policy of avoiding links to centralized social media profiles and other websites outside our control. This means that in places like our website footer and other areas, we only link to platforms we fully control, such as our Mastodon and PeerTube accounts or Matrix channels.
However, Privacy Guides *does* have social media accounts on a wide variety of platforms, in the hope of reaching new users who aren't yet familiar with our content. We try to make this a "one-way street" where those accounts link to privacyguides.org, and not the other way around. However, this creates some confusion about which accounts are actually run by the Privacy Guides team. For reference, we will list all of our accounts here:
- [Forum](https://discuss.privacyguides.net)
- [Matrix Space](https://matrix.to/#/#privacyguides:matrix.org)
- [Mastodon](https://mastodon.neat.computer/@privacyguides)
- [PeerTube](https://neat.tube/c/privacyguides)
- [Bluesky](https://bsky.app/profile/privacyguides.org)
- [Codeberg](https://codeberg.org/privacyguides)
- [GitHub](https://github.com/privacyguides)
- [GitLab](https://gitlab.com/privacyguides)
- [LinkedIn](https://linkedin.com/company/privacyguides)
- [Reddit](https://reddit.com/r/PrivacyGuides)
- [X (Twitter)](https://x.com/privacy_guides)
- [YouTube](https://youtube.com/@privacyguides)
- [TikTok](https://www.tiktok.com/@privacyguides)
- [Facebook](https://www.facebook.com/PrivacyGuides.org)
- [Instagram](https://www.instagram.com/privacy.guides/)
- [Threads](https://www.threads.net/@privacy.guides)
To reiterate, this is not an endorsement of any platform, and we generally discourage following us on most social media platforms.
## In The Media
> To find [privacy-focused alternative] apps, check out sites like Good Reports and **Privacy Guides**, which list privacy-focused apps in a variety of categories, notably including email providers (usually on paid plans) that arent run by the big tech companies.
— [New York Times](https://nytimes.com/wirecutter/guides/online-security-social-media-privacy)
> If you're looking for a new VPN, you can go to the discount code of just about any podcast. If you are looking for a **good** VPN, you need professional help. The same goes for email clients, browsers, operating systems and password managers. How do you know which of these is the best, most privacy-friendly option? For that there is **Privacy Guides**, a platform on which a number of volunteers search day in, day out for the best privacy-friendly tools to use on the internet.
— [Tweakers.net](https://tweakers.net/reviews/10568/op-zoek-naar-privacyvriendelijke-tools-niek-de-wilde-van-privacy-guides.html) [Translated from Dutch]
Also featured on: [Ars Technica](https://arstechnica.com/gadgets/2022/02/is-firefox-ok), [Wirecutter](https://nytimes.com/wirecutter/guides/practical-guide-to-securing-windows-pc) [[2](https://nytimes.com/wirecutter/guides/practical-guide-to-securing-your-mac)], [NPO Radio 1](https://nporadio1.nl/nieuws/binnenland/8eaff3a2-8b29-4f63-9b74-36d2b28b1fe1/ooit-online-eens-wat-doms-geplaatst-ga-jezelf-eens-googlen-en-kijk-dan-wat-je-tegenkomt), [Wired](https://wired.com/story/firefox-mozilla-2022), [Fast Company](https://fastcompany.com/91167564/mozilla-wants-you-to-love-firefox-again) and [404 Media](https://404media.co/privacy-service-optery-faces-backlash-after-plan-to-send-openai-user-data).
## History
Privacy Guides was launched in September 2021 as a continuation of the [defunct](privacytools/index.md) "PrivacyTools" open-source educational project. We recognized the importance of independent, criteria-focused product recommendations and general knowledge in the privacy space, which is why we needed to preserve the work that had been created by so many contributors since 2015 and make sure that information had a stable home on the web indefinitely.
In 2022, we completed the transition of our main website framework from Jekyll to MkDocs, using the `mkdocs-material` documentation software. This change made open-source contributions to our site significantly easier for outsiders, because instead of needing to know complicated syntax to write posts effectively, contributing is now as easy as writing a standard Markdown document.
We additionally launched our new discussion forum at [discuss.privacyguides.net](https://discuss.privacyguides.net) as a community platform to share ideas and ask questions about our mission. This augments our existing community on Matrix, and replaced our previous GitHub Discussions platform, decreasing our reliance on proprietary discussion platforms.
In 2023, we launched international translations of our website in [French](https://www.privacyguides.org/fr), [Hebrew](https://www.privacyguides.org/he), [Dutch](https://www.privacyguides.org/nl), and more languages, made possible by our excellent translation team on [Crowdin](https://crowdin.com/project/privacyguides).
In 2024, we successfully fundraised to hire several full-time staff members, Em, Jordan, and Kevin; to help with content creation, community management, and video production. This has allowed us to expand our reach and provide more frequent updates to our audience.
In 2025, we launched our [newsroom](https://www.privacyguides.org/news), providing timely articles on the latest developments in privacy and security. We also hired Nate as a Digital Content Producer to bring more consistency to our educational video content.
We plan to continue carrying forward our mission of outreach and education, and finding ways to more clearly highlight the dangers of a lack of privacy awareness in the modern digital age, and the prevalence and harms of security breaches across the technology industry.
## Site License
> [!IMPORTANT]
>
> The following is a human-readable summary of (and not a substitute for) the [license](https://github.com/privacyguides/privacyguides.org/blob/main/README.md#license).
Unless otherwise noted, the original content on this website is made available under the [Creative Commons Attribution-ShareAlike 4.0 International Public License](https://github.com/privacyguides/privacyguides.org/blob/main/LICENSE). This means that you are free to copy and redistribute the material in any medium or format for any purpose, even commercially; as long as you give appropriate credit to `Privacy Guides (www.privacyguides.org)` and share your work under the same license.
You may comply with these terms in any reasonable manner, but not in any way that suggests Privacy Guides endorses you or your use.
-37
View File
@@ -1,37 +0,0 @@
---
title: General Criteria
description: A list of general priorities we consider for all submissions to Privacy Guides.
aliases:
- /en/about/criteria
---
Below are some general priorities we consider for all submissions to Privacy Guides. Each category will have additional requirements for inclusion.
- **Security**: Tools should follow security best practices wherever applicable.
- **Source Availability**: Open-source projects are generally preferred over equivalent proprietary alternatives.
- **Cross-Platform Availability**: We typically prefer recommendations to be cross-platform to avoid vendor lock-in.
- **Active Development**: The tools that we recommend should be actively developed. Unmaintained projects will be removed in most cases.
- **Usability**: Tools should be accessible to most computer users. An overly technical background should not be required.
- **Documentation**: Tools should have clear and extensive documentation for use.
## Financial Disclosure
We do not make money from recommending certain products, we do not use affiliate links, and we do not provide special consideration to project donors.
## Developer Self-Submissions
We have these requirements in regard to developers which wish to submit their project or software for consideration.
- Must undergo our [self-submission process](https://discuss.privacyguides.net/t/about-the-project-showcase-category/114) as a way to engage with our community, address any potential concerns, and elicit any feedback that can help improve your project.
- Must disclose affiliation, i.e. your position within the project being submitted.
- Must have a security white paper if it is a project that involves the handling of sensitive information like a messenger, password manager, encrypted cloud storage, etc.
- Regarding third party audit status, we want to know if you have undergone one, or have requested one. If possible please mention who will be conducting the audit.
- Must explain what the project brings to the table in regard to privacy.
- What new problem(s), if any, does it solve?
- Why should anyone use it over the alternatives?
- Must state what the exact threat model is with their project.
- It should be clear to potential users what the project can provide, and what it cannot. Ideally, a developer should be able to identify what [common threat(s)](../../wiki/basics/common-threats/index.md) their project protects against.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

-123
View File
@@ -1,123 +0,0 @@
---
title: Donate
description: The charitable mission of Privacy Guides relies on contributions from visitors like yourself. Anything you can do to support the project is hugely appreciated.
aliases:
- /en/about/donate
---
<style>
.hextra-tabs-panel img {
height: 3.25rem;
}
.hextra-tabs-panel ul {
display: flex;
list-style-type: none;
margin: 0;
}
.hextra-tabs-panel ul li {
margin-right: 1em;
}
</style>
<!-- markdownlint-disable MD036 -->
Support our mission to defend digital rights and spread the word about mass surveillance programs and other daily privacy invasions. You can help Privacy Guides researchers, activists, and maintainers create informative content, host private digital services, and protect privacy rights at a time when the world needs it most.
<!-- markdownlint-disable-next-line -->
[Become a Member](https://donate.magicgrants.org/privacyguides/membership)
[Become a Member (Cryptocurrency)](https://donate.magicgrants.org/privacyguides/membership)
[One-Time Donation](https://donate.magicgrants.org/privacyguides/donate/privacyguides)
{ .pg:buttons .pg:buttons:red }
*MAGIC Grants is our fiscal host, and their custom, open-source donation platform allows you to donate to our project with **Monero**, **Litecoin (MWEB)**, **Bitcoin**, or **debit/credit card**. You can also donate using [GitHub Sponsors](https://github.com/sponsors/privacyguides).*
## Foundations & Organizations
{{< tabs >}}
{{< tab name="Current Supporters" >}}
Thank you to these organizations who significantly support Privacy Guides.
- [![Power Up Privacy](./power-up-privacy.webp)](https://powerupprivacy.com "Power Up Privacy")
- [![DeleteMe](./deleteme.webp)](https://joindeleteme.com "DeleteMe")
{{< /tab >}}
{{< tab name="Past Supporters" >}}
Thank you to these organizations who have substantially supported our project in the past.
- [Safing](https://safing.io): 2019 2021
{{< /tab >}}
{{< /tabs >}}
## Active Members
Privacy Guides would not be possible without these individuals who generously donate on a monthly or yearly basis.[^active-members]
[^active-members]: If you [become a member](https://donate.magicgrants.org/privacyguides/membership) and [link your donation](https://discuss.privacyguides.net/t/getting-your-member-flair-on-the-forum/25453) to your forum account, you're automatically added here with a link to your profile and avatar to show your support for Privacy Guides. If you don't make your membership public on the forum, you'll be a silent +1. You can change your visibility any time. This chart is updated upon each website release.
The list of active members is updated when the site is built from our donation platform. After you [become a member](https://donate.magicgrants.org/privacyguides/membership) and [link your donation](https://discuss.privacyguides.net/t/getting-your-member-flair-on-the-forum/25453) to your forum account, you can choose whether your name appears on the published donate page.
*This is a list of our **active** [members](https://donate.magicgrants.org/privacyguides/membership), plus donors on GitHub, who have chosen to make their donation public. Hundreds more have donated in the past or privately, and their support is hugely appreciated as well.*
## Merchandise
You can support us and share your passion for privacy by buying our merchandise from HelloTux.
[Buy on HelloTux.com](https://hellotux.com/privacyguides)
{ .pg:buttons }
## Non-Financial Support
It takes a lot of people and [work](https://github.com/privacyguides/privacyguides.org/pulse/monthly) to keep Privacy Guides up to date and spread the word about privacy and mass surveillance. If you're looking for other ways to help out, consider getting involved by [editing the site](https://github.com/privacyguides/privacyguides.org), [joining our forum](https://discuss.privacyguides.net), or [contributing translations](https://crowdin.com/project/privacyguides).
## FAQ
### What is an organizational membership?
Organizational membership[^org-members] to Privacy Guides is open to any company, private foundation, or organization that donates at least $5,000 per year. While Privacy Guides does not endorse private companies or their products, we're grateful for their contributions. Your donation may be tax-deductible, and we will provide you with a receipt.
You can become an organizational member by reaching out to <info@magicgrants.org> for more information.
[^org-members]: Please contact <info@magicgrants.org> to inquire about giving. Privacy Guides reserves the right to rescind the membership of those who are unaligned with our mission or organization at any time. Organizational members have no ability to influence what content is recommended on the Privacy Guides website. Learn more about our [donation acceptance policy](../donation-acceptance-policy/index.md).
### How are organizational members recognized?
Organizational members that choose to be recognized publicly are included in our organizational members section (above), and occasionally at other opportunities where appropriate. Organizational member links include the `rel="nofollow"` attribute: We adopted this policy to screen out potential abuse of our program and site to raise the rank of third parties in search algorithms. Unfortunately, this is a growing problem for nonprofits. This was a complex decision since we know many of the sincere supporters behind these companies, but we decided that it was the best choice for us.
Organizational members have no ability to influence what content is recommended on the Privacy Guides website. Learn more about our [donation acceptance policy](../donation-acceptance-policy/index.md).
### What is an active membership?
Your monthly or yearly membership sustains Privacy Guides's services and public activism for privacy and cybersecurity year round. If you become a member, we will recognize your support here on our website, our community forum, and occasionally in other areas like our videos if you choose to make your membership publicly known.
Our membership program is brand new, and we are still exploring other ways that we can share a token of our appreciation with you, while maintaining sustainable and ethical boundaries. Stay tuned!
### How does Privacy Guides use donations?
Privacy Guides has been a nonstop effort for over 5 years to stay up to date with the world of cybersecurity and privacy, and to promote the benefits of privacy overall. This is a **non-profit, community-driven** project that would not be possible without the generous support of all our contributors, in addition to our regularly donating members above.
Your donation go to a [dedicated fund](https://magicgrants.org/funds/privacy_guides) within [MAGIC Grants](https://magicgrants.org), a 501(c)(3) organization and our fiscal host. The funds will **only** be used for this project specifically.
You may qualify for a tax deduction. When you donate to us [here](https://donate.magicgrants.org/privacyguides) with cryptocurrency or card you have the option to receive a receipt from MAGIC Grants for this purpose. If you have questions about other transactions please email <info@magicgrants.org>.
We use donations for a variety of purposes, including:
**Payroll**
: We have journalists, writers, and video creators on payroll to review products and create more educational content on a regular basis. This is a significant expense, and we are only able to create our quantity of content with your support.
**Web Hosting and Infrastructure**
: Traffic to this website uses hundreds of gigabytes of data per month; we use a variety of service providers to keep up with this traffic.
**Online Services**
: We host [internet services](../services/index.md) for testing and showcasing different privacy-products we like and [recommend](../../tools/_index.md). Some of them are made publicly available for our community's use (SearXNG, Tor, etc.), and some are provided for our team members (email, etc.).
**Product Purchases**
: We occasionally purchase products and services for the purposes of testing our [recommended tools](../../tools/_index.md).
Thank you to all those who support our mission!
We strictly **do not** use donations to support political campaigns/candidates or attempt to influence legislation. Earnings will **not** inure to the benefit of any private shareholder or individual.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

@@ -1,60 +0,0 @@
---
title: Donation Acceptance Policy
description: Privacy Guides aspires to obtain funding from a wide variety of sources to reduce our dependency on any single donor. Please consider donating!
aliases:
- /en/about/donation-acceptance-policy
---
Privacy Guides takes the ethical responsibility of making unbiased recommendations on its website very seriously.
Privacy Guides aspires to obtain funding from a wide variety of sources to reduce our dependency on any single donor. Please consider [donating](../donate/index.md)!
## What we **can** accept
In the course of our regular fundraising activities...
- Donations and other forms of support will generally be accepted from individuals, corporations, foundations, or other entities, without limitations.
- This includes cash, cash equivalents (checks, money orders, credit/debit card payments), and cryptocurrency.
- Gifts of Real Property, Personal Property, or Securities may only be accepted upon approval of the MAGIC Grants board of directors.
Privacy Guides will only accept such gifts that are legal and consistent with our policies. Gifts must not interfere with Privacy Guides' mission, purpose, and procedures.
## Things we do **not** do
- Accept sponsorships.
- Offer to recommend a product or service in exchange for a donation or other incentive.
- Threaten to remove a recommendation for a product or service unless we receive a donation or other incentive.
- Offer to expedite a review of a product or service in exchange for a donation or other incentive.
- Write sponsored content or feature sponsored components in our content.
## Things we **may** do
- Accept donations from privacy-related companies and non-profits.
- Apply for grant programs.
- Accept free versions of software or hardware to test and review, while being mindful of possible differences in versions that could differ from a regular customer experience. ([More details](../executive-policy/index.md#ep1-freely-provided-product-samples))
- Accept discounted versions of software or hardware that assist our operations (for example, discounted software costs made available to non-profits).
## Restrictions on gifts
Privacy Guides accepts unrestricted gifts, and we appreciate the flexibility to apply your gift to our programs where they are most needed.
We also accept and appreciate gifts for specified programs or purposes, provided that such gifts are consistent with our program's stated mission, purpose, and priority. Privacy Guides will not accept gifts which are too restrictive in purpose.
Examples of gifts which are too restrictive include:
- Those which fund the research and review of a specific product category or specific product.
- Those which violate our existing policies.
- Those which are too difficult for us to administer.
- Those that are for purposes outside our general mission.
An example of an acceptable restriction could be a gift towards funding our [video](https://www.privacyguides.org/videos) production, or hosting our website and forum.
Final decisions on the restrictive nature of a gift and its acceptance or refusal will be made by our executive committee.
## Additional terms
Privacy Guides generally does not pay "finder's fees" or commissions to third parties in connection with any gift to Privacy Guides. We may, however, pay commissions and fees to properly negotiate and receive assets when appropriate.
No officer, committee member, employee, or other agent of Privacy Guides will be compensated in a manner which is dependent on the size or nature of gifts made to Privacy Guides by any person. If we engage with legal, accounting, or other professionals, their fees and expenses will be determined by the time they spend engaged with our work, and not by reference to any particular gift in connection to their retainer.
Privacy Guides always follows the MAGIC Grants Gift Acceptance Policy, available on their website: <https://magicgrants.org/about/documentation/>
-32
View File
@@ -1,32 +0,0 @@
---
title: Executive Policy
description: These are policies formally adopted by our executive committee, and take precedence over all other statements expressed on this website.
aliases:
- /en/about/executive-policy
---
These are policies formally adopted by Privacy Guides' executive committee, and take precedence over all other statements expressed on this website.
The keywords **must**, **must not**, **required**, **shall**, **shall not**, **should**, **should not**, **recommended**, **may**, and **optional** are to be interpreted as described in [RFC 2119](https://datatracker.ietf.org/doc/html/rfc2119).
## EP1: Freely-Provided Product Samples
*Our policy on accepting product samples for review was adopted September 7, 2024.*
{{< tabs >}}
{{< tab name="Current Version (1)" >}}
- Privacy Guides **shall not** proactively reach out to vendors asking for product samples or review accounts.
- Privacy Guides **shall not** accept test/review accounts for subscription cloud services.
- Privacy Guides **may** accept freely-provided product samples for one-time purchase software applications which run locally, given they don't require a subscription for continued operation.
- Privacy Guides **may** accept freely-provided samples of hardware products.
- Privacy Guides **may** accept a freely-provided subscription service associated with a hardware product, if such a subscription/license is necessary to use the product.
- Privacy Guides **must not** enter into an agreement pertaining to our editorial opinion with the vendor in order to receive a sample or publish a review. All freely-provided items must be strictly "no strings attached."
- We **may** agree to return the product to the vendor following the review if requested.
- We **may** agree to a reasonable NDA, provided it has a clear embargo date that is lifted no more than 6 months in the future where the NDA completely no longer applies.
- We **should not** enter into any other agreement with the vendor not described here. Potential agreements not described here **must** be approved by the executive committee beforehand.
In all cases, whether we paid for the product independently or received a free sample from a vendor, how we obtained the product **must** be clearly documented in the background section of every article associated with the product.
{{< /tab >}}
{{< /tabs >}}
-22
View File
@@ -1,22 +0,0 @@
---
title: Job Openings
description: Privacy Guides has a small, remote team of privacy researchers and advocates. Any open positions we may have in the future will be posted here.
aliases:
- /about/jobs/content-creator
- /about/jobs/intern-news
- /about/jobs/journalist
- /en/about/jobs
- /en/about/jobs/content-creator
- /en/about/jobs/intern-news
- /en/about/jobs/journalist
---
Privacy Guides has a small, remote team of privacy researchers and advocates working to further our mission of protecting free expression and promoting privacy-respecting technology. As a non-profit, we are expanding very slowly to ensure the project is sustainable in the long term. All of our team members are listed [here](https://discuss.privacyguides.net/u?group=team&order=solutions&period=all). Please consider [donating](https://donate.magicgrants.org/privacyguides) to support our cause.
We are occasionally looking for strong journalistic writers, product reviewers, and privacy experts to help us out, and any open positions will be posted below.
---
## Open Positions
There are no open positions at this time.
-52
View File
@@ -1,52 +0,0 @@
---
title: "Notices and Disclaimers"
description: Information about our website license, acceptable use policy, and other important details.
aliases:
- /en/about/notices
---
## Legal Disclaimer
Privacy Guides is not a law firm. As such, the Privacy Guides website and contributors are not providing legal advice. The material and recommendations in our website and guides do not constitute legal advice nor does contributing to the website or communicating with Privacy Guides or other contributors about our website create an attorney-client relationship.
Running this website, like any human endeavor, involves uncertainty and trade-offs. We hope this website helps, but it may include mistakes and cant address every situation. If you have any questions about your situation, we encourage you to do your own research, seek out other experts, and engage in discussions with the Privacy Guides community. If you have any legal questions, you should consult with your own legal counsel before moving forward.
Privacy Guides is an open-source project contributed to under licenses that include terms that, for the protection of the website and its contributors, make clear that the Privacy Guides project and website is offered "as-is", without warranty, and disclaiming liability for damages resulting from using the website or any recommendations contained within. Privacy Guides does not warrant or make any representations concerning the accuracy, likely results, or reliability of the use of the materials on the website or otherwise relating to such materials on the website or on any third-party sites linked on this site.
Privacy Guides additionally does not warrant that this website will be constantly available, or available at all.
## Licensing Overview
> [!IMPORTANT]
>
> The following is a human-readable summary of (and not a substitute for) the [license](https://github.com/privacyguides/privacyguides.org/blob/main/README.md#license).
Unless otherwise noted, all **content** on this website is released under the [Creative Commons Attribution-ShareAlike 4.0 International Public License](https://github.com/privacyguides/privacyguides.org/tree/main/LICENSE). This means that you can use the human-readable content on this website for your own project, as long as you give appropriate credit to [Privacy Guides](https://www.privacyguides.org) including a link where technically possible, and you release your project under the same license. You may not do so in any way that suggests Privacy Guides endorses you or your use. You **may not** use the Privacy Guides brand trademarks in your own project without express approval from this project. Privacy Guides's brand trademarks include the "Privacy Guides" wordmark and shield logo.
The underlying **source code** used to generate this website and display that content is released under the [MIT License](https://github.com/privacyguides/privacyguides.org/tree/main/LICENSE-CODE).
This does not include third-party code embedded in the Privacy Guides code repository, or code where a superseding license is otherwise noted. The following are notable examples, but this list may not be all-inclusive:
* The [Bagnard](https://github.com/privacyguides/brand/tree/67166ed8b641d8ac1837d0b75329e02ed4056704/fonts/Bagnard) heading font is licensed under the [SIL Open Font License 1.1](https://github.com/privacyguides/brand/blob/67166ed8b641d8ac1837d0b75329e02ed4056704/fonts/Bagnard/LICENSE.txt).
* The [Public Sans](https://github.com/privacyguides/brand/tree/67166ed8b641d8ac1837d0b75329e02ed4056704/fonts/Public%20Sans) font used for most text on the site is licensed under the terms detailed [here](https://github.com/privacyguides/brand/blob/67166ed8b641d8ac1837d0b75329e02ed4056704/fonts/Public%20Sans/LICENSE.txt).
* The [DM Mono](https://github.com/privacyguides/brand/tree/67166ed8b641d8ac1837d0b75329e02ed4056704/fonts/DM%20Mono) font used for monospaced text on the site is licensed under the [SIL Open Font License 1.1](https://github.com/privacyguides/brand/blob/67166ed8b641d8ac1837d0b75329e02ed4056704/fonts/DM%20Mono/LICENSE.txt).
We believe that the logos and other images in `assets` obtained from third-party providers are either in the public domain or **fair use**. In a nutshell, legal [fair use doctrine](https://copyright.gov/fair-use/more-info.html) allows the use of copyrighted images in order to identify the subject for purposes of public comment. However, these logos and other images may still be subject to trademark laws in one or more jurisdictions. Before using this content, please ensure that it is used to identify the entity or organization that owns the trademark and that you have the right to use it under the laws which apply in the circumstances of your intended use. *When copying content from this website, you are solely responsible for ensuring that you do not infringe someone else's trademark or copyright.*
When you contribute to our website you are doing so under the above licenses, and you are granting Privacy Guides a perpetual, worldwide, non-exclusive, transferable, royalty-free, irrevocable license with the right to sublicense such rights through multiple tiers of sublicensees, to reproduce, modify, display, perform and distribute your contribution as part of our project.
## Acceptable Use
You may not use this website in any way that causes or may cause damage to the website or impairment of the availability or accessibility of Privacy Guides, or in any way which is unlawful, illegal, fraudulent, harmful, or in connection with any unlawful, illegal, fraudulent, or harmful purpose or activity.
You must not conduct any systematic or automated data collection activities on or in relation to this website without express written consent, including:
* Excessive Automated Scans
* Denial of Service Attacks
* Scraping
* Data Mining
* 'Framing' (IFrames)
---
*Portions of this notice itself were adopted from [opensource.guide](https://github.com/github/opensource.guide/blob/master/notices.md) on GitHub. That resource and this page itself are released under [CC-BY-4.0](https://creativecommons.org/licenses/by-sa/4.0).*
-13
View File
@@ -1,13 +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 512 512" 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;">
<g transform="matrix(7.11111,0,0,7.11111,0,0)">
<rect x="0" y="0" width="72" height="72" style="fill:rgb(255,208,111);"/>
</g>
<g transform="matrix(5.69816,0,0,5.69816,41.2613,46.2665)">
<path d="M18.466,16.31C18.279,16.938 18.384,17.673 18.594,19.141L21.253,37.755C21.713,40.971 21.942,42.578 22.551,44.015C23.09,45.289 23.845,46.46 24.783,47.476C25.842,48.623 27.212,49.494 29.952,51.238L33.848,53.717C35.716,54.906 36.65,55.5 37.654,55.732C38.426,55.91 39.224,55.933 40.003,55.801C39.359,54.33 39.002,52.706 39.002,50.997C39.002,44.37 44.375,38.997 51.002,38.997C52.936,38.997 54.763,39.455 56.381,40.267C56.494,39.55 56.612,38.726 56.751,37.755L56.751,37.755L59.41,19.141C59.62,17.673 59.725,16.938 59.538,16.31C59.374,15.756 59.053,15.261 58.615,14.885C58.117,14.458 57.403,14.255 55.977,13.847L40.321,9.374C39.83,9.234 39.585,9.164 39.335,9.136C39.114,9.111 38.891,9.111 38.669,9.136C38.42,9.164 38.174,9.234 37.684,9.374L22.027,13.847C20.601,14.255 19.887,14.458 19.39,14.885C18.951,15.261 18.63,15.756 18.466,16.31Z" style="fill:rgb(255,246,235);"/>
</g>
<g transform="matrix(5.69816,0,0,5.69816,41.2613,46.2665)">
<path d="M32.836,13.626C32.946,13.614 33.058,13.614 33.169,13.626C33.265,13.637 33.371,13.663 33.909,13.816L49.565,18.289C50.3,18.5 50.771,18.635 51.123,18.765C51.458,18.89 51.578,18.972 51.638,19.024C51.858,19.212 52.018,19.459 52.1,19.736C52.123,19.813 52.149,19.956 52.126,20.313C52.102,20.688 52.034,21.172 51.925,21.929L49.692,37.56C42.851,38.219 37.502,43.983 37.502,50.997C37.502,52.382 37.711,53.718 38.098,54.976L37.351,55.452C35.388,56.701 34.706,57.11 34.014,57.27C33.348,57.424 32.657,57.424 31.991,57.27C31.298,57.11 30.616,56.701 28.654,55.452L24.758,52.973C21.95,51.186 20.781,50.428 19.886,49.458C19.065,48.569 18.404,47.545 17.932,46.43C17.418,45.215 17.209,43.837 16.738,40.543L14.079,21.929C13.971,21.172 13.903,20.688 13.878,20.313C13.855,19.956 13.881,19.813 13.904,19.736C13.986,19.459 14.147,19.212 14.366,19.024C14.427,18.972 14.547,18.89 14.881,18.765C15.234,18.635 15.704,18.5 16.439,18.289L32.096,13.816C32.633,13.663 32.74,13.637 32.836,13.626ZM54.903,22.301L52.716,37.605C59.363,38.447 64.502,44.122 64.502,50.997C64.502,58.453 58.458,64.497 51.002,64.497C46.01,64.497 41.651,61.787 39.315,57.758L38.962,57.983L38.739,58.124C37.088,59.177 35.947,59.903 34.688,60.194C33.579,60.449 32.426,60.449 31.317,60.194C30.058,59.903 28.917,59.177 27.265,58.124L27.043,57.983L22.954,55.381L22.954,55.381C20.398,53.754 18.873,52.784 17.681,51.493C16.626,50.35 15.776,49.033 15.17,47.6C14.484,45.982 14.229,44.193 13.801,41.194L11.102,22.301C11.003,21.611 10.918,21.012 10.885,20.508C10.85,19.973 10.864,19.435 11.028,18.883C11.274,18.052 11.756,17.31 12.414,16.746C12.851,16.372 13.336,16.139 13.839,15.952C14.312,15.777 14.895,15.611 15.564,15.419L15.615,15.405L31.271,10.932L31.354,10.908C31.764,10.791 32.125,10.687 32.502,10.645C32.835,10.608 33.17,10.608 33.502,10.645C33.88,10.687 34.241,10.791 34.65,10.908L34.733,10.932L50.44,15.419C51.11,15.611 51.692,15.777 52.166,15.952C52.668,16.139 53.154,16.372 53.591,16.746C54.249,17.31 54.73,18.052 54.977,18.883C55.14,19.435 55.155,19.973 55.12,20.508C55.087,21.012 55.001,21.611 54.903,22.3L54.903,22.301ZM51.002,40.497C45.203,40.497 40.502,45.198 40.502,50.997C40.502,56.796 45.203,61.497 51.002,61.497C56.801,61.497 61.502,56.796 61.502,50.997C61.502,45.198 56.801,40.497 51.002,40.497ZM58.154,47.458C58.685,46.821 58.599,45.875 57.962,45.345C57.326,44.815 56.38,44.9 55.85,45.537L49.401,53.275L46.063,49.936C45.477,49.351 44.527,49.351 43.942,49.936C43.356,50.522 43.356,51.472 43.942,52.058L48.442,56.558C48.74,56.856 49.149,57.015 49.57,56.996C49.991,56.977 50.385,56.781 50.654,56.458L58.154,47.458ZM25.502,29.997C25.502,25.855 28.86,22.497 33.002,22.497C37.144,22.497 40.502,25.855 40.502,29.997C40.502,32.451 39.324,34.629 37.502,35.998L37.502,41.997C37.502,44.483 35.488,46.497 33.002,46.497C30.517,46.497 28.502,44.483 28.502,41.997L28.502,35.998C26.681,34.629 25.502,32.451 25.502,29.997ZM34.502,37.497L31.502,37.497L31.502,41.997C31.502,42.826 32.174,43.497 33.002,43.497C33.831,43.497 34.502,42.826 34.502,41.997L34.502,37.497ZM33.002,34.497C35.488,34.497 37.502,32.483 37.502,29.997C37.502,27.512 35.488,25.497 33.002,25.497C30.517,25.497 28.502,27.512 28.502,29.997C28.502,32.483 30.517,34.497 33.002,34.497Z" style="fill:rgb(40,50,63);"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 212 KiB

-19
View File
@@ -1,19 +0,0 @@
---
title: Traffic Statistics
description: We self-host Umami to create a nice visualization of our traffic statistics, which are made public here.
aliases:
- /en/about/statistics
---
<!-- markdownlint-disable MD051 -->
We self-host [Umami](https://umami.is) to create a nice visualization of our traffic statistics, which are public at the link below.
[View Statistics](https://stats.triplebit.net/share/S80jBc50hxr5TquS/www.privacyguides.org)
{ .pg:buttons }
With this process:
- Your information is never shared with a third party, it stays on servers we control
- Your personal data is never saved, we only collect data in aggregate
- No client-side JavaScript is used
Because of these facts, keep in mind our statistics may be inaccurate. It is a useful tool to compare different dates with each other and analyze overall trends, but the actual numbers may be far off from reality. In other words they're *precise* statistics, but not *accurate* statistics.
-32
View File
@@ -1,32 +0,0 @@
---
title: "Privacy Activism"
meta_title: "Guides and Tools for Privacy Activists"
description: Privacy Guides' Activism section contains tools to support the community in its privacy advocacy and activism effort, both for individuals and organizations.
hide:
- toc
- footer
cover: banner-activism.webp
breadcrumbs: false
cascade:
type: docs
aliases:
- /en/activism
---
The **Guides and Tools for Privacy Activists** project from [*Privacy Guides*](../about/_index.md) offers a new way to empower the digital rights community.
This section contains information to help you become a better defender of privacy rights, both for individuals and organizations.
## We must fight for privacy rights collectively
Fighting to improve our privacy cannot *only* be a matter of individual protections.
When [regulations keep attacking](https://www.privacyguides.org/articles/2025/09/08/chat-control-must-be-stopped/) the tools and services we rely on to protect our personal information, when corporations [exploit our data](../wiki/basics/common-threats/index.md#surveillance-as-a-business-model) more aggressively every day, and when platforms exponentially [erode online pseudonymity](https://www.privacyguides.org/articles/2025/10/15/real-name-policies/), we must broaden our reach to fight for our rights.
<mark>For privacy to become a valued and respected human right, we must work together</mark> to defend privacy rights as a community.
This section will progressively grow with more tools to support the community in its privacy advocacy and activism effort. The Privacy Activist Toolbox and the DPA Directory are the first parts of this new development.
{{< cards >}}
{{< card link="toolbox" title="Privacy Activist Toolbox" >}}
{{< card link="legal/dpa-directory" title="DPA Directory" tag="New!" tagColor="green" tagIcon="sparkles" tagBorder=false >}}
{{< /cards >}}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

-6
View File
@@ -1,6 +0,0 @@
---
title: Legal Resources
build:
list: local
render: link
---
Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

@@ -1,103 +0,0 @@
---
title: "Data Protection Authorities"
description: The DPA Directory is a tool to help you find the principal consumer privacy law in your region, the authority mandated to enforce it, and how to report violations.
# sidebar:
# hide: true
aliases:
- /activism/legal
- /en/activism/legal/dpa-directory
---
<style>
nav.hextra-toc.hx\:order-last.hx\:hidden.hx\:w-64.hx\:shrink-0.hx\:xl\:block.hx\:print\:hidden.hx\:px-4 {
display: none;
}
</style>
The **Data Protection Authority** (DPA) **Directory** is a tool to help you find the main consumer privacy law in your region, and the authority mandated to enforce the law.
Additionally, this table provides information about each law, authority, contact information for questions, and a link to place a complaint for violation of the law with each authority.
> [!TIP]
> For more information on how to find a specific privacy law that might not be listed here, and what to look for when reading it, consult the Privacy Activist Toolbox tip to [Know Your Privacy Laws](../../toolbox/tip-know-your-privacy-laws/index.md).
>
> For more information on how to proceed when reporting a privacy law violation, consult the Privacy Activist Toolbox tip to [Report Privacy Violations](../../toolbox/tip-report-privacy-violations/index.md).
## Scope and limitations
- This directory does not constitute legal advice. For any legal questions, consult a privacy lawyer or contact the authority responsible for enforcing the law.
- This directory only lists comprehensive consumer data privacy regulations that were effective on the date of the last update.
- This directory isn't a complete list of all existing data protection regulations worldwide. If you feel like your region's regulation should be added to it, please reach out to us.
- This directory does not list specialized privacy regulations related to specific data types, such as health data or children data.
- Remember that your data *could* be protected by a privacy regulation that isn't listed here. This will depend on the region, circumstances, and type of data involved.
> [!CAUTION]
> When sharing personal information with a DPA, keep in mind this information could be shared with the subject of the complaint, and/or displayed publicly. Make sure to consult your DPA's privacy notice first, or ask anonymously how your complaint data might be shared before sending any sensitive information.
>
> For example, the DPA for the state of Oregon in the United States specifies that: \"Any information submitted to this form is subject to Oregons Public Records Law. You may choose not to include personally identifiable data that you do not wish to be subject to public records requests.\"
## The Directory
<div class="toolbox-button-grid hx:mt-12" markdown>
[{{< icon "fontawesome-solid-earth-africa" >}} Africa](#africa)
{ .dpadirectory-button .dpadirectory-button-africa }
[{{< icon "fontawesome-solid-earth-asia" >}} Asia](#asia)
{ .dpadirectory-button .dpadirectory-button-asia }
[{{< icon "fontawesome-solid-earth-europe" >}} Europe](#europe)
{ .dpadirectory-button .dpadirectory-button-europe }
[{{< icon "fontawesome-solid-earth-americas" >}} North America](#north-america)
{ .dpadirectory-button .dpadirectory-button-northamerica }
[{{< icon "fontawesome-solid-earth-oceania" >}} Oceania](#oceania)
{ .dpadirectory-button .dpadirectory-button-oceania }
[{{< icon "fontawesome-solid-earth-americas" >}} South America](#south-america)
{ .dpadirectory-button .dpadirectory-button-southamerica }
</div>
---
### Africa {#africa}
{{< dpa-directory-table region="africa" >}}
### Asia {#asia}
{{< dpa-directory-table region="asia" >}}
### Europe {#europe}
{{< dpa-directory-table region="europe" >}}
### North America {#north-america}
{{< dpa-directory-table region="north-america" >}}
### Oceania {#oceania}
{{< dpa-directory-table region="oceania" >}}
### South America {#south-america}
{{< dpa-directory-table region="south-america" >}}
## Additional resources
- **For EU GDPR**: [Helpful tips on how to proceed with your request or complaint (*NOYB*)](https://noyb.eu/en/helpful-tips)
- **For EU GDPR**: [Explanation on the right to lodge a complaint (*NOYB*)](https://noyb.eu/en/your-right-lodge-complaint-article-77)
- **For missing regions**[^1]: [Check this Global Privacy Law and DPA Directory (*IAPP*)](https://iapp.org/resources/global-privacy-directory)
- **For more information on each law**: [To learn more on each regulation, you can consult this useful database (*DLA Piper*)](https://www.dlapiperdataprotection.com/)
[^1]: Some information from IAPP's Global Privacy Law and DPA Directory might be out-of-date.
-473
View File
@@ -1,473 +0,0 @@
---
title: "Privacy Activist Toolbox"
description: The Privacy Activist Toolbox is a unique resource with tips for anyone interested in becoming a better privacy rights activist, or anyone who wants to start.
toc: true
aliases:
- /en/activism/toolbox
---
The **Privacy Activist Toolbox** is a resource for anyone interested in becoming a better privacy rights activist, or anyone who wants to start advocating for privacy rights.
This page is also a resource to help digital rights organizations that would like to expand their work focusing on privacy.
By clicking on any of the tips listed on this page, you can access more information on each topic, as well as additional resources to support your advocacy.
---
## Toolbox Compartments
<div class="toolbox-button-grid hx:mt-12" markdown>
[{{< icon "fontawesome-solid-scale-balanced" >}} Check<br>Your Laws](#check-your-laws)
{ .toolbox-bg-legal }
[{{< icon "fontawesome-solid-toolbox" >}} Choose<br>Your Tools](#choose-your-tools)
{ .toolbox-bg-tools }
[{{< icon "fontawesome-solid-users-rays" >}} Expand Your<br>Perspective](#expand-your-perspective)
{ .toolbox-bg-perspective }
[{{< icon "fontawesome-solid-hands-holding-circle" >}} Support The<br>Community](#support-the-community)
{ .toolbox-bg-community }
[{{< icon "fontawesome-solid-handshake-angle" >}} Build<br>Alliances](#build-alliances)
{ .toolbox-bg-alliances }
[{{< icon "fontawesome-solid-heart-circle-check" >}} Make It<br>Accessible](#make-it-accessible)
{ .toolbox-bg-accessibility }
[{{< icon "fontawesome-solid-star" >}} Uphold<br>Integrity](#uphold-integrity)
{ .toolbox-bg-integrity }
[{{< icon "fontawesome-solid-heart" >}} Stay<br>Persistent](#stay-persistent)
{ .toolbox-bg-persistence }
[{{< icon "fontawesome-solid-hand-fist" >}} Take<br>Action!](#take-action)
{ .toolbox-bg-action }
</div>
---
<div class="toolbox-tip-card-list hx:mt-6 hx:mb-6">
## Check Your Laws
<a href="tip-know-your-privacy-laws">
<div class="toolbox-tip-card toolbox-border-legal">
<h3>1. Know your privacy laws</h3>
![Scale icon](./icons/icon-tips/icon-tips-laws.webp)
{class="toolbox-tip-icon"}
Being well-informed about the data protection regulations in your own jurisdiction can be a significant asset for your personal and collective battles to improve privacy, for yourself and for others. Learn more about what to look for when researching your local privacy laws.
Learn More {{< icon "arrow-circle-right" >}}
{.toolbox-tip-card-learn-more .hx:mb-8}
</div>
</a>
<a href="tip-report-privacy-violations">
<div class="toolbox-tip-card toolbox-border-legal">
<h3>2. Report privacy violations</h3>
![Gavel icon](./icons/icon-tips/icon-tips-report.webp)
{class="toolbox-tip-icon"}
Once you become informed on your local privacy laws, get familiar with the process to report violations. Submitting an official complaint is often simple, and can have a significant impact for yourself and your community. Learn more about why and how you should report violations of your local privacy laws.
Learn More {{< icon "arrow-circle-right" >}}
{.toolbox-tip-card-learn-more .hx:mb-8}
</div>
</a>
## Choose Your Tools
<a href="tip-beware-of-privacy-snake-oil">
<div class="toolbox-tip-card toolbox-border-tools">
<h3>1. Beware of privacy snake oil</h3>
![Poison symbol icon](./icons/icon-tips/icon-tips-snakeoil.webp)
{class="toolbox-tip-icon"}
In your privacy advocacy, it's essential to use and recommend tools that reliably protect privacy. For this, you need to investigate and remain highly skeptical of any dangerous or unproven marketing claims. Learn more about how to evaluate privacy claims and recommend tools that are trustworthy.
Learn More {{< icon "arrow-circle-right" >}}
{.toolbox-tip-card-learn-more .hx:mb-8}
</div>
</a>
<a href="tip-migrate-outside-the-surveillance-ecosystem">
<div class="toolbox-tip-card toolbox-border-tools">
<h3>2. Migrate outside the surveillance ecosystem</h3>
![Arrow pointing out of a square icon](./icons/icon-tips/icon-tips-migrate.webp)
{class="toolbox-tip-icon"}
As privacy activists, it's important to not only support the tools and organizations with good privacy practices, but to also lead by example when it comes to moving away from the surveillance ecosystem. Learn more about why and how to move away from "Big Tech" and embrace alternatives.
Learn More {{< icon "arrow-circle-right" >}}
{.toolbox-tip-card-learn-more .hx:mb-8}
</div>
</a>
<a href="tip-improve-your-social-media-and-build-resilient-communities">
<div class="toolbox-tip-card toolbox-border-tools">
<h3>3. Improve your social media and build resilient communities</h3>
![Octagon icon](./icons/icon-tips/icon-tips-plant.webp)
{class="toolbox-tip-icon"}
Commercial social media platforms represent one of the biggest sources of data exploitation. By staying active on these platforms we continue to feed the beast, and indirectly support their invasion of our privacy rights. Learn more about how to minimize your presence there, and slowly build better social networks.
Learn More {{< icon "arrow-circle-right" >}}
{.toolbox-tip-card-learn-more .hx:mb-8}
</div>
</a>
## Expand Your Perspective
<a href="tip-dont-stop-at-individual-solutions">
<div class="toolbox-tip-card toolbox-border-perspective">
<h3>1. Don't stop at individual solutions, consider the collective impact</h3>
![People with radiating lines icon](./icons/icon-tips/icon-tips-expand.webp)
{class="toolbox-tip-icon"}
When we think about our privacy, we often focus on the technical tools we can use. While this is indeed an important component, it's crucial not to lose sight of how regulations and invasive practices impact us collectively. Learn more about how to expand your perspective on data privacy.
Learn More {{< icon "arrow-circle-right" >}}
{.toolbox-tip-card-learn-more .hx:mb-8}
</div>
</a>
<a href="tip-keep-in-mind-the-whole-landscape">
<div class="toolbox-tip-card toolbox-border-perspective">
<h3>2. Keep in mind the whole landscape</h3>
![Globe icon](./icons/icon-tips/icon-tips-landscape.webp)
{class="toolbox-tip-icon"}
Privacy isn't just about the tools, the laws, or the practices of any individual or organization. To move our society in a place where everyone benefits from privacy by default, we must consider technologies, laws, and culture holistically. Learn more about remembering to consider the whole landscape.
Learn More {{< icon "arrow-circle-right" >}}
{.toolbox-tip-card-learn-more .hx:mb-8}
</div>
</a>
<a href="tip-consider-everyones-unique-situation">
<div class="toolbox-tip-card toolbox-border-perspective">
<h3>3. Consider everyone's unique situation</h3>
![People with line over and under icon](./icons/icon-tips/icon-tips-everyone.webp)
{class="toolbox-tip-icon"}
Everyone has different needs and faces different dangers when their personal data is exposed. To give actionable privacy advice and recommendations, it's essential to keep in mind everyone's unique situation. Learn more about better evaluating each person's threat model.
Learn More {{< icon "arrow-circle-right" >}}
{.toolbox-tip-card-learn-more .hx:mb-8}
</div>
</a>
## Support The Community
<a href="tip-lift-your-allies-up">
<div class="toolbox-tip-card toolbox-border-community">
<h3>1. Lift your allies up</h3>
![Two hands icon](./icons/icon-tips/icon-tips-lift.webp)
{class="toolbox-tip-icon"}
At times, it might feel like the privacy community is niche and isolated. The battle for privacy rights is difficult, and its defenders are often scattered. This is why it's essential that we support and uplift each other at every opportunity. Learn more about how to lift your allies up and grow the movement.
Learn More {{< icon "arrow-circle-right" >}}
{.toolbox-tip-card-learn-more .hx:mb-8}
</div>
</a>
<a href="tip-support-your-privacy-comrades">
<div class="toolbox-tip-card toolbox-border-community">
<h3>2. Support your privacy comrades</h3>
![Hand holding a heart icon](./icons/icon-tips/icon-tips-support.webp)
{class="toolbox-tip-icon"}
Fighting for privacy rights is a collective endeavor. You cannot do it alone. Anyone around you contributing is fighting the same battle by your side. This battle can be difficult and isolating at time. This is why it's critical to care for each other. Learn more about how you can support your privacy comrades.
Learn More {{< icon "arrow-circle-right" >}}
{.toolbox-tip-card-learn-more .hx:mb-8}
</div>
</a>
<a href="tip-be-kind-to-people-but-be-relentless-with-institutions">
<div class="toolbox-tip-card toolbox-border-community">
<h3>3. Be kind to people, but be relentless with institutions</h3>
![Two hands holding a sphere icon](./icons/icon-tips/icon-tips-kind.webp)
{class="toolbox-tip-icon"}
Kindness is essential for privacy advocates. To grow our movement, we must meet people from a place of camaraderie. People don't change their mind by being berated. However, this isn't true for institutions. Learn more about how to integrate kindness in your work, while being relentless with institutions.
Learn More {{< icon "arrow-circle-right" >}}
{.toolbox-tip-card-learn-more .hx:mb-8}
</div>
</a>
## Build Alliances
<a href="tip-start-alliances-not-wars">
<div class="toolbox-tip-card toolbox-border-alliances">
<h3>1. Start alliances, not wars</h3>
![handshake icon](./icons/icon-tips/icon-tips-alliances.webp)
{class="toolbox-tip-icon"}
The privacy community consists of a patchwork of individuals and organizations that sometimes hold quite different views. When these divergences lead to infighting, we need to ask how these internal wars are impacting our community negatively. Learn more about how to start alliances instead of wars.
Learn More {{< icon "arrow-circle-right" >}}
{.toolbox-tip-card-learn-more .hx:mb-8}
</div>
</a>
<a href="tip-value-allies-with-complementary-expertise">
<div class="toolbox-tip-card toolbox-border-alliances">
<h3>2. Value allies with expertise complementary to yours</h3>
![Sphere with half dark half light icon](./icons/icon-tips/icon-tips-complement.webp)
{class="toolbox-tip-icon"}
In privacy, like everywhere else, diversity is a strength. If you want your community to have a broad understanding of threat models, and be able to fight on multiple levels, you need to value a diversity of expertises. Learn more about recognizing, respecting, and retaining experts with skills different to yours.
Learn More {{< icon "arrow-circle-right" >}}
{.toolbox-tip-card-learn-more .hx:mb-8}
</div>
</a>
<a href="tip-give-credit-where-credit-is-due">
<div class="toolbox-tip-card toolbox-border-alliances">
<h3>3. Give credit where credit is due</h3>
![Thumbs up icon](./icons/icon-tips/icon-tips-credit.webp)
{class="toolbox-tip-icon"}
To succeed, we must support each other. A good way to do this is to never forget to give credit where credit is due. When another advocate or organization says something you agree with, boost them up, spread their reach, and thank them publicly. Learn more about making your allies feel seen and valued.
Learn More {{< icon "arrow-circle-right" >}}
{.toolbox-tip-card-learn-more .hx:mb-8}
</div>
</a>
## Make It Accessible
<a href="tip-welcome-beginners">
<div class="toolbox-tip-card toolbox-border-accessibility">
<h3>1. Welcome beginners</h3>
![Person with plus sign icon](./icons/icon-tips/icon-tips-beginner.webp)
{class="toolbox-tip-icon"}
For our privacy rights movement to grow, we must bring more people in. To accomplish this, it's fundamental to discuss privacy in ways that are accessible to newcomers who aren't familiar with basic concepts yet. Learn more about improving your advocacy work to make it more approachable to beginners.
Learn More {{< icon "arrow-circle-right" >}}
{.toolbox-tip-card-learn-more .hx:mb-8}
</div>
</a>
<a href="tip-keep-your-posts-and-community-inclusive">
<div class="toolbox-tip-card toolbox-border-accessibility">
<h3>2. Keep your posts and community inclusive</h3>
![Heart with plus sign icon](./icons/icon-tips/icon-tips-inclusivity.webp)
{class="toolbox-tip-icon"}
Inclusivity is not only the right thing to do, it's also essential to grow our movement. If we want privacy rights to succeed, it's imperative that we build communities where *everyone* feels safe and welcomed, regardless of who they are. Learn more about keeping your communications and communities inclusive.
Learn More {{< icon "arrow-circle-right" >}}
{.toolbox-tip-card-learn-more .hx:mb-8}
</div>
</a>
<a href="tip-be-mindful-of-accessibility">
<div class="toolbox-tip-card toolbox-border-accessibility">
<h3>3. Be mindful of accessibility</h3>
![Heart with checkmark icon](./icons/icon-tips/icon-tips-accessibility.webp)
{class="toolbox-tip-icon"}
Accessibility is indispensable to inclusivity, and should always be a priority in our work. To make our privacy communities welcoming to all, accessibility cannot be an afterthought. We must integrate it in our practice from the start. Learn more about improving the accessibility of your privacy work.
Learn More {{< icon "arrow-circle-right" >}}
{.toolbox-tip-card-learn-more .hx:mb-8}
</div>
</a>
<a href="tip-make-it-cute">
<div class="toolbox-tip-card toolbox-border-accessibility">
<h3>4. Make it cute</h3>
![Cat icon](./icons/icon-tips/icon-tips-cute.webp)
{class="toolbox-tip-icon"}
If you are developing a privacy-focused application or website, do not neglect the design aspect of it. This is a common mistake that can have a significant negative impact on adoption by a general audience. Learn more about making your design appealing and accessible to all. Make it cute!
Learn More {{< icon "arrow-circle-right" >}}
{.toolbox-tip-card-learn-more .hx:mb-8}
</div>
</a>
## Uphold Integrity
<a href="tip-refuse-to-participate">
<div class="toolbox-tip-card toolbox-border-integrity">
<h3>1. Refuse to participate</h3>
![Circle with x icon](./icons/icon-tips/icon-tips-refuse.webp)
{class="toolbox-tip-icon"}
As privacy advocates and activists, it's important to be a voice for resistance and take a stand against abusive practices. One substantial way to do this is to refuse to participate in privacy-intrusive requests, or use invasive software. Learn more about refusing to comply with privacy-abusive practices.
Learn More {{< icon "arrow-circle-right" >}}
{.toolbox-tip-card-learn-more .hx:mb-8}
</div>
</a>
<a href="tip-stay-true-to-your-principles">
<div class="toolbox-tip-card toolbox-border-integrity">
<h3>2. Stay true to your principles</h3>
![Star icon](./icons/icon-tips/icon-tips-principles.webp)
{class="toolbox-tip-icon"}
If you manage a digital rights group or organization, make sure you aren't subjecting your contributors to the very privacy-invasive tech you're fighting against. Sadly, it's not rare to see communities that aren't following their own advice for internal practices. Learn more about the importance of maintaining integrity *internally* as well as externally.
Learn More {{< icon "arrow-circle-right" >}}
{.toolbox-tip-card-learn-more .hx:mb-8}
</div>
</a>
<a href="tip-protect-your-allies">
<div class="toolbox-tip-card toolbox-border-integrity">
<h3>3. Protect your allies</h3>
![Shield with heart icon](./icons/icon-tips/icon-tips-protect.webp)
{class="toolbox-tip-icon"}
Through your privacy work, be careful to never collect or share the data of others without their explicit consent. It's crucial to protect your allies' data in all that you do, whether that's individual action or organizational leadership. Learn more about safeguarding the data of your privacy comrades.
Learn More {{< icon "arrow-circle-right" >}}
{.toolbox-tip-card-learn-more .hx:mb-8}
</div>
</a>
## Stay Persistent
<a href="tip-small-actions-matter">
<div class="toolbox-tip-card toolbox-border-persistence">
<h3>1. Small actions matter</h3>
![Puzzle piece icon](./icons/icon-tips/icon-tips-small.webp)
{class="toolbox-tip-icon"}
There is so much to do in the movement for better privacy rights. So much, that it's sometimes easy to feel discouraged when facing the scale of what's left to accomplish. But everything helps, and even the smallest action counts. Learn more about why every action and every victory matters, no matter how small.
Learn More {{< icon "arrow-circle-right" >}}
{.toolbox-tip-card-learn-more .hx:mb-8}
</div>
</a>
<a href="tip-take-time-to-rest">
<div class="toolbox-tip-card toolbox-border-persistence">
<h3>2. Take time to rest, but come back to fight with us</h3>
![Low battery icon](./icons/icon-tips/icon-tips-rest.webp)
{class="toolbox-tip-icon"}
The battle for privacy rights will be a long one. This isn't a sprint, it's a marathon. If you want to be a good advocate, you *must* take the time to rest when needed. Burning out isn't an option, we cannot afford to lose your precious contribution! Learn more about why it's fundamental to learn to rest when you need it.
Learn More {{< icon "arrow-circle-right" >}}
{.toolbox-tip-card-learn-more .hx:mb-8}
</div>
</a>
## Take Action!
<a href="tip-engage-boosts-and-contribute">
<div class="toolbox-tip-card toolbox-border-action">
<h3>1. Engage, boost, and contribute</h3>
![Megaphone icon](./icons/icon-tips/icon-tips-engage.webp)
{class="toolbox-tip-icon"}
Once you have the knowledge, motivation, and energy, it's time to act! Perhaps you've read all of these tips, or read through our Knowledge Base already! But you don't need to know that much about privacy to start contributing. Learn more about how to start being a privacy activist.
Learn More {{< icon "arrow-circle-right" >}}
{.toolbox-tip-card-learn-more .hx:mb-8}
</div>
</a>
<a href="tip-level-up-assemble-and-organize">
<div class="toolbox-tip-card toolbox-border-action">
<h3>2. Level up! Assemble and organize</h3>
![Raised fist icon](./icons/icon-tips/icon-tips-organize.webp)
{class="toolbox-tip-icon"}
If you've been a privacy advocate for a while, maybe it's time to level up and grow as a leader in your community. Becoming a leader can mean starting a local group, or initiating bigger projects online. Learn more about how to become a *good* leader in the privacy rights movement.
Learn More {{< icon "arrow-circle-right" >}}
{.toolbox-tip-card-learn-more .hx:mb-8}
</div>
</a>
</div>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

@@ -1,54 +0,0 @@
---
title: Be Kind to People, But Be Relentless With Institutions
description: Kindness and patience are essential qualities for privacy advocates. To grow our movement, we must meet people from a place of camaraderie.
icon: fontawesome/solid/hands-holding-circle
cover: banner-toolbox-tip-kind.webp
weight: 11
aliases:
- /en/activism/toolbox/tip-be-kind-to-people-but-be-relentless-with-institutions
---
Kindness and patience are essential qualities for privacy advocates. To grow our movement, we must meet people from a place of camaraderie. People don't change their mind by being berated. However, this isn't true for institutions.
Here's how you can **integrate kindness in your work**, while being relentless with institutions:
## Use kindness and patience while working with individuals
Whenever you talk with individuals in your privacy work, make sure to **stay kind and calm** when communicating with them.
Perhaps you are posting on social media, replying to posts or emails, answering questions after a talk, or writing advices on the best privacy tools to use. No matter the context, when communicating with individuals, <mark>kindness is your greatest asset</mark> to persuade and bring more people to the movement.
Sadly, it's not rare to see replies to beginners' posts by more advanced peers online that are humiliating and berating their uninformed or misinformed questions. People don't learn and don't change their mind by being yelled at. Aggression isn't an effective way to communicate.
Furthermore, aggression is a horrible strategy to bring more people to your cause, which should be your ultimate goal as a privacy rights advocate and activist.
Instead, be gentle and [develop your empathy skills](https://www.verywellmind.com/what-is-empathy-2795562). Write from a place of compassion, to gradually attract more and more [new people](../tip-welcome-beginners/index.md) to the cause.
Stay patient and compassionate, even when people ask questions that might sound obvious to you. Be patient when people don't understand the first time you explain something. Happily clarify with simpler terms when needed, without being condescending.
Accept that some people might not be able to adopt all of your suggestions at once. It's okay, let them grow at their own pace.
Give time for ideas to brew and change minds. Plant seeds for change, and gently wait for growth.
## Be relentless with corporations, governments, and public institutions
While patience and kindness are crucial to bring your message the right way to individuals, institutions do not function the same way.
Whether you are trying to report a privacy-abusive corporate practice, push back against an invasive regulation proposal, or raise awareness about a public institution's privacy malpractices, you must be firm, loud, and determined.
Respect and politeness are vital here as well. Violence or threat to representatives of these institutions would only be detrimental to your goals. However, patience shouldn't be extended to privacy-abusive organizations that aren't demonstrating any realistic intentions to improve.
<mark>To bring significant changes to institutions and corporations, your message must be loud and clear.</mark>
You should try to bring as many people and allied organizations to your cause, and be as loud as possible in the media. Your campaign must be powerful enough to grab media's attention, and to send a firm message that the people want change and will not back down.
Each time your message is ignored, and the abuse continues, **shout louder** (metaphorically). Bring even *more* people to the cause, until the popular discontent is so strong that they have no choice but to stop the abuse.
## More resources
- [Rich resource for campaign strategy and community organizing (The Commons Social Change Library)](https://commonslibrary.org/)
- [Campaign canvas template (Mobilisation Lab)](https://mobilisationlab.org/resources/campaign-canvas/)
- [Campaigning guides for activists (Activist Handbook)](https://activisthandbook.org/)
- [How to do public speaking for activism (Activist Handbook)](https://activisthandbook.org/communication/public-speaking)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

@@ -1,168 +0,0 @@
---
title: Be Mindful of Accessibility
description: Accessibility should always be a priority in our work. To make our privacy communities welcoming to all, we must integrate it in our practice from the start.
icon: fontawesome/solid/heart-circle-check
cover: banner-toolbox-tip-accessibility.webp
weight: 17
aliases:
- /en/activism/toolbox/tip-be-mindful-of-accessibility
---
**Accessibility** is indispensable to [inclusivity](../tip-keep-your-posts-and-community-inclusive/index.md), and should always be a priority in our work. To make our privacy communities welcoming to all, accessibility cannot be an afterthought. We must integrate it in our practice from the start. This means making sure the languages, visuals, tools, and venues we use are accessible to as many people as possible.
Here's what you can do to improve accessibility for your privacy-related content and communities:
## Accessibility for all, in all the ways
For many people who don't need any specific accommodations, accessibility is often only thought about in terms of solutions to *mobility* impairments, such as for people requiring the use of a wheelchair.
While this is indeed and important factor to consider, there are many other types of disabilities and accommodations we should be mindful of in our privacy work.
Considering how each part of our work could be accessed more easily by everyone is essential to grow our movement, and to diversify our privacy communities.
Ethically, it's also just the right thing to do, and should be the norm everywhere.
### Visual, auditory, and other sensorial accessibility
Anytime you are using images, audio, or any other sensorial elements in your advocacy work, you should always make sure to follow best practices to ensure your content will be accessible to people with visual, auditory, or other sensorial impairments.
- If you use images in your websites or social media posts, make sure to always add proper [alt text](https://abilitynet.org.uk/resources/digital-accessibility/five-golden-rules-compliant-alt-text) to describe the information the image represents. Keep in mind visitors that might be using a [screen reader](https://en.wikipedia.org/wiki/Screen_reader).
- When designing websites, posters, flyers, or zines, keep in mind [visual accessibility](https://webdesign.tutsplus.com/accessibility-basics-designing-for-visual-impairment--cms-27634a) for people with blindness, low vision, color blindness, and other visual impairments.
- Be careful to refrain from using designs and videos with [flashing lights](https://developer.mozilla.org/en-US/docs/Web/Accessibility/Guides/Seizure_disorders), or display proper warning if you do. Flashing or flickering light effects, and even certain high-contrast static images, can trigger seizures in people with photosensitive epilepsy.
- If you use [audio material](https://www.w3.org/WAI/people-use-web/abilities-barriers/auditory/) in your advocacy, try to include captions or transcripts in your content for people with auditory impairments. If you organize a larger event with speakers, try to see if you could hire a sign language interpreter.
- Whenever you develop content or organize events, always be mindful of people with sensory impairments or [sensory sensitivities](https://accessforallllc.com/sensory-and-cognitive-accessibility/).
### Website accessibility
If you develop a website in your privacy work, make sure to follow the international standards for web accessibility.
This is very important to ensure readers using assistive devices will be able to access your content, and that people with visual impairments will not struggle to access your content.
- Get familiar with the World Wide Web Consortium (W3C) [international Web standards](https://www.w3.org/WAI/standards-guidelines/). These standards have been reviewed for accessibility support by the Accessible Platform Architectures ([APA](https://www.w3.org/WAI/about/groups/apawg/)) Working Group.
- Use a [web accessibility evaluation tool](https://www.w3.org/WAI/test-evaluate/tools/list/) to verify that your web content meets accessibility guidelines, or otherwise make sure to follow the [Web Content Accessibility Guidelines](https://www.pivotalaccessibility.com/2024/11/how-to-perform-a-web-accessibility-audit-step-by-step-guide/) (WCAG).
- If your organization can afford it, hire a [web accessibility consultant](https://accessibilityinnovations.com/blogs/web-accessibility-consultant/).
### Global accessibility
Whether you write a post, an article, or a whole website in English, keep in mind that your audience is likely global.
People from all around the world will be able to read or watch your English content, many who don't speak English as their first language. Don't assume that your audience is only coming from your own country or region. This is a good thing, by the way! ==The battle for privacy rights must be global now.==
- Be careful not to use too many references that are unique to your own country or region. If you do, make sure to explain what it is for people from other regions.
- When talking about issues related to politics, make sure to specify what governmental entities are, and explain any special rights your country has (don't just name them). That way, outsiders will be able to understand and support your cause as well, even if perhaps they aren't directly impacted by this issue at the moment.
- Don't assume everyone knows all the popular internet acronyms such as DIY (Do It Yourself) or IIRC (If I Recall Correctly). These acronyms are very challenging for non-native English speakers. When using acronyms in your content, always explain the full expression in parentheses at least once, or better yet, simply use whole words instead.
- When inviting people to an event, consider that people from other time zones might be reading your invitation. If your event is online, always specify the [time zone](https://www.timeanddate.com/time/map/) for the announced time. If your event is in person, always specify the whole location with the country and region ([do *not* just name the city](https://www.roughmaps.com/destinations/20-places-around-the-world-that-share-the-same-name/22)).
### Physical accessibility
When organizing events and meetups in person, it's essential to keep in mind physical accessibility for people with mobility challenges of all kind. This includes accessibility around the venue, but also on the journey to the venue.
- Ensure the venue you select is [accessible for people using wheelchairs](https://sites.augsburg.edu/events/policies/accessible-events/accessible-event-planning-guide/). Check that there is access to an elevator if it's on an upper floor, that there are access ramps and automatic doors if required, and that doorways and hallways are wide enough to accommodate a wheelchair.
- Make certain that there will be enough comfortable seating for your guests, and that seating and eating areas will be accessible to guests using wheelchairs or other mobility aids.
- Check that there are wheelchair-accessible bathrooms nearby.
- Evaluate the accessibility of the transit options available to reach the venue you select, including specialized transits for people who are using wheelchairs, or other types of mobility aids. Publish a map of the transit accesses around your venue.
- Research if your venue has access to parking and accessible parking spots. Publish this information with your invitation.
- Verify the venue you select is accessible to people with visual or auditory impairments. For example, check if elevators are marked with Braille or raised letters, and make sure that hosts are informed on how to communicate with guests who are deaf or hard of hearing.
### Health accessibility
In-person accessibility isn't just about mobility. Accessibility is also important to consider for a variety of health conditions, including people who are vulnerable to infectious diseases, or require other accommodations related to their health.
- Designate a trained person responsible for accessibility, and share their contact information in advance. That way, people will be able to contact this person if they have any questions before or during the event.
- Encourage your participants to wear a mask, and try to select a venue with adequate ventilation to minimize the risks for people who are [vulnerable to respiratory infections](https://health.clevelandclinic.org/superspreader-events). If food is served, try to select a venue with an area allowing to consume food outside.
- Make sure to bring a few boxes of [protective face masks](https://health.clevelandclinic.org/do-masks-work) to your event that guests can use for free. That way, people who might be at risk in dense crowd can decide to wear a mask once they arrived, or if they forgot to bring their own.
- Try to prepare an area in your venue, or near your venue, where people can rest comfortably in a [quiet space](https://eventwell.org/ensuring-inclusive-events-the-importance-of-supervising-quiet-spaces-for-neurodivergent-attendees-and-vulnerable-adults/), if they feel tired or overstimulated during the event.
- Promote a [scent-free](https://www.chrc-ccdp.gc.ca/resources/publications/environmental-sensitivities-and-scent-free-policies) environment to make your event welcoming to people who have scent allergies, environmental sensibilities, or other health conditions that can be affected by scents.
- Provide training for hosts and event volunteers to make sure they are aware of available accommodations, and can give helpful information upon request.
### Dietary accessibility
If your event provides meals, snacks, or drinks, make sure to prepare well in-advance to consider the potential dietary restrictions of your guests.
- List clearly what types of food and drinks with be served (or available) at the event.
- Provide contact information for people to reach out in advance if they have special dietary requirements or requests that have not already been addressed.
- Try to provide food and beverages that will cover a variety of dietary needs, such as vegan, nut-free, gluten-free, lactose-free, alcohol-free, or low-sugar options.
- If you host a large event, consider keeping a few [epinephrine autoinjectors](https://greatergood.com/blogs/news/epinephrine-public-areas) available on site in your emergency kit, in case anyone experiences a dangerous allergic reaction.
- Make sure guests will have access to free and clean water, especially if your event is scheduled during a heat wave.
- Ensure there is a quiet and private room available for anyone who might be breastfeeding.
- Provide all this information in advance with your invitation, so that guests can evaluate properly if the event is accessible to them.
### Safety accessibility
Safety is also an important aspect of accessibility. Everyone has a unique threat model, and, for a variety of reasons, some people might be at an elevated risk to their physical safety when going to and participating in an event in person.
- Implement a [Code of Conduct](https://oshwa.org/resources/how-to-write-a-code-of-conduct/) for your event or community. Ensure there are clear channels to report bad behaviors, and that your Code of Conduct is enforced properly.
- Verify that access to the bathrooms is safe and well lit at your venue.
- Make sure the venue you select is safe to access by transits or cars, and that the nearest parking lot or bus stop is well lit if the event ends late at night.
- If your venue is located in an area that might be more dangerous at night, consider setting up an [accompaniment service](https://www.concordia.ca/campus-life/security/services/safe-walk.html) with a set of volunteers offering to walk guests safely back to their bus stop, for example. Make this information known in advance.
- Implement a clear [Photo Policy](https://events.ccc.de/congress/2025/infos/privacy.html#photo-policy) for your event, and forbid all nonconsensual photos. You can also provide "No Photos" or "Photos OK" stickers, buttons, or lanyards for guests upon arrival. That way, guests can explicitly opt out of being photographed at your event if they prefer not to. If your event hired an official photographer, make sure they are careful to never take photos that include people wearing these badges. Ideally, limit event photos to a minimum, and only take photos of people after asking for their explicit consent first.
### Financial accessibility
Another aspect of accessibility that is often overlooked is financial accessibility. Sadly, many people are unable to access certain events due to financial limitations, even if it would be very helpful to them to network and meet privacy advocacy peers. When you organize an event, be mindful of providing options to increase financial accessibility.
- Try to keep your events free or partly free whenever possible, while remaining vigilant about accepting money from [financial sponsors](https://www.privacyguides.org/articles/2025/09/03/red-and-green-privacy-flags/#donations-event-sponsorships-and-other-revenues) that could be in contradiction with your privacy values.
- Reserve a quantity of free tickets for people with more severe limitations.
- Offer discounts for students or unemployed peers.
- Create opportunities for part-time volunteering, where people can offer to help a little, then participate in the rest of the event for free.
- Provide contact information for people who would like to request free or cheaper access, or discuss their unique situation with you.
### Beginners accessibility
[Welcoming beginners](../tip-welcome-beginners/index.md) is crucial in all the work we do. To keep your content and events accessible to beginners, it's important to be mindful of the language you use, the ways you present content, and the places where you promote your events.
- Always explain acronyms with whole words before only using the letters only.
- Be careful when using jargon, try to be explicit and use simple words and analogies.
- Beware of gatekeeping. Try to stay aware of newcomers that might be quiet or isolated from the group. [Be inclusive](../tip-keep-your-posts-and-community-inclusive/index.md) and invite them to participate.
- Specify that your event welcomes beginners.
- Be mindful of advertising your event in places where potential newcomers might see it. Be careful about not inviting people only from places reaching out to people who are already part of the privacy community.
## More resources
- [How to make your social justice event accessible (*The Commons Social Change Library*)](https://commonslibrary.org/how-to-make-your-social-justice-event-accessible/)
- [Make your event accessible and inclusive (*Park People*)](https://parkpeople.ca/make-your-event-accessible-and-inclusive/)
- [How to host a COVID-safe party: Tips and tricks (*Party Pro*)](https://party.pro/covid/)
- [Dos and don'ts on designing for accessibility (UK Government)](https://accessibility.blog.gov.uk/2016/09/02/dos-and-donts-on-designing-for-accessibility/)
- [Five golden rules for compliant alt text (*AbilityNet*)](https://abilitynet.org.uk/resources/digital-accessibility/five-golden-rules-compliant-alt-text)
- [Accessibility developer guide (*Access for all*)](https://www.accessibility-developer-guide.com/)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

@@ -1,126 +0,0 @@
---
title: Beware of Privacy Snake Oil
description: In your privacy advocacy, it's important to recommend tools that reliably protect your and other people's privacy. Learn how to evaluate privacy claims.
icon: fontawesome/solid/skull-crossbones
cover: banner-toolbox-tip-snakeoil.webp
weight: 3
aliases:
- /en/activism/toolbox/tip-beware-of-privacy-snake-oil
---
In your privacy advocacy, it's essential to use and recommend tools that *reliably* protect privacy. For this, you need to **investigate and remain highly skeptical** of any dangerous or unproven marketing claims.
Here's how to evaluate privacy claims, and recommend tools that are trustworthy:
## Why is there so much privacy snake oil?
Regrettably, it's quite common to see businesses using privacy promises as a mere marketing strategy to reassure understandingly concerned users. But many aren't genuinely doing the work to make these promises come true.
Many businesses want to have their cake and eat it too, by attracting users with false promises of privacy while exploiting their data for profit all the while. Other times, failure to meet privacy promises simply comes from incompetence or negligence.
Misleadingly, or fraudulently, presenting a product, service, or organization as being responsible and trustworthy with data privacy when it isn't is called "[privacy washing](https://www.privacyguides.org/articles/2025/08/20/privacy-washing-is-a-dirty-business/)."
There are many things you can learn to become more resistant to privacy washing, and become better at using and recommending genuinely privacy-preserving technologies.
## How to spot privacy snake oil
Never trust any privacy claims at face value.
Here are some red flags you should always keep in mind when evaluating a privacy tool, service, or organization:
<style>
.emoji-list-a ul {
list-style: none;
}
.md-typeset .emoji-list-a ul li {
margin-left: 0;
}
.emoji-list-a ul li::before {
content: "";
display: inline-block;
width: 1.125em;
height: 1.125em;
margin-right: 0.5em;
background-image: url(data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2036%2036%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xml%3Aspace%3D%22preserve%22%20style%3D%22fill-rule%3Aevenodd%3Bclip-rule%3Aevenodd%3Bstroke-linejoin%3Around%3Bstroke-miterlimit%3A2%22%3E%3Cpath%20d%3D%22M13%2034s0%202-2%202-2-2-2-2V2s0-2%202-2%202%202%202%202z%22%20style%3D%22fill%3A%2366757f%3Bfill-rule%3Anonzero%22%2F%3E%3Cpath%20d%3D%22M11%204c0-2.2%201.636-3.25%203.636-2.333l16.727%207.667c2%20.917%202%202.417%200%203.333l-16.727%207.667C12.636%2021.25%2011%2020.2%2011%2018z%22%20style%3D%22fill%3A%23f41811%3Bfill-rule%3Anonzero%22%2F%3E%3C%2Fsvg%3E);
}
.emoji-list-a ul li p {
display: inline;
}
</style>
<div class="emoji-list-a" markdown>
- [**Conflict of interest**](https://www.privacyguides.org/articles/2025/09/03/red-and-green-privacy-flags/#conflict-of-interest): Is the source that is telling you this product is trustworthy independent of the company or parent-company that owns this product?
- [**Biased reviews**](https://www.privacyguides.org/articles/2025/09/03/red-and-green-privacy-flags/#fake-reviews): Is the review recommending this product truly independent, or has it received sponsorship money? Was the review AI-generated?
- [**Meaningless attestations**](https://www.privacyguides.org/articles/2025/09/03/red-and-green-privacy-flags/#meaningless-privacy-compliance-badges): Are claims of privacy law compliance or trustworthiness supported by external sources, or do they only come from the organization itself?
- [**Buzzword language**](https://www.privacyguides.org/articles/2025/09/03/red-and-green-privacy-flags/#buzzword-language): Is the advertising and description of the product using a lot of privacy buzzwords like "military-grade encryption" or "AI-powered"?
- [**Unsupported claims**](https://www.privacyguides.org/articles/2025/09/03/red-and-green-privacy-flags/#checkbox-compliance-and-copy-paste-policies): Are the product's claims supported by documentation and detailed descriptions? It's not enough to write "end-to-end encrypted." This claim should be supported by a detailed account of *how* the data is end-to-end encrypted, including which protocols and algorithms it is using.
- [**Unrealistic claims**](https://www.privacyguides.org/articles/2025/09/03/red-and-green-privacy-flags/#unverifiable-and-unrealistic-promises): Are the privacy claims being made realistic? Nothing can be 100% private or 100% secure. A trustworthy product will give you reasonable warnings about its limitations.
- [**Lack of deletion process**](https://www.privacyguides.org/articles/2025/09/03/red-and-green-privacy-flags/#flawed-or-absent-process-for-data-deletion): Does this product or service offer a clear process to delete your data upon request? How much of your data can you delete, and how quickly can you delete it if you wanted to stop using this service tomorrow?
- [**Untested technologies**](https://www.privacyguides.org/articles/2025/09/03/red-and-green-privacy-flags/#new-and-untested-technologies): Has this technology been tested by experts before? Are there any *external* parties who have verified its claims?
- [**Bad reputation**](https://www.privacyguides.org/articles/2025/09/03/red-and-green-privacy-flags/#critics-from-experts): What are privacy and security experts saying about this product or organization? Was the product or organization subjected to multiple critiques from privacy experts? Has the organization ever been impacted by major data breaches?
</div>
## How to trust privacy tools and services
You should never *completely* trust a product, service, or organization. Additionally, your trust should always be revocable, and you should revoke it when new information comes to light that warrants it. Even privacy professional sources that you trust might not always be up-to-date.
Things can change quickly in the tech world, and we must all be prepared to revoke our trust and adapt quickly when required.
With that in mind, here are some green flags you can keep in mind when evaluating a privacy tool, service, or organization:
<style>
.emoji-list-b ul {
list-style: none;
}
.md-typeset .emoji-list-b ul li {
margin-left: 0;
}
.emoji-list-b ul li::before {
content: "";
display: inline-block;
width: 1.125em;
height: 1.125em;
margin-right: 0.5em;
background-image: url(data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2036%2036%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xml%3Aspace%3D%22preserve%22%20style%3D%22fill-rule%3Aevenodd%3Bclip-rule%3Aevenodd%3Bstroke-linejoin%3Around%3Bstroke-miterlimit%3A2%22%3E%3Cpath%20d%3D%22M13%2034s0%202-2%202-2-2-2-2V2s0-2%202-2%202%202%202%202z%22%20style%3D%22fill%3A%2366757f%3Bfill-rule%3Anonzero%22%2F%3E%3Cpath%20d%3D%22M11%204c0-2.2%201.636-3.25%203.636-2.333l16.727%207.667c2%20.917%202%202.417%200%203.333l-16.727%207.667C12.636%2021.25%2011%2020.2%2011%2018z%22%20style%3D%22fill%3A%2345dd2e%3Bfill-rule%3Anonzero%22%2F%3E%3C%2Fsvg%3E);
}
.emoji-list-b ul li p {
display: inline;
}
</style>
<div class="emoji-list-b" markdown>
- [**Good reputation**](https://www.privacyguides.org/articles/2025/09/03/red-and-green-privacy-flags/#reputation-history): What are privacy and security experts saying about this product or organization? Does the product or organization have a good reputation within the field?
- [**Access to evidence**](https://www.privacyguides.org/articles/2025/09/03/red-and-green-privacy-flags/#verifiable-claims): Are you able to verify the privacy claims from independent sources that aren't related to the business itself?
- [**Independent review**](https://www.privacyguides.org/articles/2025/09/03/red-and-green-privacy-flags/#independent-reviews): Was the product reviewed by an independent third-party who had significant access to test the product in a meaningful way?
- [**Transparency**](https://www.privacyguides.org/articles/2025/09/03/red-and-green-privacy-flags/#transparency): Can you easily find detailed information about what data this organization collects, and how it processes and shares it? Would an independent expert have access to its software code to inspect it?
- [**Clear funding model**](https://www.privacyguides.org/articles/2025/09/03/red-and-green-privacy-flags/#clear-funding-model): How does this organization make money? If it's free to use, does this organization rely on donations or grants? Is the product sold to users or to businesses? Where does the money come from?
- [**Availability**](https://www.privacyguides.org/articles/2025/09/03/red-and-green-privacy-flags/#availability): Could you easily contact this organization if you needed to? Can you find an email address dedicated to privacy requests and questions? Can you find where the organization is located? Would you have access to at least two different ways to contact it?
- [**Expert recommendation**](https://www.privacyguides.org/articles/2025/09/03/red-and-green-privacy-flags/#expert-advice): Is this product recommended by independent privacy experts and nonprofit digital rights organizations?
</div>
## More resources
- [Tool recommendations vetted by our community (*Privacy Guides*)](../../../tools/_index.md)
- [Extensive guide on how to evaluate better privacy tools and organizations (*Privacy Guides*)](https://www.privacyguides.org/articles/2025/09/03/red-and-green-privacy-flags/)
- [Privacy washing is a dirty business (*Privacy Guides*)](https://www.privacyguides.org/articles/2025/08/20/privacy-washing-is-a-dirty-business/)
- [Understanding encryption and end-to-end encryption (*Privacy Guides* video)](https://www.privacyguides.org/videos/2025/04/03/is-your-data-really-safe-understanding-encryption/)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

@@ -1,76 +0,0 @@
---
title: Consider Everyone's Unique Situation
description: To give actionable privacy advices, it's essential to consider everyone's situation. Learn more on how you can evaluate each person's unique threat model.
icon: fontawesome/solid/users-between-lines
cover: banner-toolbox-tip-everyone.webp
weight: 8
aliases:
- /en/activism/toolbox/tip-consider-everyones-unique-situation
---
Everyone has different needs, and everyone faces different dangers when their personal data gets exposed.
To give actionable privacy advices and recommendations, it's essential to **keep in mind everyone's situation**. There isn't a one-size-fits-all approach when it comes to data privacy.
Here's how you can get better at evaluating each person's unique [*threat model*](../../../wiki/basics/threat-modeling/index.md):
## What is a threat model?
We regularly use the term "threat model" in cybersecurity and data privacy. This might sound obscure at first if you haven't seen it before, but it's quite simple: A threat model is an evaluation of what is dangerous for a certain person (or entity) in a given situation, and what protective measures should be prioritized.
For example, if you leave near the equator, polar bears might not be an important threat to your safety. However, if you live in Nunavut, it may be important to get information on how to prevent a polar bear attack.
Similarly, when you choose privacy protections for yourself or for others, you should first ask a few questions to understand better what information you are trying to protect, from whom, and in which context.
## What questions to ask?
To establish a threat model, ask the following questions:
1. What information leak could endanger this person or organization the most?
2. Who this information should be protected from?
3. How likely is it that this person or entity could access this information?
4. What could happen if this person or entity had access to this information?
5. What are the protections available to protect this information specifically from this person or entity?
6. What would be the downside of using these protections?
7. How long do these protections need to remain in place?
Ask, rinse, and repeat for each type of information. The answers to these questions will be unique for each person or organization. This is their unique threat model.
{{< details title="Example scenario: Threat of stalking" closed="true" >}}
**Needs:** Alice is a young celebrity sharing a lot of information about herself on social media. As part of her work, she has to be able to share photos of herself, her legal name, some of her travel information, and details about her personal life.
**Threat:** However, to protect herself from an aggressive stalker, she must protect information about her *home address* at all cost.
**Level of danger:** She already received threats online, and the danger to her safety is imminent if her home address were to be known to this aggressive stalker.
**Information to protect and solutions:** Everywhere that Alice is required to share her home address must be protected. She should use a PO box every time her personal address isn't absolutely necessary. She should make sure to only share her address with trusted people that are informed about this danger. And she should inspect all of her photos and metadata carefully, to make sure her location is never precisely [revealed](https://www.privacyguides.org/articles/2025/03/25/privacy-means-safety/#victims-of-stalkers).
{{< /details >}}
{{< details title="Example scenario: Surveillance Capitalism" closed="true" >}}
**Needs:** Bob feels uncomfortable with companies using his information without his consent. He doesn't trust what they might do with this information later, or whom they might sell it to. He is especially worried about how companies and governments might use facial recognition with him.
**Threat:** To limit facial recognition, Bob doesn't want any companies to have access to a *photo of his face*.
**Level of danger:** If Bob or someone close to Bob posted a photo of his face online, the numerous bots constantly scanning the open web and social media platforms would have a copy of it in no time.
**Information to protect and solutions:** To prevent this, Bob should not post any photos of his face online. He should make sure to only choose profile pictures that don't show his face for social media, and inspect any other photos posted to make sure his face doesn't show up on reflective surfaces. He should also inform his friends and family that he doesn't want photos of himself to be posted online, and he should protect his phone camera roll and cloud storage from getting [scanned](https://www.forbes.com/sites/zakdoffman/2026/01/15/google-upgrade-starts-scanning-all-your-photos-be-very-careful/) by remotely controlled AI. Bob should also opt out of any online platforms demanding a facial scan or photo ID in order to [verify his age](https://www.privacyguides.org/videos/2025/08/15/age-verification-is-a-privacy-nightmare/) or identity.
{{< /details >}}
## Respect people's choices when it comes to their own privacy
When advising others on data privacy, it's easy to get carried away and forget that other people might have different threat models from our own.
Once we have provided the information to somebody who might need it, it's important to take a step back and respect their choices. If someone understands the risks, and decides that sharing this information *about themselves* is an acceptable level of risk to them, we cannot (and shouldn't try) to force them in using the same level of protection we have adopted ourselves, if they don't want to.
Of course, this might be a different story if their decision also affects the data of others. But if it only concerns their own data, the choice is theirs.
To be a good privacy advocate is to provide information and support when needed. But ultimately, privacy is about deciding what one is comfortable sharing about themselves or not. We can only choose this for ourselves, not for others.
## More resources
- [More detailed information on threat modeling (*Privacy Guides*)](../../../wiki/basics/threat-modeling/index.md)
- [Examples of common threats (*Privacy Guides*)](../../../wiki/basics/common-threats/index.md)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

@@ -1,50 +0,0 @@
---
title: Don't Stop at Individual Solutions, Consider The Collective Impact
description: When we think about privacy, we often focus on technical individual solutions. But it's also crucial to consider the collective impact of privacy issues.
icon: fontawesome/solid/users-rays
cover: banner-toolbox-tip-expand.webp
weight: 6
aliases:
- /en/activism/toolbox/tip-dont-stop-at-individual-solutions
---
When we think about our privacy, we often focus on the technical tools we can use to protect it. While this is an important *component*, it's crucial not to lose sight of how regulations and invasive practices impact us collectively.
Here's what to keep in mind to **expand your perspective on data privacy** beyond individual solutions:
## The danger of focusing only on individual solutions
While it might feel easier to focus on our own needs, nobody lives in a vacuum. Even if you were able to somehow protect all the data you have custody of, there is a lot of data about you that isn't under your control, and a lot of data about *others* that impact you.
Moreover, it's important to consider others in different situations. For example, even if everyone who has access to a [VPN](../../../tools/services/vpn/index.md) service can stay protected from a particular issue, what about all the others? It's neither practical nor realistic to expect that *everyone* would be able to circumvent a problem by using a VPN.
While in some cases we might want to discuss immediate individual solutions in order to mitigate some harm, we must also attack the root cause of the problem.
If we only think of *individual* solutions when a corporation exploits our data, or a government adopts a privacy-invasive regulation, we risk letting our guard down by giving up the fight early. This makes the problem harder to fight later on, and results in more harm to our communities, and eventually to ourselves as well.
## Things to keep in mind when a privacy issue arises
Here are a few questions you can ask yourself whenever a new privacy issue arises in the news, to help expand your perspective beyond individual solutions:
- What are potential mitigation solutions, and who will realistically be able to use them?
- What will happen to the people who don't have the resources (in time, in money, in knowledge) to protect themselves individually?
- Will this issue impact some communities more than others? Who will this affect the most negatively?
- What will be the impact for the people who *cannot* protect themselves individually?
- What will be the impact for the people who *can* protect themselves individually?
- Are there other solutions that could be adopted to fight this issue for *everyone* at once, without relying on *individual* harm mitigations.
- How can we fight against this issue in a way that will benefit *everyone* impacted, including the people who aren't even aware of the issue?
## More resources
- [Why you should also care about other people's privacy (*Privacy Guides*)](https://www.privacyguides.org/articles/2025/03/10/the-privacy-of-others/)
- [Why privacy might be a safety matter for many (*Privacy Guides*)](https://www.privacyguides.org/articles/2025/03/25/privacy-means-safety/)
- [Encryption must not be outlawed for our privacy tools to work (*Privacy Guides*)](https://www.privacyguides.org/articles/2025/04/11/encryption-is-not-a-crime/)
- [Dangerous regulation proposals like Chat Control could impact everyone without many individual solutions (*Privacy Guides*)](https://www.privacyguides.org/articles/2025/09/08/chat-control-must-be-stopped/)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

@@ -1,90 +0,0 @@
---
title: Engage, Boost, and Contribute
description: Once you have the knowledge, motivation, and energy to fight for privacy rights, it's time to act! Learn more on what you can do to be a privacy activist.
icon: fontawesome/solid/bullhorn
cover: banner-toolbox-tip-engage.webp
weight: 24
aliases:
- /en/activism/toolbox/tip-engage-boosts-and-contribute
---
Once you have the knowledge, motivation, and energy, **it's time to act**! Perhaps you've read all the tips here, or have read through our [Knowledge Base](../../../wiki/basics/why-privacy-matters/index.md) already! But you don't need to know that much about privacy to start contributing.
The most important part is that you care about privacy rights, and want to be part of the movement to defend them.
Here's what you can do to become a privacy activist:
## Be active! Participate and contribute!
Being a privacy activist means actively taking part in the movement to protect and improve fundamental privacy rights for everyone.
> We want to help redefine 'activist' to a term that can include anyone who wants to work collectively to create social change. You don't have to be an expert, and you don't have to spend every waking minute trying to do 'activism'. You just have to be a person who wants to create change with other people.
> <small>— Source: [*Activist Handbook*](https://activisthandbook.org/theory/what-is-activism#our-response-take-the-%E2%80%98expert%E2%80%99-out-of-%E2%80%98activism%E2%80%99)</small>
There are many ways to actively engage in the privacy rights movement.
While a lot can be accomplished by *anyone* interested in joining, think about how you can orient your activism around *your* strengths, skills, and interests. This will help with sustainability.
If you find one way doesn't really work for you, and you get tired or bored quickly, then find another way to contribute. There isn't a one-size-fits-all approach. Find the ways that work best for you.
Perhaps you like to write, to draw, to record videos, or to build applications? Or maybe you prefer to engage with people directly, and become involved in the more social part of privacy advocacy? This can all be incredibly valuable contributions to the movement.
Ask yourself these questions:
- What do I enjoy doing that could also be useful to the cause?
- What are my interests? What do I want to learn more about?
- Which skills and social networks do I already have?
- How much time do I have to contribute each week?
- Who around me shares my privacy values and could be an ally?
## Things you can do to engage, boost, and contribute
Here are some ideas of what you can do to become a privacy activist in your community, and a valuable member of the privacy rights movement:
<style>
.emoji-list-a ul {
list-style: emoji-list-a;
}
@counter-style emoji-list-a {
system: fixed;
symbols: "🚀" "✍️" "💪" "🙅" "🙌" "💵" "📍" "✊" "💛";
suffix: " ";
</style>
<div class="emoji-list-a" markdown>
- [**Spread** the words of your allies.](../tip-lift-your-allies-up/index.md) Repost social media campaigns from digital rights organizations you like, and write about it on your own platforms. Encourage people to participate if there is a call to action.
- **Write** about the privacy issues you care about. Inform the public with accurate information and effective ways of action to push back against invasive technologies and legislations. This can be through your social networks, personal blog, or even a book!
- [**Participate**](../tip-small-actions-matter/index.md) in the actions organized by others. Reply positively to social media posts related to privacy rights, repost the content of your allies, sign petitions, report violations, join an online forum, and contact your representatives about privacy rights in your region of the world.
- [**Refuse**](../tip-refuse-to-participate/index.md) to participate in privacy-invasive requests, and refuse to use privacy-invasive technologies as much as doable for your situation. Sometimes doing nothing can be a powerful action. Try to prioritize your privacy principles over [convenience](https://www.privacyguides.org/articles/2025/06/07/selling-surveillance-as-convenience/), and report on your refusal experiences on social networks and with your local communities.
- [**Join or build** communities](https://discuss.privacyguides.net/) with people sharing your privacy values. Be a positive contributor and lift your allies up. [Support your privacy comrades](../tip-support-your-privacy-comrades/index.md) and [ask for help](../tip-take-time-to-rest/index.md) when you need it yourself. Look for nonprofit organizations seeking volunteers.
- [**Contribute** financially](../../../about/donate/index.md) if you can. If you cannot afford to participate in time, consider donating money. There are many digital rights nonprofit organizations that could do *so much more* if only they had more funding. Offering financial support when you can is a meaningful way to contribute to the privacy rights movement.
- **Go** to local meetups related to privacy and digital rights. Meet people who share your values in-person, and grow your network to find allies in your area.
- **Take part** in digital rights protests that support causes and raise awareness on privacy issues you care about. Actively look online for events to join in your local privacy rights community.
- **Invite** others to join you in the movement to defend privacy rights!
</div>
> People who do activism reclaim their own agency in deciding what kind of world they want to live in.
> <small>— Source: [*Activist Handbook*](https://activisthandbook.org/theory/what-is-activism#personal-is-political)</small>
## More resources
- [What is activism? (*Activist Handbook*)](https://activisthandbook.org/theory/what-is-activism#personal-is-political)
- [How to be an activist for human rights causes (*WikiHow*)](https://www.wikihow.com/Become-an-Activist)
- [Learn to use ethical principles of persuasion (*The Community Tool Box* (University of Kansas))](https://ctb.ku.edu/en/table-of-contents/participation/promoting-interest/principles-of-persuasion/main)
- [Communicate your message: Making sure your message comes across (*Activist Handbook*)](https://activisthandbook.org/communication)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

@@ -1,56 +0,0 @@
---
title: Give Credit Where Credit Is Due
description: To succeed with our movement to defend privacy rights, we must support each other. One good way to do this is to give credit where credit is due.
icon: fontawesome/solid/thumbs-up
cover: banner-toolbox-tip-credit.webp
weight: 14
aliases:
- /en/activism/toolbox/tip-give-credit-where-credit-is-due
---
To succeed in our battle, we must **support each other**. One good way to accomplish this is to never forget to give credit where credit is due. When another advocate or organization says something you agree with, boost them up, spread their reach, and thank them publicly.
Here are a few ways you can help your allies feel seen and valued:
## Why crediting people and organization is important
Giving credit to the right person or organization isn't only the ethical thing to do, it's also a way to **build alliances**, to bring more people to the cause, and to retain the allies you already have.
When people feel valued, they are usually inclined to work harder. People are also more likely to stick around places where they feel seen and appreciated. This is incredibly important for our movement.
When giving credit to organizations, you are also making a whole team feel valued. Organizations are made of people, after all. Caring about the people who work hard at your allied organizations is fundamental to build our movement.
## Ways to credit your allies in your advocacy work
<style>
.emoji-list-a ul {
list-style: emoji-list-a;
}
@counter-style emoji-list-a {
system: fixed;
symbols: "💬" "🔗" "👍" "🙌" "💛" "😊" "🏆";
suffix: " ";
</style>
<div class="emoji-list-a" markdown>
- **Quote** your allies' work in your own content and material. Make sure to always credit their name and link to their external resources when you do.
- **Link** to your allies' resources on your own platforms. Give them credit for their work, and encourage your own audience to consult your allies' material.
- **Support** your allies publicly on social media. Repost their content to increase their reach. Post about them while tagging them, to encourage your circle to follow them as well. Reply to their posts thanking them for their hard work for the cause.
- **Reach out** to offer your help on their projects, whenever you have the resources to do so.
- **Thank** your allies publicly when working with a group, whether it's for paid or volunteer work. Make the members of your group feel recognized and valued individually.
- **Attribute** the work of each contributor to the name they have agreed to share publicly, depending on the platform you use. Ask first how they prefer to be credited, but do not forget to credit them.
- **Nominate** your allies for rewards/awards if the opportunity arises, and make sure to add your vote to support them.
</div>
## More resources
- [3 ways to use recognition to boost performance and engagement (*HumanResourceMag*)](https://www.humanresourcemag.com/news/277/3-ways-to-use-recognition-to-boost-performance-and-engagement)
- [The fine line between teamwork and taking credit: Why recognition matters (*Gwendolyn F. McGraw*)](https://blog.gwendolynmcgraw.net/2025/07/12/the-fine-line-between-teamwork-and-taking-credit-why-recognition-matters/)
@@ -1,120 +0,0 @@
---
title: Improve Your Social Media and Build Resilient Communities
description: Commercial social media platforms represent one of the biggest source of data exploitation. Learn how you can build better and more resilient social networks.
icon: fontawesome/solid/seedling
cover: banner-toolbox-tip-plant.webp
weight: 5
aliases:
- /en/activism/toolbox/tip-improve-your-social-media-and-build-resilient-communities
---
Commercial social media platforms represent one of the biggest source of data exploitation. Facebook, Instagram, Threads, TikTok, and X all exploit their users' data to generate billions in profit every year. By staying active on these platforms, we continue to feed the beast and indirectly support this invasion of privacy rights.
Here's how you can **minimize your presence on commercial social media**, and slowly build more autonomous communities:
## Why it's important to move away
Moving away from large commercial platforms can be a complex process, but it's a very important one nonetheless.
[Reducing our dependence on Big Tech](../tip-migrate-outside-the-surveillance-ecosystem/index.md), including for social media platforms, is essential in our fight for better privacy rights.
Not only this allows us to stop feeding a surveillance machine that grows ever hungry for data every month, but it gives us an opportunity to build much more resilient communities, and support platforms that aren't devouring peoples' privacy.
Many are reluctant to quit commercial social media, despite the many issues that have only become worse in the past few years. It's not always easy to leave a place that feels like home and rebuild elsewhere. However, <mark>when the house is on fire, it's time to leave.</mark>
The more we produce content, and the more we engage with our community on these privacy-invasive platforms, the more we contribute to sustain these predatory corporations making money and thriving at the expense of our followers' data.
It's a responsibility for any privacy advocates to stay true to their values, and minimize their presence on exploitive platforms as much as feasible.
## Minimizing your presence on commercial social media platforms
Here are a few things you can start doing to reduce your contribution to Big Tech social media. This is presented on an escalating scale. Go as far as realistically possible for your situation:
1. Create an account that mirrors your regular posts on a [privacy-respecting platform](#embracing-privacy-respectful-alternatives), and announce it prominently on your commercial social media accounts.
2. Regularly post on your commercial social media that you don't support this platform and encourage your followers to meet you on your new privacy-respecting social network instead.
3. Use your commercial social media profile pictures and banners to advertise your new social network account (this will help fight potential Big Tech [censorship](https://gizmodo.com/elon-musk-twitter-ban-mastodon-1849903839) of text posts promoting competitors).
4. Tell your followers on commercial social media that you will stop engaging in replies here, but will reply to questions and comments on your new social network profile, and follow through.
5. If this makes sense for your situation, after backing up your data, start deleting older content from your commercial social media profiles (you can use a tool like [Cyd](https://docs.cyd.social/docs/intro/) to help you with deletion).
6. Gradually decrease your posting activity on commercial social media, and increase your presence and engagement with your new social network account on a privacy-respecting platform.
7. Stop posting on your commercial social media account entirely. Only keep a pinned post and profile description with your new social network account information, and encourage your followers to meet you there.
8. When you are ready, delete your data and close your accounts on commercial social media entirely. Before leaving permanently, make sure to post an announcement (a week before maybe) about why you are leaving and how your followers can find you on your new social network.
## Embracing privacy-respectful alternatives
Perhaps you are already convinced to leave exploitive social media platforms for better places, but aren't sure where to go. Thankfully, there are alternatives that genuinely respect users and their privacy.
One such network is the [**Fediverse**](https://en.wikipedia.org/wiki/Fediverse), a decentralized collection of interconnected applications and servers that can communicate with each other.
The Fediverse was built from a desire for social connection, not from greed for profits. <mark>This is a fundamental difference that leads to substantial benefits.</mark> Most servers that are part of the Fediverse network are hosted by volunteers who simply want to support their communities.
There are many applications that can connect to the Fediverse, the most famous probably being the microblogging platform [Mastodon](https://joinmastodon.org/). But you could also choose to join an app more similar to Instagram with [Pixelfed](https://pixelfed.org/), or more similar to YouTube with [PeerTube](https://joinpeertube.org/). They all connect together!
Here are some resources to help you learn more about this social network, and its many applications:
<style>
.emoji-list-a ul {
list-style: emoji-list-a;
}
@counter-style emoji-list-a {
system: fixed;
symbols: "🎞️" "❓" "💛" "🔒" "🐘";
suffix: " ";
</style>
<div class="emoji-list-a" markdown>
- [Learn why the Fediverse is a better alternative (*Elena Rossini* video)](https://blog.elenarossini.com/fediverse-video/)
- [What is the Fediverse and how it's interconnected (*Stefan Bohacek* project)](https://jointhefediverse.net)
- [Social network recommendations (*Privacy Guides*)](../../../tools/self-hosting/social-networks/index.md)
- [Privacy and security on Mastodon (*Privacy Guides*)](https://www.privacyguides.org/articles/2025/07/15/mastodon-privacy-and-security/)
- [How to create a Mastodon account (*Doc Pop*)](https://docpop.org/2025/02/how-to-get-started-with-mastodon/)
</div>
## Building resilient communities
If you decide to make the Fediverse-connected social network Mastodon your new home, you will be able to choose between a variety of servers (instances) to create your account.
You can also simply choose the Mastodon organization's main server [mastodon.social](https://mastodon.social/about), if you don't feel like thinking about this too much. Mastodon has a feature allowing to migrate your account from one server to another, so this isn't a permanent decision. You can always move later if you choose to (you can't move your content for now, but you can move your followers).
That being said, if you're up for a more resilient solution, one option that is truly empowering is to host your own Mastodon server (or many other applications that are part of the Fediverse family).
Self-hosting your Mastodon server of course requires more time and resources. But, if you can afford it, hosting your own server will allow you to be much more independent and genuinely own your own data.
This is the best way to build a community that is truly resilient, and billionaire-resistant.
### Wikimedia has its own Mastodon instance!
As an example of an organization self-hosting its Mastodon account, the [Wikimedia Foundation](https://wikimediafoundation.org/) (the nonprofit organization hosting *Wikipedia*) has its [own](https://meta.wikimedia.org/wiki/Wikimedia.Social) Mastodon server at [wikimedia.social](https://wikimedia.social/about).
From their [Wikimedia's Mastodon account](https://wikimedia.social/@wikimediafoundation) on this server, you can see that the organization's official website is listed in green. This verifies the account's authenticity by linking together the website address with the Mastodon account. It's easy to do, and entirely free.
You can also see this page is visible to anyone, regardless of if they have a Mastodon account or not. This makes the information you want to share with your community much more accessible. It doesn't require your community to share any sensitive data if they prefer not to, like they would have to do to follow you on Facebook, Instagram, X, or TikTok.
Additionally, this allows you to keep full control over your profile page, regardless of social media ownership, or censorship. This is how you can build a truly resilient community for your privacy advocacy work.
Privacy Guides does this too, of course! You can [follow *Privacy Guides*](https://mastodon.neat.computer/@privacyguides) from our own self-hosted Mastodon server 💛
## More resources
- [Official Mastodon website](https://joinmastodon.org/)
- [List of curated smaller Fediverse servers (*Fedi Garden*)](https://fedi.garden/)
- [Find answers to all your questions about Mastodon and the Fediverse (*Fedi Tips*)](https://fedi.tips/)
- [Tutorial to optimize privacy and security on a Mastodon account (*Privacy Guides*)](https://www.privacyguides.org/articles/2025/07/22/mastodon-tutorial-privacy-and-security/)
- [Organizations: Tutorial to verify your Mastodon account (*Privacy Guides*)](https://www.privacyguides.org/articles/2025/07/22/mastodon-tutorial-privacy-and-security/#verifying-yourself-and-others)
- [Organizations and Writers: Tutorial to attribute your articles to your Mastodon account, including when others share links on the network (*Privacy Guides*)](https://www.privacyguides.org/articles/2025/07/22/mastodon-tutorial-privacy-and-security/#author-attribution-for-journalists-and-writers)

Some files were not shown because too many files have changed in this diff Show More