diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index de71b2b..6479527 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -19,7 +19,7 @@
You can add, edit or remove entries by opening a pull request.
All data is stored in [`awesome-privacy.yml`](https://github.com/Lissy93/awesome-privacy/blob/main/awesome-privacy.yml).
-If you're adding, editing or removing a listing - **this is the only file you need to edit**.
+If you're adding, editing or removing a listing - **this is the only file you need to edit**. Don't edit the README directly, as this is auto-generated from the YAML file.
### Process
@@ -31,6 +31,7 @@ Your request will be reviewed, then either merged, or have changes requested, or
- To make layout or stylistic edits to the site ([awesome-privacy.xyz](https://awesome-privacy.xyz)), see the [Website docs](https://github.com/Lissy93/awesome-privacy#the-website) in the readme for build and running instructions.
- To make edits to the API ([api.awesome-privacy.xyz](http://api.awesome-privacy.xyz/)), see the [API docs](https://github.com/Lissy93/awesome-privacy#the-api) in the readme for build and running instructions.
+- To make changes to the automations (which validate, process and insert the data), see the [lib](https://github.com/Lissy93/awesome-privacy/blob/main/lib) directory
---
@@ -41,7 +42,7 @@ For software to be included in this list, it must meet the following requirement
- **Privacy Respecting**
- The project must respect users privacy, not collect more data than necessary, and store info securely
- For hosted services, the project must have a clear privacy policy
- - The user must remain in full control of their data, and be able to delete it at any time
+ - The user must remain in full control of their data, and be able to export and delete it at any time
- **Secure**
- The software must be secure by default, without requiring additional configuration
- There should be no current, critical security issues
@@ -50,6 +51,7 @@ For software to be included in this list, it must meet the following requirement
- The full source code should be released under an open source license
- Ideally it should be possible for the user to build and run/deploy the software themselves from source
- **Actively Maintained**
+ - The project must not be abandoned or severely out-dated
- The developers should address dependency updates and security patches in a timely manner
- **Transparent**
- It should be clear who is behind the project, what their motives are, and what (if any) the funding model is
@@ -62,6 +64,10 @@ For software to be included in this list, it must meet the following requirement
- A stable (non-alpha/beta) release is required at a minimum
- Must be accessible to the general public, and not just a select group of people
- If technical knowledge is required to run it, the software must be well documented
+- **Mature**
+ - Software needs to have a proven track record of commitment to maintenance
+ - Repositories must not be newly created, and the first stable release older than 4 months
+ - Projects that are largely AI/autogenerated without meaningful review or maintainership are not suitable for listing here
_There may be some exceptions, but these would need to be fully justified, reviewed
by the community, and the drawbacks / anti-features must be clearly listed along-side the software.
@@ -74,25 +80,18 @@ Usually these entries go within the "Notable Mentions" section instead._
Your pull request must follow these requirements. Failure to do so, might result in it being closed.
-- Do not edit the README directly when adding / editing a listing
+- Do not edit the README directly when adding / editing a listing (it's auto-generated!)
- Ensure your PR is not a duplicate, search for existing / previous submissions first
-- You must respond to any comments or requests for changes in a timely manner, 48-hours maximum
-- Write short but descriptive git commit messages, under 50 characters. This must be in the format of `Adds [software-name] to [section-name]`. Your PR will be rejected if you name it `Updates README.md`
+- Don't forget to give the PR a title. Use the format of `Adds [software-name] to [section-name]`
- Only include a single addition / amendment / removal, per pull request
-- If your pull request contains multiple commits, you must squash them first
-- You must complete each of the sections in the pull request template. Do not delete it!
+- You must complete each of the sections in the [pull request template](https://github.com/Lissy93/awesome-privacy/blob/main/.github/PULL_REQUEST_TEMPLATE.md). Do not delete it!
- Where applicable, include links to supporting material for your addition: git repo, docs, recent security audits, etc. This will make researching it much easier for reviewers
-- While adding new software to the list, don't make your entry read like an advert. Be objective, and include drawbacks as well as strengths
-- Your entry should be added at the bottom of the appropriate category, unless otherwise requested
-- If there are other pull requests open, please help review them before submitting yours
-- A pull request must receive multiple approval reviews before it can be merged
-- You must be transparent about your affiliation with a product or service that you are adding. It's totally okay to submit your own projects as additions (providing they meet the requirements), but if you don't declare your association with that project then there becomes a clear conflict of interest
-- You must adhere to the Contributor Covenant Code of Conduct
-- Don't open a Draft / WIP pull request while you work on the guidelines. A pull request should be 100% ready and should adhere to all the above guidelines when you open it
-- Your changes must be correctly spelled, and with good grammar
-- Your changes must be correctly formatted, in valid markdown
-- The addition title must be a link the project, and in bold
-- The addition description must be no less than 50, and no more than 250 characters, keep it clear and to the point
+- Your entry should be added at the bottom of the appropriate category
+- Your changes must be correctly formatted, in valid yaml and which conforms to the schema
+- Description needs to be 50-250 characters, and must not read like an advert. Be objective, and include drawbacks as well as strengths
+- You must be transparent about your affiliation with a product or service that you are adding. It's totally okay to submit your own projects, but if you don't declare your association with that project then there becomes a clear conflict of interest
+- You must respond to any comments or requests for changes in a timely manner, 14 days maximum
+- You must adhere to the [Contributor Covenant Code of Conduct](https://github.com/Lissy93/awesome-privacy?tab=coc-ov-file#contributor-covenant-code-of-conduct)
---
@@ -103,8 +102,6 @@ This file may look a bit daunting to start with, but don't worry - it's pretty s
### Top-Level Structure
-
-
```mermaid
---
title: Class Diagram
@@ -242,6 +239,57 @@ Just look at some of the existing entries in the file for inspiration, and if yo
---
+
+## About the Automated Pre-Review
+
+When you open a PR, we run a few automated checks. This was implemented so that you get helpful feedback immediately, if the submission contains a common mistake.
+Note that the pass/fail of these checks does not indicate whether a PR will or will not be merged. And if something does fail, my friendly bot will drop a comment explaining how you can fix it :)
+
+View all checks
+
+Below is the full list of checks - it's basically the same as what is listed in the [Contributing Guidelines](https://github.com/Lissy93/awesome-privacy/blob/main/.github/CONTRIBUTING.md#guidelines) above. Everything in red needs to pass to be merged, whereas yellow is just warnings/suggestions.
+
+- **PR Meta**
+ - 🔴 **Title format** - Must follow `[Add/Remove/Update] [name] in [section]`
+ - 🔴 **Template filled** - All required sections (Type, Changes, Checklist) must be present
+ - 🔴 **Checkboxes ticked** - All checklist boxes must be checked with `[x]`
+ - 🔴 **No README edits** - README is auto-generated, so direct edits are rejected
+ - 🟡 **Not a draft** - WIP/draft PRs are discouraged
+ - 🟡 **No bot authors** - Commits should not be solely authored by an AI bot
+- **Validating Addition**
+ - 🔴 **Schema valid** - YAML must pass schema validation
+ - 🔴 **Required fields** - Must include `name`, `description`, `url`, `icon`
+ - 🟡 **Single entry** - Only one service addition per PR
+ - 🟡 **Position** - New entries must go at the end of their section
+ - 🟡 **Open source** - Non-open-source submissions need justification
+ - 🟡 **Duplicate name** - Service name must not already exist
+ - 🟡 **Duplicate URL** - Service URL must not already exist
+ - 🟡 **Description length** - Should be 50–250 characters
+ - 🟡 **Open source + GitHub** - If marked open source, must include `github` field
+- **Project Health**
+ - 🟡 **Links reachable** - Service URL and icon must not return 404
+ - 🟡 **Author disclosure** - If PR author owns the repo, they should disclose it
+ - 🟡 **Not inactive** - Repo should have a push within the last 90 days
+ - 🟡 **Minimum age** - Repo should be ≥4 months old
+ - 🟡 **AI-generated code** - Flags if ≥20% of recent code came from an AI bot
+ - 🟡 **Not a fork** - Flags if the GitHub link is a fork instead of source
+ - 🟡 **Has license** - Repo should include a license
+ - 🟡 **Not archived** - Repo must not be archived
+ - 🟡 **No security alerts** - No open critical/high Dependabot alerts
+ - 🟡 **Minimum stars** - Repo should have ≥100 stars
+ - 🟡 **Spam detection** - Flags if user opened ≥5 PRs to other awesome-* repos in 24h
+- **Addition Info** (fyi only, no pass/fail requirements or warnings)
+ - 🔵 **Website check** (if has `website`) - Quickly checks for basic security requirements for website
+ - 🔵 **Source check** (if has `github`) - Brief audit of core GitHub metrics from submitted the repo
+ - 🔵 **Android check** (if has `android`) - Lists the trackers, permissions and stats for the Android app
+ - 🔵 **iOS check** (if has `ios`) - Shows average rating, and app stats from the Apple App Store
+ - 🔵 **Privacy Policy check** (if has `tosdr`) - Outputs the privacy score from ToS;DR and links to policy
+
+
A curated list of privacy-respecintg apps, software, and providers
-A curated list of privacy & security-focused apps, software, and providers 🔐
+ ++ + [CodeBerg Mirror] | + [Submit an Addition] | + [Raw data & API] + +
## Intro - Large data-hungry corporations dominate the digital world but with little, or no respect for your privacy. Migrating to open-source applications with a strong emphasis on privacy and security will help stop corporations, governments, and hackers from logging, storing or selling your personal data. -> ⚠️ **Note**: Remember that [no software is perfect](#important-considerations), and it is important to follow good [security practices](https://github.com/Lissy93/personal-security-checklist/blob/HEAD/CHECKLIST.md)- -## Essentials - -### Password Managers - -- **[-📋 Contents
- -- **Essentials** - - [Password Managers](#password-managers) (6) - - [2-Factor Authentication](#2-factor-authentication) (9) - - [File Encryption](#file-encryption) (4) - - [Browsers](#browsers) (5) - - [Search Engines](#search-engines) (5) -- **Communication** - - [Encrypted Messaging](#encrypted-messaging) (4) - - [P2P Messaging](#p2p-messaging) (5) - - [Encrypted Email](#encrypted-email) (5) - - [Email Clients](#email-clients) (6) - - [Mail Forwarding](#mail-forwarding) (6) - - [Email Security Tools](#email-security-tools) (3) - - [VOIP Clients](#voip-clients) (2) - - [Virtual Phone Numbers](#virtual-phone-numbers) (5) - - [Team Collaboration](#team-collaboration) (5) -- **Security Tools** - - [Browser Extensions](#browser-extensions) (25) - - [Mobile Apps](#mobile-apps) (25) - - [Online Tools](#online-tools) (18) -- **Networking** - - [Virtual Private Networks](#virtual-private-networks) (5) - - [Self-Hosted Network Security](#self-hosted-network-security) (8) - - [Mix Networks](#mix-networks) (3) - - [Proxies](#proxies) (2) - - [DNS Providers](#dns-providers) (3) - - [DNS Clients](#dns-clients) (6) - - [Firewalls](#firewalls) (14) - - [Ad Blockers](#ad-blockers) (8) - - [Host Block Lists](#host-block-lists) (5) - - [Router Firmware](#router-firmware) (2) - - [Network Analysis](#network-analysis) (4) - - [Intrusion Detection](#intrusion-detection) (5) - - [Cloud Hosting](#cloud-hosting) (3) - - [Domain Registrars](#domain-registrars) (2) - - [DNS Hosting](#dns-hosting) (1) - - [Mail Servers](#mail-servers) (3) -- **Productivity** - - [Digital Notes](#digital-notes) (8) - - [Calendar](#calendar) (0) - - [Backup and Sync](#backup-and-sync) (3) - - [Cloud Productivity Suites](#cloud-productivity-suites) (5) - - [Encrypted Cloud Storage](#encrypted-cloud-storage) (7) - - [File Drop](#file-drop) (2) - - [Browser Sync](#browser-sync) (5) - - [Secure Conference Calls](#secure-conference-calls) (2) -- **Utilities** - - [Virtual Machines](#virtual-machines) (3) - - [PGP Managers](#pgp-managers) (9) - - [Metadata Removal](#metadata-removal) (3) - - [Data Erasers](#data-erasers) (9) -- **Operating Systems** - - [Mobile Operating Systems](#mobile-operating-systems) (4) - - [Desktop Operating Systems](#desktop-operating-systems) (6) - - [Linux Defenses](#linux-defenses) (6) - - [Windows Defences](#windows-defences) (22) - - [Mac OS Defences](#mac-os-defences) (3) - - [Anti-Malware](#anti-malware) (2) -- **Development** - - [Code Hosting](#code-hosting) (5) - - [IDEs](#ides) (0) - - [Terminal Emulators](#terminal-emulators) (0) -- **Smart Home & IoT** - - [Voice Assistants](#voice-assistants) (2) - - [Smart Home](#smart-home) (1) -- **Finance** - - [Cryptocurrencies](#cryptocurrencies) (2) - - [Crypto Wallets](#crypto-wallets) (8) - - [Crypto Exchanges](#crypto-exchanges) (4) - - [Virtual Credit Cards](#virtual-credit-cards) (3) - - [Other Payment Methods](#other-payment-methods) (3) - - [Secure Budgeting](#secure-budgeting) (3) -- **Social** - - [Social Networks](#social-networks) (4) - - [Video Platforms](#video-platforms) (3) - - [Blogging Platforms](#blogging-platforms) (6) - - [News Readers](#news-readers) (3) - - [Proxy Sites](#proxy-sites) (4) -- **Media** - - [Gaming](#gaming) (0) - - [Media Servers](#media-servers) (0) - - [Music Players](#music-players) (0) - - [Video Players](#video-players) (0) - - [Photo Viewers](#photo-viewers) (0) - - [E-Book Readers](#e-book-readers) (0) - - [Podcast Players](#podcast-players) (0) - - [Torrent Downloaders](#torrent-downloaders) (0) - - [File Converters](#file-converters) (0) -- **Creativity** - - [Image Editors](#image-editors) (8) - - [Video Editors](#video-editors) (7) - - [Audio Editors & Recorders](#audio-editors--recorders) (1) - - [Casting & Streaming](#casting--streaming) (1) - - [Screenshot Tools](#screenshot-tools) (0) - - [3D Graphics](#3d-graphics) (2) - - [Animation](#animation) (1) -
⚠️ This section is still a work in progress ⚠️
Check back soon, or help us complete it by submitting a pull request
⚠️ This section is still a work in progress ⚠️
Check back soon, or help us complete it by submitting a pull request
⚠️ This section is still a work in progress ⚠️
Check back soon, or help us complete it by submitting a pull request
⚠️ This section is still a work in progress ⚠️
Check back soon, or help us complete it by submitting a pull request
⚠️ This section is still a work in progress ⚠️
Check back soon, or help us complete it by submitting a pull request
⚠️ This section is still a work in progress ⚠️
Check back soon, or help us complete it by submitting a pull request
⚠️ This section is still a work in progress ⚠️
Check back soon, or help us complete it by submitting a pull request
⚠️ This section is still a work in progress ⚠️
Check back soon, or help us complete it by submitting a pull request
⚠️ This section is still a work in progress ⚠️
Check back soon, or help us complete it by submitting a pull request
⚠️ This section is still a work in progress ⚠️
Check back soon, or help us complete it by submitting a pull request
⚠️ This section is still a work in progress ⚠️
Check back soon, or help us complete it by submitting a pull request
⚠️ This section is still a work in progress ⚠️
Check back soon, or help us complete it by submitting a pull request
⚠️ This section is still a work in progress ⚠️
Check back soon, or help us complete it by submitting a pull request
|
-
- - Vincent Koc - - |
-
-
- - Brian Curliss - - |
-
-
- - Anand Chowdhary - - |
-
-
- - Zach Biles - - |
-
-
- - Ulises Gascón - - |
-
-
- - Digital Archeology - - |
|
-
- - InDieTasten - - |
-
-
- - Araguaci - - |
-
-
- - Brian McGonagill - - |
-
-
- - Vlad - - |
-
-
- - HeliXZz - - |
-
-
- - Göksel Yeşiller - - |
|
-
- - Undefined - - |
-
-
- - HamburgerJung - - |
-
-
- - Frankdez93 - - |
-
-
- - St617 - - |
-
-
- - Hudsonrock-partnerships - - |
|
-
- - Alicia Sykes - - |
-
-
- - Alicia Bot - - |
-
-
- - Saad Azam - - |
-
-
- - Guillaume - - |
-
-
- - Kieran - - |
-
-
- - Lilith - - |
|
-
- - LamTrinh.Dev - - |
-
-
- - A-childs-encyclopedia - - |
-
-
- - Andrew Milich - - |
-
-
- - Kerbless - - |
-
-
- - GhoulBoi69 - - |
-
-
- - Titanism - - |
|
-
- - SMSPool - - |
-
-
- - Catbash - - |
-
-
- - Slade991 - - |
-
-
- - Sam A. - - |
-
-
- - Coccocoa's Helper - - |
-
-
- - Alex Ogden - - |
|
-
- - Alex - - |
-
-
- - Ujjawal Saini - - |
-
-
- - Ward - - |
-
-
- - Wesley-Ryan - - |
-
-
- - Zachary Taylor - - |
-
-
- - Zhymabek Roman - - |
|
-
- - Sanmonji - - |
-
-
- - Azzam S.A - - |
-
-
- - Cole - - |
-
-
- - Jxhn - - |
-
-
- - Kolaente - - |
-
-
- - Magical-heyrovsky - - |
- © Alicia Sykes 2024
+ © Alicia Sykes 2026
Licensed under MIT &
CC0-1.0
-
+
Thanks for visiting :)
\n\n" return contents @@ -116,21 +202,32 @@ def makeAwesomePrivacy(): ) # For each service, list it's name, icon, url, and description for app in section.get('services') or []: + description, was_truncated = truncateMarkdown(' '.join(app.get('description', '').split())) + ap_link = ( + f"https://awesome-privacy.xyz/" + f"{slugify(category.get('name'))}/{slugify(section.get('name'))}/{slugify(app.get('name'))}" + ) + ellipsis = f"[…]({ap_link} \"View full {app.get('name')} report\")" if was_truncated else "" markdown += ( f"- **[{iconElement(app.get('url'), app.get('icon'))} {app.get('name')}]" - f"({app.get('url')})** - {app.get('description')}" - f"[…](https://awesome-privacy.xyz/" - f"{slugify(category.get('name'))}/{slugify(section.get('name'))}/{slugify(app.get('name'))} \"View full {app.get('name')} report\") \n" - + (( - f"\t-\n" contents += "📋 Contents
\n" for category in data.get('categories'): contents += f"\n- **{category.get('name')}**" for section in category.get('sections'): - contents += ( - f"\n\t- [{section.get('name')}](#{makeHref(section.get('name'))}) " - f"({len(section.get('services') or [])})" + if (len(section.get('services') or []) > 0): + contents += ( + f"\n\t- [{section.get('name')}](#{makeHref(section.get('name'))}) " + f"({len(section.get('services') or [])})" ) contents += "\n
- Before completing this form, you must ensure that the service you are adding aligns
- with the Requirements for Awesome Privacy.
+ Before completing this form, you must ensure that the service you are adding
+ aligns with the Requirements for Awesome
+ Privacy.
You'll need a GitHub account in order to submit this form.