المساهمة
تجري المساهمات على GitHub، دون منتدى أو دردشة أو حساب آخر للتسجيل فيه.
| لفعل هذا | استخدم |
|---|---|
| اقتراح تطبيق أو خدمة | افتح مشكلة من نوع "Suggest" |
| الإبلاغ عن إجابة خاطئة أو رابط معطّل | افتح مشكلة من نوع "Correction"، أو استخدم "الإبلاغ عن تصحيح" في أي صفحة تقييم |
| اقتراح معايير أو تغييرها | افتح مشكلة من نوع "Criteria change" |
| الإصلاح بنفسك | استخدم "التعديل على GitHub" في أي صفحة تقييم، أو افتح طلب سحب |
| طرح سؤال أو مناقشة اختيار | GitHub Discussions |
تعديل تقييم
كل تطبيق أو خدمة ملف Markdown واحد في ratings/<category>/<name>.md. وأعلى الملف بصيغة YAML. وأي شيء أسفله ملاحظات Markdown اختيارية تُعرض في الصفحة.
---
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.
يفحص npm test هذه القواعد:
- تكون قيمة
answerواحدة منyesأوpartialأوnoأوunknownأوn/a. - تحتاج
yesوpartialإلى رابطevidence. وتحتاجnoإلىnoteأوevidence. - يجب أن يكون الدليل مصدرًا أوليًا: توثيقًا رسميًا، أو شيفرة مصدرية، أو ملف ترخيص، أو تقرير تدقيق، أو اختبارًا قابلًا للتكرار. ولا تُحتسب المراجعات ومنشورات المنتديات والصفحات التسويقية الخالية من التفاصيل.
- يجب أن تبدأ الروابط بـ
https://وألا تحتوي على معاملات إحالة أو تتبع. - تملأ الاختبارات الآلية معاييرها (
tlsوsecurity_headersوweb_standardsوmail_standardsوimap_standardsوpop3_standardsوsmtp_standardsوtransport_security). لا تضبطها يدويًا. - يفحص اختبار أدوات التتبع أيضًا
no_trackers. فإذا حمّلت الصفحة الرئيسية أداة تتبع تابعة لجهة خارجية، تصبح الإجابة "لا" أيًّا كان ما يقوله الملف. - أغفل أي معيار ليس له دليل بعد. فهو يُحتسب
unknown. jurisdictionهي المكان الذي يقع فيه المقر القانوني للشركة (لا مكان خوادمها). أضف الدولة إلىjurisdictions.ymlإذا كانت غير موجودة. وكل ملاحظة هناك تحتاج إلى مصدر.- لا يضيف
pickوpick_reasonوdisclosureإلا القائمون على المشروع. استخدمpick: 1وpick: 2لترتيب اختيارين. راجع GOVERNANCE.md. - يحتفظ
imported_nameبالاسم الذي كان للعنصر في Awesome Privacy بعد إعادة تسميته، حتى لا يضيفه الاستيراد الشهري مرة أخرى. ولاستبعاد عنصر من Awesome Privacy نهائيًا، أضفه إلىimport-skip.ymlمع ذكر السبب.
معايير كل فئة، ومعنى كل إجابة، موجودة في criteria/ وفي صفحة المعايير.
إضافة تطبيق أو خدمة
npm ci
npm run new -- vpns "Example VPN" https://example.com
يُنشئ هذا ملفًا يسرد كل معيار بقيمة unknown. املأ ما تستطيع إثباته، واحذف الباقي، ثم شغّل npm test.
أسلوب الكتابة
- لغة بسيطة ومحايدة. صف ما يفعله الشيء دون مدحه.
- جمل قصيرة. وتبقى الأوصاف أقل من 300 حرف.
- لا صيغة المتكلم، ولا تواريخ في النص، ولا ادعاءات تسويقية.
- سمِّ الأشياء كما تسميها الشركة.
تشغيل الموقع محليًا
يتطلب Node.js 18 أو أحدث.
npm ci
npm test # validate data and build the site
npm run serve # preview at http://localhost:8080
إضافة صفحة
ضع ملف Markdown يحتوي على title وdescription في pages/. وتنشره عملية البناء في /<file-name>/ مع نسخة Markdown وبيانات منظّمة وإدخال في خريطة الموقع.
إضافة فئة أو معيار
- أضف الفئة إلى
categories.ymlضمن المجموعة المناسبة. - اختياريًا، أضف
criteria/<category-id>.ymlبمعايير خاصة بالفئة. انسخ التنسيق من ملف موجود. - أنشئ
ratings/<category-id>/وأضف العناصر. - تتبع تغييرات المعايير قواعد المراجعة في GOVERNANCE.md.
الترجمات
يُنشر الموقع بـ 25 لغة. الإنجليزية هي المصدر، وكل لغة أخرى موجودة في i18n/<code>/:
| الملف | المحتوى |
|---|---|
ui.json |
نصوص الواجهة: العناوين والأزرار والجمل التي تحتوي على {placeholders} |
data.json |
أسماء الفئات والمعايير والأدلة وملاحظات الدول |
entries.json |
أوصاف التقييمات وأسباب الاختيار والإفصاحات |
pages/*.md |
مستندات كاملة مثل هذا المستند |
يربط كل ملف JSON النص الإنجليزي بترجمته. عندما يتغير النص الإنجليزي، لا تعود الترجمة القديمة مطابقة له، فيعرض الموقع النص الإنجليزي إلى أن يترجم أحدٌ النص الجديد، ولا يعرض أبدًا ترجمة قديمة.
- شغّل
npm run build. يكتب هذا الأمر القوائم الإنجليزية الحالية فيi18n/source/. - شغّل
npm run i18n:checkلمعرفة ما ينقص في كل لغة، أوnode scripts/i18n-check.js de uiلعرض تفاصيل لغة واحدة وملف واحد. - أضف الترجمات أو صحّحها، مع إبقاء كل
{placeholder}كما هو تمامًا. - بالنسبة إلى المستند، انسخ النص الإنجليزي من
i18n/source/pages/، وأبقِ سطره الأول (<!-- source: … -->، الذي يربط الترجمة بتلك النسخة من النص الإنجليزي)، وترجم الباقي.
تبقى الملاحظات والأدلة الخاصة بكل إجابة باللغة الإنجليزية. المقارنات ومعظم التقييمات الفردية متاحة بالإنجليزية فقط؛ أما الاختيارات والفئات والأدلة والبدائل وقوائم البرمجيات مفتوحة المصدر والولايات القضائية والمستندات فتُترجم. تستخدم قائمة اللغات وإعادة التوجيه التلقائية روابط hreflang في كل صفحة.
قائمة التحقق لطلب السحب
- يجتاز
npm test. - كل إجابة متغيرة ترتبط بدليل.
- إذا كنت تعمل لدى خدمة عدّلتها أو كانت لك صلة بها، فقد ذكرت ذلك في طلب السحب.