1
0
Fork 0
mirror of https://github.com/YunoHost/apps.git synced 2024-09-03 20:06:07 +02:00

Merge pull request #1312 from Tagadda/antifeatures

Anti-features draft
This commit is contained in:
Alexandre Aubin 2022-02-15 22:17:14 +01:00 committed by GitHub
commit 9cfdc1b864
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 149 additions and 2 deletions

116
antifeatures.yml Normal file
View file

@ -0,0 +1,116 @@
- id: tracking
icon: user-secret
title:
en: "Tracking"
fr: "Pistage"
description:
en: "Tracks you and/or reports your activity to upstream maintainer or third parties, either without your permission or by default."
fr: "Vous piste et/ou rapporte vos activités au mainteneur source ou à des tiers, sans votre permission ou par défaut."
- id: non-free-network
icon: network-wired
title:
en: "Non-free Network Services"
fr : "Services réseau non libres"
description:
en: "Promotes or depends entirely on a non-free network service."
fr: "Promeut ou utilise des services réseau non libres."
- id: non-free-addons
icon: puzzle-piece
title:
en: "Non-free Addons"
fr: "Extensions non libres"
description:
en: "Promotes other non-free applications or plugins."
fr: "Promeut d'autres applications ou plugins non libres."
- id: non-free-dependencies
icon: book
title:
en: "Non-free dependencies"
fr: "Dépendances non libres"
description:
en: "Relies on software dependencies that are not free in order to run."
fr: "Dépend pour fonctionner de dépendances logicielles non libres."
- id: non-free-assets
icon: file-image
title:
en: "Non-free assets"
fr: "Ressources non libres"
description:
en: "Contains and makes use of non-free assets. The most common case is apps using artwork - images, sounds, music, etc. - under a commercial license."
fr: "Contient ou utilise des médias non libres. Le cas le plus fréquent concerne des applications utilisant des œuvres (images, sons, musiques, etc.) sous une licence commerciale."
- id: bad-security-reputation
icon: door-open
title:
en: "Bad security reputation"
fr: "Mauvaise réputation en matière de sécurité"
description:
en: "Has a bad security reputation, such as deprecated addons."
fr: "A une mauvaise réputation en matière de sécurité, en utilisant des plugins dépréciés par exemple."
- id: deprecated-software
icon: face-frown
title:
en: "Upstream not maintained"
fr: "Application non maintenue"
description:
en: "This software is not maintained anymore. Expect it to break down over time, be exposed to unfixed security breaches, etc."
fr: "Ce logiciel n'est plus maintenu. Attendez-vous à ce qu'il ne fonctionne plus avec le temsp, et que l'on découvre des failles de sécurité qui ne seront pas corrigées, etc."
- id: package-not-maintained
icon: user-slash
title:
en: "Package not maintained"
fr: "Paquet non maintenu"
description:
en: "This YunoHost package is not maintained and need adoption."
fr: "Ce package YunoHost n'est plus maintenu et doit être adopté."
- id: paid-content
icon: coins
title:
en: "Paid content"
fr: "Contenu payant"
description:
en: "Promotes or depends, entirely or partially, on a paid service."
fr: "Promeut ou dépend, entièrement ou partiellement, d'un service payant."
- id: arbitrary-limitations
icon: face-frown
title:
en: "Arbitrary limitations"
fr: "Limitations arbitraires"
description:
en: "Please refer to the README."
fr: "Se référer au fichier README."
- id: replaced-by-another-app
icon: rotate
title:
en: "Replaced by another app"
fr: "Remplacé par une autre application"
description:
en: "Was replaced by another app. Please refer to the README."
fr: "A été remplacée par une autre application. Se référer au fichier README."
- id: alpha-software
icon: flask
title:
en: "Alpha Software"
fr: "Logiciel en version alpha"
despcription:
en: "Early development stage. May contain changing or unstable features, bugs, and security vulnerability."
fr: "Le logiciel est au tout début de son développment. Il pourrait contenir des fonctionnalités changeantes ou instables, des bugs, et des failles de sécurité."
- id: not-totally-free
icon: lock
title:
en: "Not totally free upstream"
fr: "Application sous licence libre restreinte"
description:
en: "The packaged app is under an overall free licence, but with clauses that restrict its use."
fr: "L'application packagée ests sous une licence globalement libre, mais avec des clauses qui pourrait restreindre son utilisation."

View file

@ -3,6 +3,9 @@
"category": "games",
"level": 8,
"state": "working",
"antifeatures": [
"non-free-assets"
],
"url": "https://github.com/YunoHost-Apps/20euros_ynh"
},
"243": {
@ -93,6 +96,9 @@
"subtags": [
"download"
],
"antifeatures": [
"non-free-network"
],
"url": "https://github.com/YunoHost-Apps/alltube_ynh"
},
"ampache": {
@ -200,6 +206,9 @@
"subtags": [
"pictures"
],
"antifeatures": [
"non-free-network"
],
"url": "https://github.com/YunoHost-Apps/bibliogram_ynh"
},
"biboumi": {
@ -532,6 +541,9 @@
"category": "games",
"level": 8,
"state": "working",
"antifeatures": [
"tracking"
],
"url": "https://github.com/YunoHost-Apps/Cubiks-2048_ynh"
},
"dato": {
@ -1380,6 +1392,9 @@
"subtags": [
"videos"
],
"antifeatures": [
"non-free-network"
],
"url": "https://github.com/YunoHost-Apps/invidious_ynh"
},
"invoiceninja": {
@ -2180,6 +2195,9 @@
"subtags": [
"microblogging"
],
"antifeatures": [
"non-free-network"
],
"url": "https://github.com/YunoHost-Apps/nitter_ynh"
},
"noalyss": {
@ -3589,6 +3607,10 @@
"websites",
"blog"
],
"antifeatures": [
"non-free-addons",
"paid-content"
],
"url": "https://github.com/YunoHost-Apps/wordpress_ynh"
},
"writefreely": {
@ -3644,6 +3666,9 @@
"subtags": [
"download"
],
"antifeatures": [
"non-free-network"
],
"url": "https://github.com/YunoHost-Apps/youtube-dl-webui_ynh"
},
"yunofav": {
@ -3733,6 +3758,9 @@
"subtags": [
"network"
],
"antifeatures": [
"non-free-dependencies"
],
"url": "https://github.com/YunoHost-Apps/ztncui_ynh"
},
"zusam": {

View file

@ -149,9 +149,10 @@ def build_catalog():
# Current version 2 #
#####################
categories = yaml.load(open("categories.yml").read())
antifeatures = yaml.load(open("antifeatures.yml").read())
os.system("mkdir -p ./builds/default/v2/")
with open("builds/default/v2/apps.json", 'w') as f:
f.write(json.dumps({"apps": result_dict, "categories": categories}, sort_keys=True))
f.write(json.dumps({"apps": result_dict, "categories": categories, "antifeatures": antifeatures}, sort_keys=True))
####################
# Legacy version 1 #
@ -199,6 +200,7 @@ def build_catalog():
"broken": level <= 0,
"good_quality": level >= 8,
"bad_quality": level <= 5,
"antifeatures": infos["antifeatures"],
}
result_dict_doc = {k: infos_for_doc_catalog(v) for k, v in result_dict.items() if v["state"] in ["working", "validated"]}
with open("builds/default/doc_catalog/apps.json", 'w') as f:
@ -217,7 +219,7 @@ def build_app_dict(app, infos):
# If using head, find the most recent meaningful commit in logs
if infos["revision"] == "HEAD":
relevant_files = ["manifest.json", "actions.json", "hooks/", "scripts/", "conf/", "sources/"]
relevant_files = ["manifest.json", "config_panel.toml", "hooks/", "scripts/", "conf/", "sources/"]
most_recent_relevant_commit = "rev-list --full-history --all -n 1 -- " + " ".join(relevant_files)
infos["revision"] = git(most_recent_relevant_commit, in_folder=this_app_cache)
assert re.match(r"^[0-9a-f]+$", infos["revision"]), "Output was not a commit? '%s'" % infos["revision"]
@ -247,6 +249,7 @@ def build_app_dict(app, infos):
'featured': infos.get("featured", False),
'category': infos.get('category', None),
'subtags': infos.get('subtags', []),
'antifeatures': list(set(manifest.get('antifeatures', []) + infos.get('antifeatures', [])))
}