forked from devol/degooglizzazione
Compare commits
1 Commits
master
...
pr-test-br
Author | SHA1 | Date |
---|---|---|
tycrek | ef22baf33c |
|
@ -1 +0,0 @@
|
|||
*.js -linguist-detectable
|
|
@ -1,115 +0,0 @@
|
|||
---
|
||||
name: New alternative
|
||||
description: Add a new alternative for a Google service
|
||||
title: "[NEW] Alternative name here"
|
||||
labels:
|
||||
- new
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
## Adding a new alternative to the list
|
||||
|
||||
Fill out to the best of your ability.
|
||||
If an optional item is not applicable, feel free to ignore it.
|
||||
- type: checkboxes
|
||||
id: checklist
|
||||
attributes:
|
||||
label: Checklist
|
||||
options:
|
||||
- label: "**I have read the guidelines in [CONTRIBUTING.md](../blob/master/CONTRIBUTING.md)**"
|
||||
required: true
|
||||
- label: Include my name in [CONTRIBUTORS.md](../blob/master/CONTRIBUTORS.md)
|
||||
- label: I am affiliated with this alternative
|
||||
- type: input
|
||||
id: name
|
||||
attributes:
|
||||
label: Alternative name
|
||||
description: Name of the alternative you wish to add
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: section
|
||||
attributes:
|
||||
label: Section
|
||||
description: Please also include the section you feel it belongs best in
|
||||
multiple: true
|
||||
options:
|
||||
- Browser extensions
|
||||
- Web-based products
|
||||
- Operating systems
|
||||
- Desktop applications
|
||||
- Mobile applications
|
||||
- Hardware
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Description
|
||||
description: |
|
||||
Please provide a brief description of the alternative,
|
||||
one to 5 sentences which will be displayed along with the name.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: reasoning
|
||||
attributes:
|
||||
label: Reason for adding
|
||||
description: |
|
||||
Why is this alternative necessary? Don't use opinions and try to be objective.
|
||||
- type: input
|
||||
id: url
|
||||
attributes:
|
||||
label: URL
|
||||
description: URL of the alternative you wish to add
|
||||
placeholder: https://example-alternative.org
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: repo
|
||||
attributes:
|
||||
label: Repository
|
||||
description: Source Code repository for the alternative
|
||||
placeholder: https://github.com/example/alternative
|
||||
- type: input
|
||||
id: fdroid
|
||||
attributes:
|
||||
label: F-Droid ID
|
||||
description: If available on F-Droid, the ID of the app
|
||||
placeholder: org.alternative.example
|
||||
- type: textarea
|
||||
id: other_links
|
||||
attributes:
|
||||
label: Other Links
|
||||
description: If applicable or helpful, other links related to the alternative
|
||||
- type: checkboxes
|
||||
id: eyes
|
||||
attributes:
|
||||
label: Is this alternative hosted in a country that performs surveillance?
|
||||
description: |
|
||||
For more info on 5/9/14 eyes, please check here: https://restoreprivacy.com/5-eyes-9-eyes-14-eyes/
|
||||
Usually only one applies, but you may select more than one.
|
||||
options:
|
||||
- label: 5 Eyes
|
||||
- label: 9 Eyes
|
||||
- label: 14 Eyes
|
||||
- type: dropdown
|
||||
id: pricing
|
||||
attributes:
|
||||
label: Is there a cost to use this alternative?
|
||||
options:
|
||||
- Free
|
||||
- Paid
|
||||
- Freemium (Free tier but paid upgrades)
|
||||
- type: dropdown
|
||||
id: self-hosting
|
||||
attributes:
|
||||
label: Please indicate if self-hosting is possible, not possible, or the only option
|
||||
options:
|
||||
- Possible
|
||||
- Not possible
|
||||
- Only self-hosted
|
||||
- type: textarea
|
||||
id: additional_details
|
||||
attributes:
|
||||
label: Additional Details
|
||||
description: Use this space to add any other relevant information about the alternative
|
|
@ -1,43 +0,0 @@
|
|||
---
|
||||
name: Fix/update alternative
|
||||
description: Fix or update an existing alternative.
|
||||
title: "[FIX] Alternative name here"
|
||||
labels:
|
||||
- fix
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
## Fixing details about an alternative in the list
|
||||
|
||||
Fill out to the best of your ability.
|
||||
If an item is not applicable, feel free to ignore it.
|
||||
- type: checkboxes
|
||||
id: checklist
|
||||
attributes:
|
||||
label: Checklist
|
||||
options:
|
||||
- label: "**I have read the guidelines in [CONTRIBUTING.md](../blob/master/CONTRIBUTING.md)**"
|
||||
required: true
|
||||
- label: Include my name in [CONTRIBUTORS.md](../blob/master/CONTRIBUTORS.md)
|
||||
- label: I am affiliated with this alternative
|
||||
- type: input
|
||||
id: alternative_name
|
||||
attributes:
|
||||
label: Alternative name
|
||||
description: Which alternative needs to be fixed or updated?
|
||||
- type: textarea
|
||||
id: error
|
||||
attributes:
|
||||
label: Error
|
||||
description: What might be wrong or what should be updated?
|
||||
- type: textarea
|
||||
id: proposed_changes
|
||||
attributes:
|
||||
label: Proposed changes
|
||||
description: What do you suggest be changed?
|
||||
- type: textarea
|
||||
id: additional_details
|
||||
attributes:
|
||||
label: Additional details
|
||||
description: Add any additional details here.
|
|
@ -1,36 +0,0 @@
|
|||
---
|
||||
name: Remove alternative
|
||||
description: Provide details on why an existing alternative should be removed.
|
||||
title: "[REMOVE] Alternative name here"
|
||||
labels:
|
||||
- remove
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
## Removing an existing alternative from the list
|
||||
|
||||
Fill out to the best of your ability.
|
||||
- type: checkboxes
|
||||
id: checklist
|
||||
attributes:
|
||||
label: Checklist
|
||||
options:
|
||||
- label: "**I have read the guidelines in [CONTRIBUTING.md](../blob/master/CONTRIBUTING.md)**"
|
||||
required: true
|
||||
- label: Include my name in [CONTRIBUTORS.md](../blob/master/CONTRIBUTORS.md)
|
||||
- label: I am affiliated with this alternative
|
||||
- type: input
|
||||
id: alternative_name
|
||||
attributes:
|
||||
label: Alternative name
|
||||
description: Which alternative needs to be removed?
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: reason
|
||||
attributes:
|
||||
label: Reason
|
||||
description: Why should this alternative be removed?
|
||||
validations:
|
||||
required: true
|
|
@ -1,7 +1 @@
|
|||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Other
|
||||
url: https://github.com/tycrek/degoogle/discussions
|
||||
about: >
|
||||
Have a question or other topic of discussion that isn't adding/removing/modifying an alternative?
|
||||
The "Discussions" forum is where you want to start.
|
||||
blank_issues_enabled: false
|
|
@ -0,0 +1,25 @@
|
|||
---
|
||||
name: Fix/update alternative
|
||||
about: Fix or update an exsting alternative.
|
||||
title: "[FIX] Fix/update alternative"
|
||||
labels: 'fix'
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
[//]: # ( Fill out to the best of your ability. )
|
||||
[//]: # ( If an item is not applicable, feel free to leave it blank. )
|
||||
[//]: # ( Mark off checkbox items by putting an x in between the [ ] without spaces, i.e. `[x]` )
|
||||
|
||||
### Checklist
|
||||
|
||||
- [ ] **I have read the rules outlined in [CONTRIBUTING.md](https://github.com/tycrek/degoogle/blob/master/CONTRIBUTING.md)**
|
||||
- [ ] **Include my name in [CONTRIBUTORS.md](https://github.com/tycrek/degoogle/blob/master/CONTRIBUTORS.md)**
|
||||
- [ ] **I am affiliated with this alternative**
|
||||
|
||||
### Details
|
||||
|
||||
- **Alternative name**: Enter name here. Required
|
||||
- **Error**: Enter what might be wrong or what should be updated
|
||||
- **Proposed changes**: enter what you suggest should be added
|
||||
- **Additional details**: any additional details
|
|
@ -0,0 +1,46 @@
|
|||
---
|
||||
name: New alternative
|
||||
about: Add a new alternative for a Google service
|
||||
title: "[NEW] New alternative"
|
||||
labels: 'new'
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
[//]: # ( Fill out to the best of your ability. )
|
||||
[//]: # ( If an item is not applicable, such as HTTPS for an App, feel free to leave it blank. )
|
||||
[//]: # ( Mark off checkbox items by putting an x in between the [ ] without spaces, i.e. `[x]` )
|
||||
|
||||
### Checklist
|
||||
|
||||
- [ ] **I have read the rules outlined in [CONTRIBUTING.md](https://github.com/tycrek/degoogle/blob/master/CONTRIBUTING.md)**
|
||||
- [ ] **Include my name in [CONTRIBUTORS.md](https://github.com/tycrek/degoogle/blob/master/CONTRIBUTORS.md)**
|
||||
- [ ] **I am affiliated with this alternative**
|
||||
|
||||
### Details
|
||||
|
||||
- **General**
|
||||
- **Alternative name**: Alternative name here. Required
|
||||
- **Alternative URL**: Alternative URL here. Required
|
||||
- **5/9/14 eyes**: yes/no/unknown
|
||||
- **Description**: detail why this alternative should be added
|
||||
- **FLOSS**
|
||||
- Repository: link to source code repository
|
||||
- Active: yes/no (any branch in source repo active within past four months, excluding translations)
|
||||
- Download: F-Droid/Direct/Play Store (Direct is direct downloads, such as GitHub releases)
|
||||
- Price: free/paid/freemium (free: no payments at all; paid: no free tier excluding trials; freemium: any mix of free tier and paid plans)
|
||||
- Self-host: yes/no/only (use "only" if the only option is self hosting; for example, LibreOffice Online)
|
||||
- **Encryption**
|
||||
- HTTPS: yes/no
|
||||
- E2EE: yes/no/optional
|
||||
- Modern Encryption: yes/no
|
||||
- **Transparency**
|
||||
- Public ownership: yes/no [Parent company name](https://parent.company.url)
|
||||
- 3rd-party audits: yes/no [Link to audit history](https://audit.history.url)
|
||||
- **Privacy**
|
||||
- Anonymous payments: yes/no (these types of payments can include cash, cryptocurrency, gift cards)
|
||||
- Analytics: yes/no (type of analytics)
|
||||
- Captcha: recaptcha/hcaptcha/other
|
||||
- **Extras**
|
||||
- .onion address: .onion address
|
||||
- Warrant canary: yes/no [Link to canary](https://warrant.canary.url)
|
|
@ -0,0 +1,20 @@
|
|||
---
|
||||
name: Other
|
||||
about: Anything else that does not fit the other templates. Blank issues are not permitted.
|
||||
title: "[OTHER]"
|
||||
labels: 'other'
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
[//]: # ( Fill out to the best of your ability. )
|
||||
[//]: # ( If an item is not applicable, feel free to leave it blank. )
|
||||
[//]: # ( Mark off checkbox items by putting an x in between the [ ] without spaces, i.e. `[x]` )
|
||||
|
||||
### Checklist
|
||||
|
||||
- [ ] **I have read the rules outlined in [CONTRIBUTING.md](https://github.com/tycrek/degoogle/blob/master/CONTRIBUTING.md)**
|
||||
- [ ] **Include my name in [CONTRIBUTORS.md](https://github.com/tycrek/degoogle/blob/master/CONTRIBUTORS.md)**
|
||||
- [ ] **I am affiliated with this alternative**
|
||||
|
||||
### Details
|
|
@ -0,0 +1,23 @@
|
|||
---
|
||||
name: Remove alternative
|
||||
about: Provide details on why an existing alternative should be removed.
|
||||
title: "[REMOVE] Remove alternative"
|
||||
labels: 'remove'
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
[//]: # ( Fill out to the best of your ability. )
|
||||
[//]: # ( If an item is not applicable, feel free to leave it blank. )
|
||||
[//]: # ( Mark off checkbox items by putting an x in between the [ ] without spaces, i.e. `[x]` )
|
||||
|
||||
### Checklist
|
||||
|
||||
- [ ] **I have read the rules outlined in [CONTRIBUTING.md](https://github.com/tycrek/degoogle/blob/master/CONTRIBUTING.md)**
|
||||
- [ ] **Include my name in [CONTRIBUTORS.md](https://github.com/tycrek/degoogle/blob/master/CONTRIBUTORS.md)**
|
||||
- [ ] **I am affiliated with this alternative**
|
||||
|
||||
### Details
|
||||
|
||||
- **Alternative name**: Enter name here. Required
|
||||
- **Reason**: detail why this alternative should be removed. Include any relevant links
|
|
@ -1,15 +0,0 @@
|
|||
<!-- If your Pull Request is related to an alternative, make sure there is a corresponding Issue for discussion. -->
|
||||
|
||||
| Checklist | |
|
||||
| --------- | - |
|
||||
| **I have read the guidelines in [CONTRIBUTING.md]** | yes/no |
|
||||
| Include my name in [CONTRIBUTORS.md] | yes/no |
|
||||
| I am affiliated with this alternative (if applicable) | yes/no |
|
||||
|
||||
|
||||
### Details
|
||||
<!-- Optional if details exist in a linked Issue. If that is the case, link to the Issue here. -->
|
||||
|
||||
|
||||
[CONTRIBUTING.md]: ../blob/master/CONTRIBUTING.md
|
||||
[CONTRIBUTORS.md]: ../blob/master/CONTRIBUTORS.md
|
|
@ -0,0 +1,16 @@
|
|||
---
|
||||
name: New pull request
|
||||
about: Create a new pull request
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
[//]: # ( Every alternative in your pull request MUST have an linked issue)
|
||||
|
||||
### Checklist
|
||||
|
||||
- [ ] **I have read the rules outlined in [CONTRIBUTING.md](https://github.com/tycrek/degoogle/blob/master/CONTRIBUTING.md)**
|
||||
- [ ] **Include my name in [CONTRIBUTORS.md](https://github.com/tycrek/degoogle/blob/master/CONTRIBUTORS.md) (or I have added myself in this PR)**
|
||||
- [ ] **I am affiliated with this alternative (if applicable)**
|
|
@ -25,7 +25,7 @@ jobs:
|
|||
git add README.md
|
||||
git config --local user.email "action@github.com"
|
||||
git config --local user.name "GitHub Action"
|
||||
git commit --allow-empty -m "Generated README.md"
|
||||
git commit -m "Generated README.md"
|
||||
- name: Push
|
||||
uses: ad-m/github-push-action@master
|
||||
with:
|
||||
|
@ -37,4 +37,4 @@ jobs:
|
|||
REDDIT_USER: ${{ secrets.REDDIT_USER}}
|
||||
REDDIT_PASS: ${{ secrets.REDDIT_PASS}}
|
||||
REDDIT_CLIENT_ID: ${{ secrets.REDDIT_CLIENT_ID}}
|
||||
REDDIT_CLIENT_SECRET: ${{ secrets.REDDIT_CLIENT_SECRET}}
|
||||
REDDIT_CLIENT_SECRET: ${{ secrets.REDDIT_CLIENT_SECRET}}
|
|
@ -1,35 +1,20 @@
|
|||
# Contributing
|
||||
|
||||
###### Last revised: August 9th, 2021
|
||||
###### Last revised: September 29th, 2020
|
||||
|
||||
###### Templates revised: August 9th, 2021
|
||||
|
||||
## General rules
|
||||
## General
|
||||
|
||||
1. **English only** for issues & pull requests.
|
||||
2. **Do not edit `README.md`!** This file is automatically generated.
|
||||
3. Personal opinions will **not** be considered when adding or removing an alternative. Instead, provide links to articles with details.
|
||||
4. **Use the templates** when submitting an Issue or Pull Request. Blank Issues/PRs are not allowed.
|
||||
2. As of May 25 2020, the `README.md` file is **automatically generated**. Instead, edit anything in `yaml/` or `md/`.
|
||||
3. Limit yourself to **one** alternative per Issue. A pull request can have multiple alternatives as long as there is an Issue for each.
|
||||
4. Personal opinions will **not** be considered when adding or removing an alternative. Instead, provide links to articles with details.
|
||||
5. If you submitted a change that made it into the guide but don't have your Reddit or GitHub username in the [CONTRIBUTORS.md](https://github.com/tycrek/degoogle/blob/master/CONTRIBUTORS.md) list, open an issue or pull request so we can fix it, or update your existing issue with the request. Alternatively, if your username is on the list and you do *not* want it there, feel free to request this as well.
|
||||
|
||||
## How to submit a change
|
||||
## Issue & pull request templates
|
||||
|
||||
### A: I am not familiar with GitHub or Pull Requests
|
||||
1. Using the templates is **required**. Blank issues or pull requests are not allowed. Circumventing this by removing the text from a template will result in your Issue being closed without question.
|
||||
2. Not every field is required but fill out as much info as you can. This makes it easier for maintainers to quickly approve changes.
|
||||
|
||||
1. Open a [new Issue].
|
||||
2. Select a template to use. If in doubt, use **Other**.
|
||||
3. Fill out the information to the best of your ability.
|
||||
4. When you are finished, click **Submit new issue**.
|
||||
## Pull requests
|
||||
|
||||
### B: I have used GitHub Pull Requests
|
||||
|
||||
1. Create your Pull Request with your changes.
|
||||
- Remember to **not** edit `README.md`!
|
||||
- As with Issues, fill out the template as best you can.
|
||||
2. For PR's relating to alternatives, please follow the steps above to also create an Issue for discussion. Simple PR's that are unrelated to a specific alternative may not require an Issue. If in doubt, create an **Other** Issue.
|
||||
|
||||
## I contributed but I am not in the list (or) I do not want to be in the list anymore
|
||||
|
||||
If you submitted a change that made it into the guide but don't have your Reddit or GitHub username in the [CONTRIBUTORS.md] list, open an issue or pull request so I can fix it. Alternatively, if your username is on the list and you do *not* want it there, feel free to request this as well.
|
||||
|
||||
[new Issue]: https://github.com/tycrek/degoogle/issues/new/choose
|
||||
[CONTRIBUTORS.md]: https://github.com/tycrek/degoogle/blob/master/CONTRIBUTORS.md
|
||||
1. All pull requests **must** have an issue linked for discussion. Pull requests can become cluttered very quickly and are not a good place for discussion.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
Thanks to everyone here for contributing in some way! (usernames are in no particular order).
|
||||
|
||||
### GitHub:
|
||||
GitHub:
|
||||
|
||||
- [Fabian Cook](https://github.com/fabiancook)
|
||||
- [Alexander Schaap](https://github.com/aschaap)
|
||||
|
@ -40,12 +40,14 @@ Thanks to everyone here for contributing in some way! (usernames are in no parti
|
|||
- [@notpushkin](https://github.com/notpushkin)
|
||||
- [@onlyjob](https://github.com/onlyjob)
|
||||
- [@marco3mt](https://github.com/marco3mt)
|
||||
- [@FreddyMarsden](https://github.com/FreddyMarsden)
|
||||
- [@E5dZEUpc3BKaJrHnQVZd5zE](https://github.com/E5dZEUpc3BKaJrHnQVZd5zE)
|
||||
- [@woutfeys](https://github.com/woutfeys)
|
||||
- [@virtadpt](https://github.com/virtadpt)
|
||||
- [@compressstudio](https://github.com/compressstudio)
|
||||
- [@PalmoliveDev](https://github.com/PalmoliveDev)
|
||||
- [@mahdi1234](https://github.com/mahdi1234)
|
||||
- [@codingepaduli](https://github.com/codingepaduli)
|
||||
- [@kdkasad](https://github.com/kdkasad)
|
||||
- [@resto1231](https://githgithub.com/resto1231)
|
||||
- [@kdrag0n](https://github.com/kdrag0n)
|
||||
|
@ -57,37 +59,9 @@ Thanks to everyone here for contributing in some way! (usernames are in no parti
|
|||
- [@m0yP](https://github.com/m0yP)
|
||||
- [@mceachen](https://github.com/mceachen)
|
||||
- [@adam-sroka](https://github.com/adam-sroka)
|
||||
- [@freddy-m](https://github.com/freddy-m)
|
||||
- [@Cristy94](https://github.com/Cristy94)
|
||||
- [@rkingett](https://github.com/rkingett)
|
||||
- [@komape](https://github.com/komape)
|
||||
- [@jefersonralmeida](https://github.com/jefersonralmeida)
|
||||
- [@codedust](https://github.com/codedust)
|
||||
- [@shivasagarrao](https://github.com/shivasagarrao)
|
||||
- [@0xflotus](https://github.com/0xflotus)
|
||||
- [@J053Fabi0](https://github.com/J053Fabi0)
|
||||
- [@trexx](https://github.com/trexx)
|
||||
- [@anthonynsimon](https://github.com/anthonynsimon)
|
||||
- [@timbuening](https://github.com/timbuening)
|
||||
- [@infectormp](https://github.com/infectormp)
|
||||
- [@vivekmiyani](https://github.com/vivekmiyani)
|
||||
- [@evrifaessa](https://github.com/evrifaessa)
|
||||
- [@MahbodHastam](https://github.com/MahbodHastam)
|
||||
- [@aa1874](https://github.com/aa1874)
|
||||
- [@bgrgndzz](https://github.com/bgrgndzz)
|
||||
- [@samcross021](https://github.com/samcross021)
|
||||
- [@Shahin-rmz](https://github.com/Shahin-rmz)
|
||||
- [@vishnukvmd](https://github.com/vishnukvmd)
|
||||
- [@Joshuasony](https://github.com/Joshuasony)
|
||||
- [@BobIsMyManager](https://github.com/BobIsMyManager)
|
||||
- [@itforweb666](https://github.com/itforweb666)
|
||||
- [@seanking2919](https://github.com/seanking2919)
|
||||
- [@FireMasterK](https://github.com/FireMasterK)
|
||||
- [@julianfairfax](https://github.com/julianfairfax)
|
||||
- [@ACK-J](https://github.com/ACK-J)
|
||||
- [@joebudi](https://github.com/joebudi)
|
||||
- [@m0yP](https://github.com/m0yP)
|
||||
|
||||
### Reddit:
|
||||
Reddit:
|
||||
|
||||
- u/SheepKid12
|
||||
- u/yieldingTemporarily
|
||||
|
|
|
@ -14,9 +14,8 @@ Official mirrors are the main sources and are maintained by me (@tycrek). Commun
|
|||
|
||||
- [GitLab mirror](https://gitlab.com/SheepKid12/degoogle) from u/SheepKid12
|
||||
- [Gitea mirror](https://git.xerbo.net/Xerbo/degoogle) from [@Xerbo](https://github.com/Xerbo)
|
||||
- [Gitea mirror](https://git.mirkodi.tech/mirk0dex/degoogle) from [@mirk0dex (Gitea)](https://git.mirkodi.tech/mirk0dex)
|
||||
- [BookRefine Publishing](https://bookrefine.com/degoogle/) (thanks @GreyLivesMatter for the updated link)
|
||||
|
||||
## Non-english mirrors
|
||||
|
||||
- [Turkish/Türk](https://github.com/melikechan/degoogle-turkish) from [@melikechan](https://github.com/melikechan)
|
||||
- [Italian/Italiano](https://gitea.it/devol/degooglizzazione) from [@devol (Gitea)](https://gitea.it/devol)
|
||||
- [German/Deutsch](https://github.com/arentro/degoogle_german) from [@arentro](https://github.com/arentro)
|
||||
|
|
151
_build.js
151
_build.js
|
@ -1,6 +1,6 @@
|
|||
// Build tool for generating README.md
|
||||
|
||||
const { EOL } = require('os');
|
||||
const os = require('os');
|
||||
const path = require('path');
|
||||
const fs = require('fs-extra');
|
||||
const moment = require('moment');
|
||||
|
@ -24,11 +24,43 @@ const BUILD_SECTION = {
|
|||
news: () => generatePublications('News articles', 'news'),
|
||||
lighterSide: () => readFile('md/_lighterSide.md'),
|
||||
closingRemarks: () => readFile('md/_closingRemarks.md')
|
||||
};
|
||||
}
|
||||
|
||||
// Button that brings the user to the top of the page
|
||||
const BACK_TO_TOP = '[![Back to top](https://img.shields.io/badge/Back%20to%20top-lightgrey?style=flat-square)](#index)';
|
||||
|
||||
/**
|
||||
* Main method
|
||||
*/
|
||||
function __main__() {
|
||||
// dgSectionData will be join at the end and represents the full contents of README.md
|
||||
let dgSectionData = [];
|
||||
|
||||
// Add all the sections
|
||||
dgSectionData.push(BUILD_SECTION.header());
|
||||
dgSectionData.push(BUILD_SECTION.index());
|
||||
dgSectionData.push(BUILD_SECTION.contributing());
|
||||
dgSectionData.push(BUILD_SECTION.browserExtensions());
|
||||
dgSectionData.push(BUILD_SECTION.disclaimer());
|
||||
dgSectionData.push(BUILD_SECTION.webBasedProducts());
|
||||
dgSectionData.push(BUILD_SECTION.operatingSystems());
|
||||
dgSectionData.push(BUILD_SECTION.desktopApps());
|
||||
dgSectionData.push(BUILD_SECTION.mobileApps());
|
||||
dgSectionData.push(BUILD_SECTION.hardware());
|
||||
dgSectionData.push(BUILD_SECTION.useful());
|
||||
dgSectionData.push(BUILD_SECTION.resources());
|
||||
dgSectionData.push(BUILD_SECTION.books());
|
||||
dgSectionData.push(BUILD_SECTION.blogs());
|
||||
dgSectionData.push(BUILD_SECTION.news());
|
||||
dgSectionData.push(BUILD_SECTION.lighterSide());
|
||||
dgSectionData.push(BUILD_SECTION.closingRemarks());
|
||||
|
||||
// Write to the README file
|
||||
fs.writeFileSync(path.join(__dirname, 'README.md'), dgSectionData.join(os.EOL + os.EOL));
|
||||
|
||||
console.log('Done!');
|
||||
}
|
||||
|
||||
/**
|
||||
* Synchronously reads a file using fs-extra and path.join()
|
||||
* @param {String} filename The file to read
|
||||
|
@ -51,7 +83,14 @@ function readYaml() {
|
|||
*/
|
||||
function generateCategorySection(header, data) {
|
||||
if (!data) return '';
|
||||
return `## ${header}${EOL}${BACK_TO_TOP}${EOL}${EOL}`.concat(Object.values(data).map((value) => `${generateServiceSection(value)}${EOL}${EOL}`).join(''))
|
||||
|
||||
// Set the header to HTML <h5>
|
||||
let categorySection = '## ' + header + os.EOL + BACK_TO_TOP + os.EOL + os.EOL;
|
||||
|
||||
// Generate service sections for this category
|
||||
Object.keys(data).forEach((key) => categorySection = categorySection.concat(generateServiceSection(data[key]) + os.EOL + os.EOL));
|
||||
|
||||
return categorySection;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -60,50 +99,36 @@ function generateCategorySection(header, data) {
|
|||
*/
|
||||
function generateServiceSection(data) {
|
||||
// Start the section with an <h4> header
|
||||
let serviceSection = `#### ${data[0].title + EOL + EOL}`;
|
||||
|
||||
// Prep section notes
|
||||
let notes = EOL + '';
|
||||
|
||||
let serviceSection = `#### ${data[0].title + os.EOL + os.EOL}`;
|
||||
let notes = os.EOL + '';
|
||||
// If there is data to be displayed, add the start of a Markdown table
|
||||
const tableHeader = (data.filter((d) => 'name' in d).length === 0)
|
||||
? `No known alternatives.${EOL}`
|
||||
: `| Name | Eyes | Description |${EOL}| ---- | ---- | ----------- |${EOL}`;
|
||||
|
||||
// Add the header to the section body
|
||||
let tableHeader = `| Name | Eyes | Description |${os.EOL}| ---- | ---- | ----------- |${os.EOL}`;
|
||||
if (data.filter(d => 'name' in d).length == 0) tableHeader = `No known alternatives.${os.EOL}`;
|
||||
serviceSection = serviceSection.concat(tableHeader);
|
||||
|
||||
// Iterate over each alternative service and add it to the table
|
||||
data.forEach((item) => {
|
||||
|
||||
data.forEach(item => {
|
||||
// If the object has length one, it's either title or note
|
||||
if (Object.keys(item).length == 1) {
|
||||
if (!item.notes) return;
|
||||
else item.notes.forEach((note) => notes = notes.concat(`- *${note.trim()}*${EOL}`));
|
||||
else item.notes.forEach((note) => notes = notes.concat(`- *${note.trim()}*${os.EOL}`));
|
||||
} else {
|
||||
|
||||
// Build the cells for the table
|
||||
let name = `[${item.name}](${item.url})`;
|
||||
let eyes = item.eyes ? `**${item.eyes}-eyes**` : '';
|
||||
let text = item.text.trim();
|
||||
|
||||
// Append the F-Droid badge to the name
|
||||
if (item.fdroid) name = name.concat('<br/>', fdroidLink(item.fdroid));
|
||||
|
||||
// Append the Repo badge to the name
|
||||
if (item.repo) name = name.concat('<br/>', repoLink(item.repo));
|
||||
|
||||
// Append the Star badge to the name
|
||||
if (item.repo) name = name.concat('<br/>', starBadge(item.repo));
|
||||
if (item.fdroid) name = name.concat(' ' + fdroidLink(item.fdroid));
|
||||
|
||||
// Build the row
|
||||
const tableItem = `| ${name} | ${eyes} | ${text} |${EOL}`;
|
||||
let tableItem = `| ${name} | ${eyes} | ${text} |`;
|
||||
|
||||
// Add the row to the table
|
||||
serviceSection = serviceSection.concat(tableItem);
|
||||
serviceSection = serviceSection.concat(tableItem + os.EOL);
|
||||
}
|
||||
});
|
||||
return `${serviceSection}${notes}`;
|
||||
|
||||
return serviceSection + notes;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -111,30 +136,7 @@ function generateServiceSection(data) {
|
|||
* @param {String} appId The package identifier on F-Droid
|
||||
*/
|
||||
function fdroidLink(appId) {
|
||||
return `[![F-Droid](https://img.shields.io/f-droid/v/${appId}?style=flat-square&logo=f-droid)](https://f-droid.org/en/packages/${appId}/)`;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a badge acting as a link to a source repository for an app.
|
||||
* @param {String} repo The repository url
|
||||
*/
|
||||
function repoLink(repo) {
|
||||
const repoURL = new URL(repo);
|
||||
let repoHost = path.basename(repoURL.hostname, path.extname(repoURL.hostname));
|
||||
if (repoHost.includes(".")) repoHost = path.extname(repoHost).replace(".", "");
|
||||
return `[![Repo](https://img.shields.io/badge/open-source-3DA639?style=flat-square&logo=${repoHost})](${repo})`;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a badge displaying the number of GitHub Stars for a repository.
|
||||
* @param {String} repo The repository url
|
||||
*/
|
||||
function starBadge(repo) {
|
||||
if (repo.startsWith('https://github.com/')) {
|
||||
const [user, repoName] = repo.split('github.com/')[1].split('/');
|
||||
if (!repoName || repoName === '') return '';
|
||||
return `![GitHub Repo stars](https://img.shields.io/github/stars/${user}/${repoName}?logo=github&style=flat-square)`;
|
||||
} else return '';
|
||||
return `[![F-Droid](https://img.shields.io/f-droid/v/${appId}?style=flat-square)](https://f-droid.org/en/packages/${appId}/)`;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -142,7 +144,9 @@ function starBadge(repo) {
|
|||
* @param {String} link URL to extension WITHOUT trailing slash
|
||||
*/
|
||||
function addonLink(link) {
|
||||
return (link.includes('addons.mozilla.org')) ? `![Mozilla Add-on](https://img.shields.io/amo/users/${link.split('/').pop()}?style=flat-square)` : '';
|
||||
if (!link.includes('addons.mozilla.org')) return '';
|
||||
let addonId = link.split('/')[link.split('/').length - 1]
|
||||
return `![Mozilla Add-on](https://img.shields.io/amo/users/${addonId}?style=flat-square)`;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -150,29 +154,46 @@ function addonLink(link) {
|
|||
* @param {String|Number} date Date of publication
|
||||
*/
|
||||
function dateBadge(date) {
|
||||
return `![Published](https://img.shields.io/badge/${date.toString().replace(/\-/g, '--')}-informational?style=flat-square)`;
|
||||
return `![Published](https://img.shields.io/badge/${date.toString().replace(/\-/g, '--')}-informational?style=flat-square)`
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates a table with browser extensions and their descriptions
|
||||
*/
|
||||
function generateBrowserExtensions() {
|
||||
return `# Browser extensions${EOL + EOL}| Name | Description |${EOL}| ---- | ----------- |${EOL}`
|
||||
.concat(YAML.parse(fs.readFileSync(path.join(__dirname, 'yaml/browserExtensions.yml')).toString())
|
||||
.map(({ name, text, url }) => `| [${name}](${url}) ${addonLink(url)} | ${text.trim()} |${EOL}`).join(''));
|
||||
let extensions = `# Browser extensions${os.EOL + os.EOL}| Name | Description |${os.EOL}| ---- | ----------- |${os.EOL}`;
|
||||
let data = YAML.parse(fs.readFileSync(path.join(__dirname, 'yaml/browserExtensions.yml')).toString());
|
||||
data.forEach(item => {
|
||||
let name = `[${item.name}](${item.url})`;
|
||||
let text = item.text.trim();
|
||||
let badge = addonLink(item.url);
|
||||
|
||||
let tableItem = `| ${name + ' ' + badge} | ${text} |`;
|
||||
|
||||
extensions = extensions.concat(tableItem + os.EOL);
|
||||
});
|
||||
|
||||
return extensions;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates sections for Books, Blogs, and News
|
||||
* @param {String} pubTitle
|
||||
* @param {String} title
|
||||
* @param {String} filename
|
||||
*/
|
||||
function generatePublications(pubTitle, filename) {
|
||||
return `## ${pubTitle} ${EOL + BACK_TO_TOP + EOL + EOL}| Title | Published | Author |${EOL}| ----- | --------- | ------ |${EOL}`
|
||||
.concat(YAML.parse(fs.readFileSync(path.join(__dirname, `yaml/${filename}.yml`)).toString())
|
||||
.map(({ title, url, date, author }) => `| [${title}](${url}) | ${dateBadge(date)} | ${author.trim()} |${EOL}`).join(''));
|
||||
function generatePublications(title, filename) {
|
||||
let publications = `## ${title} ${os.EOL + BACK_TO_TOP + os.EOL + os.EOL}| Title | Published | Author |${os.EOL}| ----- | --------- | ------ |${os.EOL}`;
|
||||
let data = YAML.parse(fs.readFileSync(path.join(__dirname, `yaml/${filename}.yml`)).toString());
|
||||
data.forEach(item => {
|
||||
let name = `[${item.title}](${item.url})`;
|
||||
let author = item.author.trim();
|
||||
|
||||
let tableItem = `| ${name} | ${dateBadge(item.date)} | ${author} |`;
|
||||
|
||||
publications = publications.concat(tableItem + os.EOL);
|
||||
});
|
||||
|
||||
return publications;
|
||||
}
|
||||
|
||||
// ! Generate README.md
|
||||
fs.writeFileSync(path.join(__dirname, 'README.md'), Object.values(BUILD_SECTION).map((section) => section()).join(`${EOL}${EOL}`));
|
||||
console.log('Done!');
|
||||
__main__();
|
85
_wiki.js
85
_wiki.js
|
@ -4,75 +4,88 @@ const fetch = require('node-fetch'); // Make calls to Reddit from Node.js
|
|||
const qs = require('qs'); // Properly build a query for node-fetch POST
|
||||
const moment = require('moment'); // Time-related functions
|
||||
|
||||
//#region constants
|
||||
|
||||
// REDDIT_: For authentication with Reddit API. Oauth MUST be used. ID and Secret come from a "script" app type.
|
||||
const REDDIT_USER = process.env.REDDIT_USER || 'username';
|
||||
const REDDIT_PASS = process.env.REDDIT_PASS || 'password';
|
||||
const REDDIT_CLIENT_ID = process.env.REDDIT_CLIENT_ID || 'clientid';
|
||||
const REDDIT_CLIENT_SECRET = process.env.REDDIT_CLIENT_SECRET || 'clientsecret';
|
||||
|
||||
// Initial basic authorization for getting the Oauth token
|
||||
const BASIC_AUTH = `Basic ${Buffer.from(REDDIT_CLIENT_ID + ':' + REDDIT_CLIENT_SECRET).toString('base64')}`;
|
||||
|
||||
// WIKI_: For the Reddit Wiki
|
||||
const WIKI_SUBREDDIT = 'privacy';
|
||||
const WIKI_PAGE = 'de-google';
|
||||
const WIKI_REASON = 'Automated edit from GitHub repo: https://github.com/tycrek/degoogle';
|
||||
|
||||
// Endpoints for each of our fetches to Reddit
|
||||
const ENDPOINTS = {
|
||||
revisions: `https://old.reddit.com/r/${WIKI_SUBREDDIT}/wiki/revisions/${WIKI_PAGE}.json`,
|
||||
token: 'https://www.reddit.com/api/v1/access_token',
|
||||
edit: `https://oauth.reddit.com/r/${WIKI_SUBREDDIT}/api/wiki/edit`
|
||||
};
|
||||
|
||||
// Helps POST data be submitted properly
|
||||
const CONTENT_TYPE = 'application/x-www-form-urlencoded';
|
||||
//#endregion
|
||||
|
||||
// Update the wiki
|
||||
Promise.all([getLastRevision(), getToken()])
|
||||
.then(([lastId, token]) => putWiki(lastId, token))
|
||||
.catch((err) => (console.error(err), process.exit(1)));
|
||||
updateWiki();
|
||||
|
||||
//#region functions
|
||||
/**
|
||||
* Update the Reddit wiki
|
||||
*/
|
||||
function updateWiki() {
|
||||
// Endpoints for each of our fetches to Reddit
|
||||
let endpoints = {
|
||||
revisions: `https://old.reddit.com/r/${WIKI_SUBREDDIT}/wiki/revisions/${WIKI_PAGE}.json`,
|
||||
token: 'https://www.reddit.com/api/v1/access_token',
|
||||
edit: `https://oauth.reddit.com/r/${WIKI_SUBREDDIT}/api/wiki/edit`
|
||||
};
|
||||
|
||||
// Initial basic authorization for getting the Oauth token
|
||||
let basicAuth = `Basic ${Buffer.from(REDDIT_CLIENT_ID + ':' + REDDIT_CLIENT_SECRET).toString('base64')}`;
|
||||
|
||||
let lastId, token;
|
||||
|
||||
getLastRevision(endpoints.revisions)
|
||||
.then((mLastId) => lastId = mLastId)
|
||||
.then(() => getToken(endpoints.token, basicAuth))
|
||||
.then((mToken) => token = mToken)
|
||||
.then(() => putWiki(endpoints.edit, lastId, token))
|
||||
.catch((err) => (console.error(err), process.exit(1)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the last revision ID on the Wiki. Required otherwise editing the wiki fails
|
||||
* @param {String} endpoint Endpoint of where to get the ID's
|
||||
*/
|
||||
function getLastRevision() {
|
||||
return new Promise((resolve, reject) =>
|
||||
fetch(ENDPOINTS.revisions)
|
||||
function getLastRevision(endpoint) {
|
||||
return new Promise((resolve, reject) => {
|
||||
fetch(endpoint)
|
||||
.then((response) => response.json())
|
||||
.then((json) => json.data.children[0].id) // children[0] is the most recent edit
|
||||
.then(resolve)
|
||||
.catch(reject));
|
||||
.then((lastId) => resolve(lastId))
|
||||
.catch((err) => reject(err));
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets an Oauth token used to edit the Wiki
|
||||
* @param {String} endpoint Endpoint of where to get the token
|
||||
* @param {String} auth Initial authorization data to get the better Oauth data
|
||||
*/
|
||||
function getToken() {
|
||||
return new Promise((resolve, reject) =>
|
||||
fetch(ENDPOINTS.token, {
|
||||
function getToken(endpoint, auth) {
|
||||
return new Promise((resolve, reject) => {
|
||||
fetch(endpoint, {
|
||||
method: 'POST',
|
||||
headers: { 'Authorization': BASIC_AUTH, 'Content-Type': CONTENT_TYPE },
|
||||
headers: { 'Authorization': auth, 'Content-Type': CONTENT_TYPE },
|
||||
body: qs.stringify({ grant_type: 'password', username: REDDIT_USER, password: REDDIT_PASS })
|
||||
})
|
||||
.then((response) => response.json())
|
||||
.then(({ access_token }) => resolve(access_token))
|
||||
.catch(reject));
|
||||
.then((json) => json.access_token)
|
||||
.then((token) => resolve(token))
|
||||
.catch((err) => reject(err));
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Post the contents from the README into the wiki
|
||||
* @param {String} endpoint Endpoint for editing the wiki
|
||||
* @param {String} lastId Revision ID for the Wiki
|
||||
* @param {String} token Oauth token for authenticating with the Reddit API
|
||||
*/
|
||||
function putWiki(lastId, token) {
|
||||
return new Promise((resolve, reject) =>
|
||||
fetch(ENDPOINTS.edit, {
|
||||
function putWiki(endpoint, lastId, token) {
|
||||
return new Promise((resolve, reject) => {
|
||||
fetch(endpoint, {
|
||||
method: 'POST',
|
||||
headers: { 'Authorization': `bearer ${token}`, 'Content-Type': CONTENT_TYPE },
|
||||
body: qs.stringify({
|
||||
|
@ -84,10 +97,11 @@ function putWiki(lastId, token) {
|
|||
})
|
||||
.then((response) => response.json())
|
||||
.then((json) => {
|
||||
if (Object.keys(json).length === 0) resolve();
|
||||
if (Object.keys(json).length == 0) resolve();
|
||||
else throw Error(json);
|
||||
})
|
||||
.catch(reject));
|
||||
.catch((err) => reject(err));
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -103,5 +117,4 @@ function fixContent(content) {
|
|||
content = content.replace(/-informational\?style=flat-square\)/g, '**');
|
||||
|
||||
return content;
|
||||
} // * If this is highlighted weirdly, it's because of the 'updated timestamp' regex, don't worry about it
|
||||
//#endregion
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
okay?
|
|
@ -4,8 +4,4 @@ It's a shame that Google, with their immense resources, power, and influence, do
|
|||
|
||||
Hopefully this guide can serve as a starting point for those new to privacy, or be a good refresher for the experts.
|
||||
|
||||
Good luck and stay safe!
|
||||
|
||||
## Stargazers over time
|
||||
|
||||
[![Stargazers over time](https://starchart.cc/tycrek/degoogle.svg)](https://starchart.cc/tycrek/degoogle)
|
||||
Good luck and stay safe!
|
|
@ -9,4 +9,4 @@ If you want to help out with the project, here are some ideas (submit **Issues**
|
|||
- Host a mirror or clone the [repo](https://github.com/tycrek/degoogle). If you host a mirror, let me know and I can add it to the mirrors list.
|
||||
- Anything else relating to any part of this guide, whether it's Google related or not.
|
||||
|
||||
When contributing, **please follow the rules outlined in [CONTRIBUTING.md](https://github.com/tycrek/degoogle/blob/master/CONTRIBUTING.md)**.
|
||||
When contributing, **please try to follow the rules outlined in [CONTRIBUTING.md](https://github.com/tycrek/degoogle/blob/master/CONTRIBUTING.md)**.
|
|
@ -3,16 +3,11 @@
|
|||
### *Disclaimer*
|
||||
|
||||
1. Only **privacy/security** focused alternatives will be suggested.
|
||||
2. Many replacements are based off [this Wikipedia article (List of Google products)][wiki]
|
||||
2. Many replacements are based off [this Wikipedia article (List of Google products)](https://en.wikipedia.org/wiki/List_of_Google_products)
|
||||
3. Products from companies such as Microsoft, Apple, Yahoo, Amazon, etc. will *not* be recommended unless there is a very good reason to. This includes companies/apps/services they own.
|
||||
4. Controversial services will have a disclaimer attached if needed.
|
||||
5. [5-eyes, 9-eyes, and 14-eyes][eyes] services will be listed and marked as such. Both the location the company is registered and the server IP are taken into consideration.
|
||||
|
||||
| Eyes | Countries |
|
||||
| :--: | :---------: |
|
||||
| **5** | Australia, Canada, New Zealand, UK, USA |
|
||||
| **9** | Denmark, France, Netherlands, Norway |
|
||||
| **14** | Germany, Belgium, Italy, Sweden, Spain |
|
||||
|
||||
[wiki]: https://en.wikipedia.org/wiki/List_of_Google_products
|
||||
[eyes]: https://restoreprivacy.com/5-eyes-9-eyes-14-eyes/#h-five-eyes
|
||||
5. 5-eyes, 9-eyes, and 14-eyes services **will** be listed, and marked as such. This means the company, not the server IP.
|
||||
- **5**: Australia, Canada, New Zealand, UK, USA
|
||||
- **9**: Denmark, France, Netherlands, Norway
|
||||
- **14**: Germany, Belgium, Italy, Sweden, Spain
|
||||
- [What are 5-eyes, 9-eyes, and 14-eyes?](https://www.privacytools.io/providers/#ukusa)
|
||||
|
|
|
@ -9,10 +9,9 @@
|
|||
- *Shoshana Zuboff on surveillance capitalism | VPRO Documentary* - [Invidious instance](https://yewtu.be/watch?v=hIXhnWUmMvw) and [Hooktube](https://hooktube.com/watch?v=hIXhnWUmMvw)
|
||||
- Podcasts:
|
||||
- [Darknet Diaries](https://darknetdiaries.com/) (by Jack Rhysider) - Highlights real-life hackers and their stories. Covers privacy topics a fair bit.
|
||||
- [The WAN Show](https://youtube.com/playlist?list=PL8mG-RkN2uTw7PhlnAr4pZZz2QubIbujH) (Linus Tech Tips) - Not specifically privacy, but they cover all sorts of tech news.
|
||||
- [The WAN Show](https://linustechtips.libsyn.com/) (Linus Tech Tips) - Not specifically privacy, but they cover all sorts of tech news.
|
||||
- [The Privacy, Security, & OSINT Show](https://inteltechniques.com/podcast.html) - "This weekly podcast presents ideas to help you become digitally invisible, stay secure from cyber threats, and make you a better online investigator."
|
||||
- [Security Now!](https://www.grc.com/SecurityNow.htm) - "TechTV's Leo Laporte and I spend somewhat shy of two hours each week to discuss important issues of personal computer security." (Thanks u/Abaddon182)
|
||||
- [Surveillance Report](https://surveillancereport.tech/) - "Weekly security and privacy news - Presented by Techlore & The New Oil "
|
||||
- Other:
|
||||
- [xkcd](https://xkcd.com/) - They have comics for *everything*.
|
||||
- System32 Comics [Instagram](https://www.instagram.com/system32comics/) and [Reddit](https://www.reddit.com/r/System32Comics/) - Comedic computer comics.
|
||||
|
|
|
@ -1,58 +1,37 @@
|
|||
## Resources
|
||||
|
||||
Everything you need to become a privacy wizard. This section has two subsections: The first has links with self-explanatory titles, the second has more detailed descriptions.
|
||||
Everything you need to become a Privacy Wizard.
|
||||
|
||||
#### Subsection 1
|
||||
|
||||
- [Android Privacy Guide - Take Control Of Your Data (GitLab)](https://gitlab.com/Attedz/AndroidPrivacyGuide)
|
||||
- [DuckDuckGo's privacy newsletter](https://duckduckgo.com/newsletter)
|
||||
- [EFF's Surveillance Self-Defense (eff.org)](https://ssd.eff.org/)
|
||||
- [Everything You Need to Know About Password Managers](https://outline.com/NC69FD)
|
||||
- [Firefox: Privacy Related "about:config" Tweaks](https://privacyguides.org/browsers/#about_config)
|
||||
- [Privacy Tools](https://www.privacytools.io/) (thanks u/yieldingTemporarily)
|
||||
- [ethical.net](https://ethical.net/) (thanks u/yieldingTemporarily)
|
||||
- [AlternativeTo](https://alternativeto.net/) - Find alternatives for software. Used extensively to build this guide. Also check out [Switching.software](https://switching.software/) (thanks @mynamesleon)
|
||||
- [Framasoft](https://framasoft.org/en/) - Lots of alternatives and software. Too many to fit into the list. Also check out [this link](https://degooglisons-internet.org/en/). Thanks @NicolasPA
|
||||
- [r/Privacy wiki](https://old.reddit.com/r/privacy/wiki/index)
|
||||
- [r/VPN](https://old.reddit.com/r/VPN/) - Read the sidebar and [wiki](https://old.reddit.com/r/VPN/wiki/index) to learn more about why you should consider using a VPN. I personally use [Mullvad](https://mullvad.net) but do your own research before choosing.
|
||||
- [Four Methods to Create a Secure Password You'll Actually Remember](https://outline.com/XuMTFA)
|
||||
- [How to create a strong password (and remember it)](https://outline.com/dqfuqL)
|
||||
- [How to delete remembered passwords (WikiHow)](http://www.wikihow.com/Delete-Remembered-Passwords)
|
||||
- [How to disable Telemetry and Data Collection in Windows 10 (Winaero)](https://winaero.com/blog/how-to-disable-telemetry-and-data-collection-in-windows-10/)
|
||||
- [How to permanently delete a Facebook account (Delete Facebook)](https://deletefacebook.com/).
|
||||
- [How to permanently delete a Facebook account (WikiHow)](https://www.wikihow.com/Permanently-Delete-a-Facebook-Account)
|
||||
- [HTTP vs. HTTPS: What's the Difference and Why Should You Care? (Entrepreneur)](https://www.entrepreneur.com/article/281633)
|
||||
- [Linux workstation security checklist (GitHub)](https://github.com/lfit/itpol/blob/master/linux-workstation-security.md)
|
||||
- [Manage Windows 10 Telemetry and Data Collection settings (The Windows Club)](https://www.thewindowsclub.com/windows-10-telemetry)
|
||||
- [Multi-factor authentication (Wikipedia)](https://en.wikipedia.org/wiki/Multi-factor_authentication)
|
||||
- [Remove bloatware from Android without root (XDA)](https://www.xda-developers.com/uninstall-carrier-oem-bloatware-without-root-access/)
|
||||
- [Spread Privacy - The Official DuckDuckGo Blog](https://spreadprivacy.com/)
|
||||
- [The what, why, and when of multi-factor authentication (MFA)](https://outline.com/8gL8ZG)
|
||||
- [They Track You: A website to raise awareness of online privacy (TheyTrackYou.com)](https://theytrackyou.com/)
|
||||
- [user.js - Firefox configuration hardening (GitHub)](https://github.com/pyllyukko/user.js)
|
||||
- [What are 5-eyes, 9-eyes, and 14-eyes? (RestorePrivacy)](https://restoreprivacy.com/5-eyes-9-eyes-14-eyes/)
|
||||
- [What is GDPR and how will it affect you? (Outline/The Guardian)](https://outline.com/exmSpf)
|
||||
- [What is GDPR? Everything you need to know about the new EU data laws (Outline/TechRadar)](https://outline.com/6sjd76)
|
||||
- [What is Tor and should I use it?](https://outline.com/JRCscH)
|
||||
- [Why You Really Should Put Tape Over Your Webcam](https://outline.com/fYCu98)
|
||||
- [Windows 10 Privacy Guide (fdossena.com)](https://fdossena.com/?p=w10debotnet/index_1903.frag)
|
||||
- [7 Reasons to Use a Third-Party DNS Service](https://outline.com/8jsWXw)
|
||||
- Use [DNSPerf](https://www.dnsperf.com/#!dns-resolvers) to see which one is fastest for you.
|
||||
|
||||
#### Subsection 2
|
||||
|
||||
- [AlternativeTo](https://alternativeto.net/) is a free service that helps you find better alternatives to the products you love and hate. Used extensively to build this guide.
|
||||
- [block-all-google.sh](https://github.com/wesaphzt/block-all-google) is a script for blocking everything Google at the network level. This can and probably will break other alternatives that rely on Google to serve content.
|
||||
- [Databunker](https://databunker.org/) is a network-based, self-hosted, GDPR compliant, secure database for personal data or PII.
|
||||
- [ethical.net](https://ethical.net/) is a not-for-profit project building a collaborative, online directory of ethical companies of all kinds.
|
||||
- [Firefox Profilemaker](https://ffprofile.com/) is a tool to help you create a Firefox profile with the defaults you like.
|
||||
- [Fix Windows Privacy](https://modzero.github.io/fix-windows-privacy/) is a tool to disable privacy breaches on Windows 10.
|
||||
- [Framasoft](https://framasoft.org/en/) is a collection of alternative software. Too many to fit elsewhere in the list.
|
||||
- [Go Incognito](https://techlore.tech/goincognito.html) A guide to security, privacy, and anominity.
|
||||
- [Go FOSS](https://www.gofoss.today/) is a guide on ditching big-tech, with a focus on seven core areas.
|
||||
- [Hybrid Analysis](https://www.hybrid-analysis.com/) a free malware analysis service for the community that detects and analyzes unknown threats using a unique Hybrid Analysis technology. Powered by [Falcon Sandbox](https://www.crowdstrike.com/endpoint-security-products/falcon-sandbox-malware-analysis/), which is developed by [CrowdStrike](https://www.crowdstrike.com/).
|
||||
- [How to Create a Strong Password (and Remember It)](https://outline.com/dqfuqL)
|
||||
- Use a [password manager](https://outline.com/NC69FD) such as [Bitwarden](https://bitwarden.com)
|
||||
- Set up [multi-factor/two-factor authentication](https://en.wikipedia.org/wiki/Multi-factor_authentication) on as many accounts as you can
|
||||
- Don't save passwords to your browser: [Erase the entire password cache](http://www.wikihow.com/Delete-Remembered-Passwords) once you set up a password manager.
|
||||
- [Remove bloatware from Android (without root)](https://www.xda-developers.com/uninstall-carrier-oem-bloatware-without-root-access/)
|
||||
- [What are 5-eyes, 9-eyes, and 14-eyes?](https://restoreprivacy.com/5-eyes-9-eyes-14-eyes/)
|
||||
- [Outline](https://outline.com/) is an awesome tool for getting all the junk out of news articles (I've used it a few times in this guide already). Sometimes it can get around paywalls for "premium" news sites.
|
||||
- [Plexus](https://plexus.techlore.tech/) Plexus is a website where you can check andriod app compatibility with microg or no google services. It is a crowdsourced project where people test an app's compatibility in those environments and then sumbit it to the database.
|
||||
- [PRISM Break](https://prism-break.org/en/) is a guide on how to opt out of global data surveillance programs like PRISM, XKeyscore and Tempora.
|
||||
- [Privacy Guides](https://privacyguides.org/) provides services, tools and knowledge to protect your privacy against global mass surveillance.
|
||||
- [retiolus/privacysec](https://github.com/retiolus/privacysec) is a collective guide built off the data of other guides, including this one, whose aim is to be translated into as many languages as possible.
|
||||
- [r/Privacy wiki](https://old.reddit.com/r/privacy/wiki/index) has a lot of useful information. This guide also automatically mirrors itself to the wiki!
|
||||
- [r/VPN wiki](https://old.reddit.com/r/VPN/wiki/index) to learn more about why you should consider using a VPN.
|
||||
- [Switching.software](https://switching.software/) is a collection of ethical, easy-to-use and privacy-conscious alternatives to well-known software.
|
||||
- [VirusTotal](https://www.virustotal.com/) lets you upload files and scans them against multiple antivirus programs at once. Very helpful for checking false negatives. Be aware that Alphabet Inc owns VirusTotal.
|
||||
- [VPN Toolkit](https://techlore.tech/vpn.html) Community driven tools for VPNs. Includes a VPN finder, chart, and other useful imformation.
|
||||
- [WindowsSpyBlocker (GitHub)](https://github.com/crazy-max/WindowsSpyBlocker) is a tool to block spying and tracking on Windows.
|
||||
- [What is Tor and should I use it?](https://outline.com/JRCscH)
|
||||
- [HTTP vs. HTTPS](https://outline.com/xUXZMh)
|
||||
- The EFF has an [excellent guide](https://ssd.eff.org/) on how to stay safe and secure online. It is incredibly useful and I suggest that everyone read through it.
|
||||
- Click [here](https://www.thewindowsclub.com/windows-10-telemetry) and [here](https://winaero.com/blog/how-to-disable-telemetry-and-data-collection-in-windows-10/) for tips on disabling Windows 10 telemetry/data collection.
|
||||
- Click [here](https://duckduckgo.com/newsletter) to sign up for DuckDuckGo's privacy newsletter, and [here](https://spreadprivacy.com/) for more tips, articles, and blog posts from DuckDuckGo.
|
||||
- [Delete Facebook](https://deletefacebook.com/). Another guide can be found [here](https://www.wikihow.com/Permanently-Delete-a-Facebook-Account).
|
||||
- [Why you should put tape over your webcam](https://outline.com/fYCu98)
|
||||
- [What is DNS and why should I change it?](https://outline.com/8jsWXw) Use [DNSPerf](https://www.dnsperf.com/#!dns-resolvers) to see which one is fastest for you. (Thanks @resynth1943)
|
||||
- What is GDPR? [TechRadar](https://outline.com/6sjd76) and [The Guardian](https://outline.com/exmSpf)
|
||||
- [Here](https://github.com/lfit/itpol/blob/master/linux-workstation-security.md) is a really good guide for configuring a super secure Linux workstation (thanks u/aoeudhtns)
|
||||
- [A website to raise awareness of online privacy](https://theytrackyou.com/). Lot's of good tips in here (thanks u/brais33)
|
||||
- [Android Privacy Guide](https://gitlab.com/Attedz/AndroidPrivacyGuide) (thanks u/rightknobhead)
|
||||
- [Windows 10 Privacy Guide](https://fdossena.com/?p=w10debotnet/index_1903.frag) (thanks again u/rightknobhead)
|
||||
- Check out [Prism Break](https://prism-break.org/en/) (thanks u/FrontierPsycho)
|
||||
- [Guide for Linux users](https://github.com/wesaphzt/block-all-google) on blocking everything Google at the network level. This can and probably will break other alternatives that rely on Google to serve content. Thanks u/wesaphzt
|
||||
- u/wesaphzt also provided [this](https://github.com/pyllyukko/user.js), [this](https://ffprofile.com/), and [this](https://www.privacytools.io/browsers/#about_config) for hardening Firefox.
|
||||
- Check out [WindowsSpyBlocker](https://github.com/crazy-max/WindowsSpyBlocker) and [this tutorial](https://github.com/adolfintel/Windows10-Privacy) for even more Windows 10 tips (thanks u/rudolf323)
|
||||
- [Virustotal](https://www.virustotal.com/) let's you upload files and it scans it against multiple antivirus software at once. Very helpful for checking false negatives. Website uses Google Analytics.
|
||||
- Did you read the [wiki](https://old.reddit.com/r/privacy/wiki/index) yet? Go do that.
|
|
@ -1,288 +1,63 @@
|
|||
{
|
||||
"name": "degoogle",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 2,
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"version": "1.0.0",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"fs-extra": "^9.0.0",
|
||||
"moment": "^2.26.0",
|
||||
"node-fetch": "^2.6.1",
|
||||
"qs": "^6.9.4",
|
||||
"yaml": "^1.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/at-least-node": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
|
||||
"integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
|
||||
"engines": {
|
||||
"node": ">= 4.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/call-bind": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
|
||||
"integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
|
||||
"dependencies": {
|
||||
"function-bind": "^1.1.1",
|
||||
"get-intrinsic": "^1.0.2"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/fs-extra": {
|
||||
"version": "9.1.0",
|
||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
|
||||
"integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
|
||||
"dependencies": {
|
||||
"at-least-node": "^1.0.0",
|
||||
"graceful-fs": "^4.2.0",
|
||||
"jsonfile": "^6.0.1",
|
||||
"universalify": "^2.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/function-bind": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
|
||||
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
|
||||
},
|
||||
"node_modules/get-intrinsic": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
|
||||
"integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
|
||||
"dependencies": {
|
||||
"function-bind": "^1.1.1",
|
||||
"has": "^1.0.3",
|
||||
"has-symbols": "^1.0.1"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/graceful-fs": {
|
||||
"version": "4.2.8",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
|
||||
"integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg=="
|
||||
},
|
||||
"node_modules/has": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
|
||||
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
|
||||
"dependencies": {
|
||||
"function-bind": "^1.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/has-symbols": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
|
||||
"integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/jsonfile": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
|
||||
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
|
||||
"dependencies": {
|
||||
"universalify": "^2.0.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"graceful-fs": "^4.1.6"
|
||||
}
|
||||
},
|
||||
"node_modules/moment": {
|
||||
"version": "2.29.1",
|
||||
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz",
|
||||
"integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==",
|
||||
"engines": {
|
||||
"node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/node-fetch": {
|
||||
"version": "2.6.1",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
|
||||
"integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==",
|
||||
"engines": {
|
||||
"node": "4.x || >=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/object-inspect": {
|
||||
"version": "1.11.0",
|
||||
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz",
|
||||
"integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==",
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/qs": {
|
||||
"version": "6.10.1",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz",
|
||||
"integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==",
|
||||
"dependencies": {
|
||||
"side-channel": "^1.0.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.6"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/side-channel": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
|
||||
"integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
|
||||
"dependencies": {
|
||||
"call-bind": "^1.0.0",
|
||||
"get-intrinsic": "^1.0.2",
|
||||
"object-inspect": "^1.9.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/universalify": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
|
||||
"integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
|
||||
"engines": {
|
||||
"node": ">= 10.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/yaml": {
|
||||
"version": "1.10.2",
|
||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
|
||||
"integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
|
||||
"engines": {
|
||||
"node": ">= 6"
|
||||
}
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"at-least-node": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
|
||||
"integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg=="
|
||||
},
|
||||
"call-bind": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
|
||||
"integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
|
||||
"requires": {
|
||||
"function-bind": "^1.1.1",
|
||||
"get-intrinsic": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"fs-extra": {
|
||||
"version": "9.1.0",
|
||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
|
||||
"integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
|
||||
"version": "9.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz",
|
||||
"integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==",
|
||||
"requires": {
|
||||
"at-least-node": "^1.0.0",
|
||||
"graceful-fs": "^4.2.0",
|
||||
"jsonfile": "^6.0.1",
|
||||
"universalify": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"function-bind": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
|
||||
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
|
||||
},
|
||||
"get-intrinsic": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
|
||||
"integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
|
||||
"requires": {
|
||||
"function-bind": "^1.1.1",
|
||||
"has": "^1.0.3",
|
||||
"has-symbols": "^1.0.1"
|
||||
"universalify": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"graceful-fs": {
|
||||
"version": "4.2.8",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
|
||||
"integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg=="
|
||||
},
|
||||
"has": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
|
||||
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
|
||||
"requires": {
|
||||
"function-bind": "^1.1.1"
|
||||
}
|
||||
},
|
||||
"has-symbols": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
|
||||
"integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw=="
|
||||
"version": "4.2.4",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
|
||||
"integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw=="
|
||||
},
|
||||
"jsonfile": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
|
||||
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz",
|
||||
"integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==",
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.6",
|
||||
"universalify": "^2.0.0"
|
||||
"universalify": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"moment": {
|
||||
"version": "2.29.1",
|
||||
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz",
|
||||
"integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ=="
|
||||
"version": "2.26.0",
|
||||
"resolved": "https://registry.npmjs.org/moment/-/moment-2.26.0.tgz",
|
||||
"integrity": "sha512-oIixUO+OamkUkwjhAVE18rAMfRJNsNe/Stid/gwHSOfHrOtw9EhAY2AHvdKZ/k/MggcYELFCJz/Sn2pL8b8JMw=="
|
||||
},
|
||||
"node-fetch": {
|
||||
"version": "2.6.1",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
|
||||
"integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
|
||||
},
|
||||
"object-inspect": {
|
||||
"version": "1.11.0",
|
||||
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz",
|
||||
"integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg=="
|
||||
},
|
||||
"qs": {
|
||||
"version": "6.10.1",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz",
|
||||
"integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==",
|
||||
"requires": {
|
||||
"side-channel": "^1.0.4"
|
||||
}
|
||||
},
|
||||
"side-channel": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
|
||||
"integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
|
||||
"requires": {
|
||||
"call-bind": "^1.0.0",
|
||||
"get-intrinsic": "^1.0.2",
|
||||
"object-inspect": "^1.9.0"
|
||||
}
|
||||
"version": "6.9.4",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz",
|
||||
"integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ=="
|
||||
},
|
||||
"universalify": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
|
||||
"integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ=="
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz",
|
||||
"integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug=="
|
||||
},
|
||||
"yaml": {
|
||||
"version": "1.10.2",
|
||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
|
||||
"integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="
|
||||
"version": "1.10.0",
|
||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz",
|
||||
"integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg=="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
15
package.json
15
package.json
|
@ -1,15 +1,20 @@
|
|||
{
|
||||
"name": "degoogle",
|
||||
"version": "1.0.0",
|
||||
"description": "A huge list of alternatives to Google products. Privacy tips, tricks, and links.",
|
||||
"description": "1. [Contributing](#contributing)\r 2. [Browser extensions](#browser-extensions)\r 3. **[Replacements/alternatives](#replacementsalternatives)**\r 1. [Disclaimer](#disclaimer)\r 2. [Web-based products](#web-based-products)\r 3. [Operating systems](#operating-systems)\r 4. [Desktop applications](#desktop-applications)\r 5. [Mobile applications](#mobile-applications-mobile-apps-installable-from-stores)\r 6. [Hardware](#hardware)\r 4. [Useful links, tools, and advice](#useful-links-tools-and-advice)\r 1. [Resources](#resources)\r 1. [Books](#books)\r 1. [Blog posts](#blog-posts)\r 1. [News articles](#news-articles)\r 5. [The lighter side](#the-lighter-side)\r 6. [Closing remarks](#closing-remarks)",
|
||||
"main": "_build.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"repository": "github:tycrek/degoogle",
|
||||
"author": "tycrek <t@tycrek.com> (https://tycrek.com/)",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/tycrek/degoogle.git"
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"bugs": "https://github.com/tycrek/degoogle/issues",
|
||||
"bugs": {
|
||||
"url": "https://github.com/tycrek/degoogle/issues"
|
||||
},
|
||||
"homepage": "https://github.com/tycrek/degoogle#readme",
|
||||
"dependencies": {
|
||||
"fs-extra": "^9.0.0",
|
||||
|
@ -18,4 +23,4 @@
|
|||
"qs": "^6.9.4",
|
||||
"yaml": "^1.10.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,8 +17,4 @@
|
|||
- title: Zucked
|
||||
url: https://www.zuckedbook.com/
|
||||
author: Roger McNamee
|
||||
date: 2019
|
||||
- title: Privacy Is Power
|
||||
url: https://www.penguin.co.uk/books/1120394/privacy-is-power/9780552177719.html
|
||||
author: Carissa Véliz
|
||||
date: 2021
|
||||
date: 2019
|
|
@ -6,10 +6,14 @@
|
|||
url: https://addons.mozilla.org/en-US/firefox/addon/privacy-badger17
|
||||
text: |
|
||||
Privacy Badger automatically learns to block invisible trackers. Instead of keeping lists of what to block, Privacy Badger learns by watching which domains appear to be tracking you as you browse the Web.
|
||||
- name: Decentraleyes
|
||||
url: https://addons.mozilla.org/en-US/firefox/addon/decentraleyes
|
||||
text: |
|
||||
Protects you against tracking through "free", centralized, content delivery. It prevents a lot of requests from reaching networks like Google Hosted Libraries, and serves local files to keep sites from breaking. Complements regular content blockers.
|
||||
- name: HTTPS Everywhere
|
||||
url: https://addons.mozilla.org/en-US/firefox/addon/https-everywhere
|
||||
text: |
|
||||
Many sites on the web offer some limited support for encryption over HTTPS, but make it difficult to use. For instance, they may default to unencrypted HTTP, or fill encrypted pages with links that go back to the unencrypted site. The HTTPS Everywhere extension fixes these problems by rewriting all requests to these sites to HTTPS. Note: EFF is preparing to deprecate the HTTPS Everywhere, check out this [blog post](https://www.eff.org/deeplinks/2021/09/https-actually-everywhere).
|
||||
Many sites on the web offer some limited support for encryption over HTTPS, but make it difficult to use. For instance, they may default to unencrypted HTTP, or fill encrypted pages with links that go back to the unencrypted site. The HTTPS Everywhere extension fixes these problems by rewriting all requests to these sites to HTTPS.
|
||||
- name: Cookie AutoDelete
|
||||
url: https://addons.mozilla.org/en-US/firefox/addon/cookie-autodelete
|
||||
text: |
|
||||
|
@ -26,6 +30,10 @@
|
|||
url: https://addons.mozilla.org/en-US/firefox/addon/minerblock-origin
|
||||
text: |
|
||||
MinerBlock is an efficient browser extension that focuses on blocking browser-based cryptocurrency miners all over the web. This extension uses two different approaches to block miners. The first one is based on blocking requests/scripts loaded from a blacklist, this is the traditional approach adopted by most ad-blockers and other mining blockers. The other approach which makes MinerBlock more efficient against cryptojacking is detecting potential mining behavior inside loaded scripts and kills them immediately. This makes the extension able to block inline scripts as well as miners running through proxies. Source code available on [GitHub](https://github.com/xd4rker/MinerBlock).
|
||||
- name: Terms of Service; Didn't Read
|
||||
url: https://addons.mozilla.org/en-US/firefox/addon/terms-of-service-didnt-read
|
||||
text: |
|
||||
“I have read and agree to the Terms” is the biggest lie on the web. We aim to fix that. “Terms of Service; Didn't Read” is a user rights initiative to rate and label website terms & privacy policies, from very good (class A) to very bad (class E). This extension informs you instantly of your rights online by showing an unintrusive icon in the toolbar. You can click on this icon to get summaries from the [Terms of Service; Didn't Read](https://tosdr.org/) initiative.
|
||||
- name: ClearURLS
|
||||
url: https://addons.mozilla.org/en-US/firefox/addon/clearurls
|
||||
text: |
|
||||
|
@ -42,6 +50,10 @@
|
|||
url: https://addons.mozilla.org/en-US/firefox/addon/disconnect
|
||||
text: |
|
||||
Visualize and block the otherwise invisible websites that track your search and browsing history.
|
||||
- name: Don't touch my tabs! (rel=noopener
|
||||
url: https://addons.mozilla.org/en-US/firefox/addon/dont-touch-my-tabs
|
||||
text: |
|
||||
Prevent tabs opened by a hyperlink from hijacking the previous tab by adding the rel=noopener attribute to all hyperlinks (excluding same-domain hyperlinks).
|
||||
- name: Firefox Multi-Account Containers
|
||||
url: https://addons.mozilla.org/en-US/firefox/addon/multi-account-containers
|
||||
text: |
|
||||
|
@ -58,6 +70,10 @@
|
|||
url: https://addons.mozilla.org/en-US/firefox/addon/link-cleaner
|
||||
text: |
|
||||
Clean URLs that are about to be visited: removes utm_* parameters; on item pages of aliexpress and amazon, removes tracking parameters; skip redirect pages of facebook, steam and reddit
|
||||
- name: Neat URL
|
||||
url: https://addons.mozilla.org/en-US/firefox/addon/neat-url
|
||||
text: |
|
||||
Remove garbage from URLs.
|
||||
- name: Privacy-Oriented Origin Policy
|
||||
url: https://addons.mozilla.org/en-US/firefox/addon/privacy-oriented-origin-policy
|
||||
text: |
|
||||
|
@ -70,6 +86,10 @@
|
|||
url: https://addons.mozilla.org/en-US/firefox/addon/temporary-containers
|
||||
text: |
|
||||
Open tabs, websites, and links in automatically managed disposable containers. Containers isolate data websites store (cookies, storage, and more) from each other, enhancing your privacy and security while you browse.
|
||||
- name: uMatrix
|
||||
url: https://addons.mozilla.org/en-US/firefox/addon/umatrix
|
||||
text: |
|
||||
Point & click to forbid/allow any class of requests made by your browser. Use it to block scripts, iframes, ads, facebook, etc.
|
||||
- name: TrackMeNot
|
||||
url: https://addons.mozilla.org/en-US/firefox/addon/trackmenot
|
||||
text: |
|
||||
|
@ -78,11 +98,7 @@
|
|||
url: https://addons.mozilla.org/en-US/firefox/addon/amp2html
|
||||
text: |
|
||||
This web extension enables users to choose to opt-out of using Accelerated Mobile Pages (AMP) and choose to use the standard web instead.
|
||||
- name: user.js
|
||||
url: https://github.com/arkenfox/user.js
|
||||
- name: ghacks-user.js
|
||||
url: https://github.com/ghacksuserjs/ghacks-user.js/
|
||||
text: |
|
||||
This is not an extension, instead it is a Firefox `user.js` config file. This file is a template which aims to provide as much privacy and enhanced security as possible, and to reduce tracking and fingerprinting as much as possible - while minimizing any loss of functionality and breakage (but it will happen).
|
||||
- name: Port Authority
|
||||
url: https://addons.mozilla.org/en-US/firefox/addon/port-authority/
|
||||
text: |
|
||||
Blocks websites from using javascript to port scan your computer/network and dynamically blocks all LexisNexis endpoints from running their invasive data collection scripts. [Website](https://www.g666gle.me/Port-Authority/), [Source Code](https://github.com/ACK-J/Port_Authority)
|
||||
This is not an extension, instead it is a Firefox `user.js` config file. This file is a template which aims to provide as much privacy and enhanced security as possible, and to reduce tracking and fingerprinting as much as possible - while minimizing any loss of functionality and breakage (but it will happen).
|
1717
yaml/degoogle.yml
1717
yaml/degoogle.yml
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue