Współtworzenie
Wszystko odbywa się na GitHubie. Nie ma innego forum, czatu ani konta do założenia.
| Aby to zrobić | Użyj |
|---|---|
| Zaproponować aplikację lub usługę | Otwórz zgłoszenie „Suggest” |
| Zgłosić błędną odpowiedź lub niedziałający link | Otwórz zgłoszenie „Correction” albo użyj opcji „Zgłoś poprawkę” na stronie dowolnej oceny |
| Zaproponować lub zmienić kryteria | Otwórz zgłoszenie „Criteria change” |
| Poprawić samodzielnie | Użyj opcji „Edytuj na GitHubie” na stronie dowolnej oceny albo otwórz pull request |
| Zadać pytanie lub przedyskutować wybór | GitHub Discussions |
Edycja oceny
Każda aplikacja lub usługa to jeden plik Markdown w ratings/<category>/<name>.md. Początek pliku to YAML. Wszystko poniżej to opcjonalne uwagi w Markdown wyświetlane na stronie.
---
name: Example Mail
description: >-
One or two plain sentences about what it is.
website: https://example.com
source: https://github.com/example/example # optional
platforms: [web, android, ios] # optional
jurisdiction: CH # optional, country code from jurisdictions.yml
mainstream: true # optional, adds an "alternatives to" page
aliases: [Example Office, Example Docs] # optional, other names people search for
also_in: [macos-hardening] # optional, also list it in another category's table
alternatives_page: true # optional, adds an "alternatives to" page without mainstream
domain: mail.example.com # services only, used for automated tests
mail_domain: example.com # email categories only
imap_host: imap.example.com # email providers only; false if not offered
pop3_host: pop3.example.com # optional, found from SRV records when missing
smtp_host: smtp.example.com # optional, found from SRV records when missing
criteria:
open_source:
answer: partial
evidence: https://github.com/example/example/blob/main/LICENSE
note: Apps are open source. The server is not.
no_ads:
answer: yes
evidence: https://example.com/pricing
---
Optional notes in Markdown.
Zasady (sprawdzane automatycznie przez npm test):
answerto jedna z wartościyes,partial,no,unknownlubn/a.yesipartialwymagają linkuevidence.nowymaganotelubevidence.- Dowód musi być źródłem pierwotnym: oficjalną dokumentacją, kodem źródłowym, plikiem licencji, raportem z audytu lub powtarzalnym testem. Nie recenzjami, wpisami na forach ani stronami marketingowymi bez szczegółów.
- Linki muszą zaczynać się od
https://i nie mogą zawierać parametrów polecających ani śledzących. - Kryteria automatyczne (
tls,security_headers,web_standards,mail_standards,imap_standards,pop3_standards,smtp_standards,transport_security) są wypełniane przez testy. Nie ustawiaj ich ręcznie. no_trackersjest też sprawdzane przez test trackerów. Jeśli strona główna wczytuje tracker podmiotu trzeciego, odpowiedź zmienia się na „no” niezależnie od zawartości pliku.- Pomiń każde kryterium, które nie ma jeszcze dowodów. Liczy się jako
unknown. jurisdictionto kraj, w którym firma ma siedzibę prawną (a nie lokalizacja jej serwerów). Jeśli kraju brakuje, dodaj go dojurisdictions.yml. Każda uwaga w tym pliku wymaga źródła.- Tylko opiekunowie dodają
pick,pick_reasonidisclosure. Użyjpick: 1ipick: 2, aby ustalić kolejność dwóch wyborów. Zobacz GOVERNANCE.md. imported_namezachowuje nazwę, jaką wpis miał w Awesome Privacy po zmianie nazwy, aby comiesięczny import nie dodał go ponownie. Aby na stałe pominąć wpis z Awesome Privacy, dodaj go doimport-skip.ymlz uzasadnieniem.
Kryteria dla każdej kategorii i znaczenie każdej odpowiedzi znajdują się w criteria/ oraz na stronie kryteriów.
Dodawanie aplikacji lub usługi
npm ci
npm run new -- vpns "Example VPN" https://example.com
To polecenie tworzy plik, w którym każde kryterium ma wartość unknown. Uzupełnij to, co możesz udowodnić, usuń resztę, a następnie uruchom npm test.
Styl pisania
- Prosty, neutralny język. Opisuj, co coś robi, a nie jakie jest świetne.
- Krótkie zdania. Opisy mają mniej niż 300 znaków.
- Bez pierwszej osoby, bez dat w tekście, bez twierdzeń marketingowych.
- Nazywaj rzeczy tak, jak robi to producent.
Uruchamianie strony lokalnie
Wymaga Node.js 18 lub nowszego.
npm ci
npm test # validate data and build the site
npm run serve # preview at http://localhost:8080
Dodawanie strony
Umieść plik Markdown z polami title i description w pages/. Zostanie opublikowany pod adresem /<file-name>/ wraz z kopią w Markdown, danymi strukturalnymi i wpisem w mapie strony.
Dodawanie kategorii lub kryterium
- Dodaj kategorię do
categories.ymlw odpowiedniej grupie. - Opcjonalnie dodaj
criteria/<category-id>.ymlz kryteriami specyficznymi dla kategorii. Skopiuj format z istniejącego pliku. - Utwórz
ratings/<category-id>/i dodaj wpisy. - Zmiany kryteriów podlegają zasadom recenzji opisanym w GOVERNANCE.md.
Tłumaczenia
Strona jest publikowana w 25 językach. Źródłem jest angielski, a każdy inny język znajduje się w i18n/<code>/:
| Plik | Zawiera |
|---|---|
ui.json |
Tekst interfejsu: nagłówki, przyciski i zdania z {placeholders} |
data.json |
Nazwy kategorii, kryteria, poradniki i uwagi o krajach |
entries.json |
Opisy ocen, uzasadnienia wyborów i ujawnienia |
pages/*.md |
Całe dokumenty, takie jak ten |
Każdy plik JSON przypisuje tekstowi angielskiemu jego tłumaczenie. Gdy tekst angielski się zmieni, stare tłumaczenie przestaje do niego pasować, więc wyświetlany jest tekst angielski, dopóki ktoś nie przetłumaczy nowego tekstu. Nieaktualne treści nigdy nie są wyświetlane.
- Uruchom
npm run build. Polecenie zapisuje bieżące angielskie listy wi18n/source/. - Uruchom
npm run i18n:check, aby zobaczyć, czego brakuje w każdym języku, albonode scripts/i18n-check.js de ui, aby zobaczyć szczegóły dla jednego języka i pliku. - Dodaj lub popraw tłumaczenia, zachowując każdy
{placeholder}dokładnie w niezmienionej postaci. - W przypadku dokumentu skopiuj tekst angielski z
i18n/source/pages/, zachowaj jego pierwszą linię (<!-- source: … -->, która wiąże tłumaczenie z tą wersją tekstu angielskiego) i przetłumacz resztę.
Uwagi i dowody do poszczególnych odpowiedzi pozostają po angielsku. Porównania i większość pojedynczych ocen są dostępne tylko po angielsku; wybory, kategorie, poradniki, alternatywy, listy open source, jurysdykcje i dokumenty są tłumaczone. Menu języka i automatyczne przekierowanie korzystają z linków hreflang na każdej stronie.
Lista kontrolna pull requesta
-
npm testkończy się powodzeniem. - Każda zmieniona odpowiedź prowadzi do dowodów.
- Jeśli pracujesz dla zmienianej usługi lub masz z nią powiązania, napisano o tym w pull requeście.