From 8c3408b84063d4f3dcef5682ead2cbe00aee2560 Mon Sep 17 00:00:00 2001 From: Tagada <36127788+Tagadda@users.noreply.github.com> Date: Fri, 21 Jan 2022 23:17:36 +0100 Subject: [PATCH 1/7] Anti-features draft --- antifeatures.yml | 79 ++++++++++++++++++++++++++++++++++++++++++++++++ apps.json | 28 +++++++++++++++++ list_builder.py | 4 ++- 3 files changed, 110 insertions(+), 1 deletion(-) create mode 100644 antifeatures.yml diff --git a/antifeatures.yml b/antifeatures.yml new file mode 100644 index 00000000..9df020ea --- /dev/null +++ b/antifeatures.yml @@ -0,0 +1,79 @@ +- id: tracking + icon: user-secret + title: + en: "Tracking" + fr: "Pistage" + description: + en: "Track you and/or report your activity to somewhere, either without your permission or by default." + +- id: non-free-network + icon: network-wired + title: + en: "Non-free Network Services" + fr : "Services réseau non-libres" + description: + en: "Promote or depend entirely on a Non-Free network service." + +- id: non-free-addons + icon: puzzle-piece + title: + en: "Non-free Addons" + fr: "Extensions non libres" + description: + en: "Promote other Non-Free applications or plugins." + +- id: non-free-dependencies + icon: book + title: + en: "Non-free dependencies" + description: + en: "Require things that are not Free Software in order to run" + +- id: non-free-assets + icon: file-image + title: + en: "Non-free assets" + fr: "Ressources non libres" + description: + en: "Contain and make use of non-ree assets. The most common case is apps using artwork - images, sounds, music, etc. - under a non-commercial license." + +- id: known-vulnerability + icon: face-frown + title: + en: "Known Vulnerability" + fr: "Vulnérabilité connue" + description: + en: "Known security vulnerability." + +- id: deprecated-software + icon: face-frown + title: + en: "Upstream not maintained" + fr: "Application non maintenue" + description: + en: "This software is not maintained anymore." + +- id: package-not-maintained + icon: face-frown + title: + en: "Package not maintained" + fr: "Paquet non maintenu" + description: + en: "YunoHost package is not maintained anymore." + +- id: paid-content + icon: coins + title: + en: "Paid content" + fr: "Contenu payant" + description: + en: "Promote or depend entierly on a paid service." + +- id: arbitrary-limitations + icon: face-frown + title: + en: "Arbitrary limitations" + fr: "Limitations arbritraires" + description: + en: "Please refer to the README." + fr: "Se référer au fichier README." diff --git a/apps.json b/apps.json index 568c27e0..c000ed76 100644 --- a/apps.json +++ b/apps.json @@ -3,6 +3,9 @@ "category": "games", "level": 8, "state": "working", + "antifeatures": [ + "non-free-assets" + ], "url": "https://github.com/YunoHost-Apps/20euros_ynh" }, "243": { @@ -92,6 +95,9 @@ "subtags": [ "download" ], + "antifeatures": [ + "non-free-network" + ], "url": "https://github.com/YunoHost-Apps/alltube_ynh" }, "ampache": { @@ -199,6 +205,9 @@ "subtags": [ "pictures" ], + "antifeatures": [ + "non-free-network" + ], "url": "https://github.com/YunoHost-Apps/bibliogram_ynh" }, "biboumi": { @@ -527,6 +536,9 @@ "category": "games", "level": 8, "state": "working", + "antifeatures": [ + "tracking" + ], "url": "https://github.com/YunoHost-Apps/Cubiks-2048_ynh" }, "dato": { @@ -1375,6 +1387,9 @@ "subtags": [ "videos" ], + "antifeatures": [ + "non-free-network" + ], "url": "https://github.com/YunoHost-Apps/invidious_ynh" }, "invoiceninja": { @@ -2168,6 +2183,9 @@ "subtags": [ "microblogging" ], + "antifeatures": [ + "non-free-network" + ], "url": "https://github.com/YunoHost-Apps/nitter_ynh" }, "noalyss": { @@ -3557,6 +3575,10 @@ "websites", "blog" ], + "antifeatures": [ + "non-free-addons", + "paid-content" + ], "url": "https://github.com/YunoHost-Apps/wordpress_ynh" }, "writefreely": { @@ -3612,6 +3634,9 @@ "subtags": [ "download" ], + "antifeatures": [ + "non-free-network" + ], "url": "https://github.com/YunoHost-Apps/youtube-dl-webui_ynh" }, "yunofav": { @@ -3701,6 +3726,9 @@ "subtags": [ "network" ], + "antifeatures": [ + "non-free-dependencies" + ], "url": "https://github.com/YunoHost-Apps/ztncui_ynh" }, "zusam": { diff --git a/list_builder.py b/list_builder.py index be49b1f1..41c04d80 100755 --- a/list_builder.py +++ b/list_builder.py @@ -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.get("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: From b7e1d4a1f578554389c9c10b00052153435b018f Mon Sep 17 00:00:00 2001 From: Tagada <36127788+Tagadda@users.noreply.github.com> Date: Fri, 21 Jan 2022 23:37:13 +0100 Subject: [PATCH 2/7] Apply suggestions from code review Co-authored-by: tituspijean --- antifeatures.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/antifeatures.yml b/antifeatures.yml index 9df020ea..611c6a0f 100644 --- a/antifeatures.yml +++ b/antifeatures.yml @@ -4,7 +4,7 @@ en: "Tracking" fr: "Pistage" description: - en: "Track you and/or report your activity to somewhere, either without your permission or by default." + en: "Tracks you and/or reports your activity to upstream maintainer or third parties, either without your permission or by default." - id: non-free-network icon: network-wired @@ -12,7 +12,7 @@ en: "Non-free Network Services" fr : "Services réseau non-libres" description: - en: "Promote or depend entirely on a Non-Free network service." + en: "Promotes or depends entirely on a non-free network service." - id: non-free-addons icon: puzzle-piece @@ -20,14 +20,14 @@ en: "Non-free Addons" fr: "Extensions non libres" description: - en: "Promote other Non-Free applications or plugins." + en: "Promotes other non-free applications or plugins." - id: non-free-dependencies icon: book title: en: "Non-free dependencies" description: - en: "Require things that are not Free Software in order to run" + en: "Relies on software dependencies that are not free in order to run." - id: non-free-assets icon: file-image @@ -35,15 +35,15 @@ en: "Non-free assets" fr: "Ressources non libres" description: - en: "Contain and make use of non-ree assets. The most common case is apps using artwork - images, sounds, music, etc. - under a non-commercial license." + 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." - id: known-vulnerability icon: face-frown title: - en: "Known Vulnerability" + en: "Known vulnerability" fr: "Vulnérabilité connue" description: - en: "Known security vulnerability." + en: "The software presents a known security vulnerability, yet to be fixed." - id: deprecated-software icon: face-frown @@ -51,7 +51,7 @@ en: "Upstream not maintained" fr: "Application non maintenue" description: - en: "This software is not maintained anymore." + en: "This software is not maintained anymore. Expect it to break down over time, be exposed to unfixed security breaches, etc." - id: package-not-maintained icon: face-frown @@ -59,7 +59,7 @@ en: "Package not maintained" fr: "Paquet non maintenu" description: - en: "YunoHost package is not maintained anymore." + en: "This YunoHost package is not maintained anymore." - id: paid-content icon: coins @@ -67,13 +67,13 @@ en: "Paid content" fr: "Contenu payant" description: - en: "Promote or depend entierly on a paid service." + en: "Promotes or depends, entirely or partially, on a paid service." - id: arbitrary-limitations icon: face-frown title: en: "Arbitrary limitations" - fr: "Limitations arbritraires" + fr: "Limitations arbitraires" description: en: "Please refer to the README." fr: "Se référer au fichier README." From 81108e210f4d27fe88bd2730960a1824c5ef5ecb Mon Sep 17 00:00:00 2001 From: Tagada <36127788+Tagadda@users.noreply.github.com> Date: Fri, 21 Jan 2022 23:53:12 +0100 Subject: [PATCH 3/7] Apply suggestions from code review --- antifeatures.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/antifeatures.yml b/antifeatures.yml index 611c6a0f..d40fcec0 100644 --- a/antifeatures.yml +++ b/antifeatures.yml @@ -10,9 +10,10 @@ icon: network-wired title: en: "Non-free Network Services" - fr : "Services réseau non-libres" + 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 From edbe94191ab94d31ea584a5ef2a144cf35fe3605 Mon Sep 17 00:00:00 2001 From: Tagadda <36127788+Tagadda@users.noreply.github.com> Date: Wed, 9 Feb 2022 19:42:44 +0000 Subject: [PATCH 4/7] Some suggestions from reviews --- antifeatures.yml | 41 +++++++++++++++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/antifeatures.yml b/antifeatures.yml index d40fcec0..bbe71991 100644 --- a/antifeatures.yml +++ b/antifeatures.yml @@ -4,7 +4,7 @@ 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." + en: "Tracks you and/or reports your activity to upstream maintainer or third parties, either without your permission or by design." - id: non-free-network icon: network-wired @@ -38,13 +38,14 @@ 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." -- id: known-vulnerability - icon: face-frown +- id: bad-security-reputation + icon: door-open title: - en: "Known vulnerability" - fr: "Vulnérabilité connue" + en: "Bad security reputation" + fr: "" description: - en: "The software presents a known security vulnerability, yet to be fixed." + en: "Has a bad security reputation, such as deprecated addons." + fr: "" - id: deprecated-software icon: face-frown @@ -55,12 +56,12 @@ en: "This software is not maintained anymore. Expect it to break down over time, be exposed to unfixed security breaches, etc." - id: package-not-maintained - icon: face-frown + icon: user-slash title: en: "Package not maintained" fr: "Paquet non maintenu" description: - en: "This YunoHost package is not maintained anymore." + en: "This YunoHost package is not maintained and need adoption." - id: paid-content icon: coins @@ -78,3 +79,27 @@ 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" + description: + en: "Was replaced by another app. Please refer to the README." + fr: "A été remplacé par une autre application. Se référer au fichier README." + +- id: alpha-software + icon: flask + title: + en: "Alpha Software" + despcription: + en: "Early development stage. May contain unexpected features such as bugs and security vulnerability." + +- 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." From 6db46e804655ad91fe8471f9adccc9e52c82aaa3 Mon Sep 17 00:00:00 2001 From: Tagadda <36127788+Tagadda@users.noreply.github.com> Date: Wed, 9 Feb 2022 20:08:03 +0000 Subject: [PATCH 5/7] [fix] config_panel.toml is a relevant file --- list_builder.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/list_builder.py b/list_builder.py index 41c04d80..9e04442b 100755 --- a/list_builder.py +++ b/list_builder.py @@ -219,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"] From ebd48c00afd778e7035adbb288ca92d327d29f56 Mon Sep 17 00:00:00 2001 From: Tagadda <36127788+Tagadda@users.noreply.github.com> Date: Wed, 9 Feb 2022 20:09:00 +0000 Subject: [PATCH 6/7] build antifeature list from app manifest + catalog --- list_builder.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/list_builder.py b/list_builder.py index 9e04442b..59b9a268 100755 --- a/list_builder.py +++ b/list_builder.py @@ -200,7 +200,7 @@ def build_catalog(): "broken": level <= 0, "good_quality": level >= 8, "bad_quality": level <= 5, - "antifeatures": infos.get("antifeatures"), + "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: @@ -249,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', []))) } From b4f1174e5923378818913efc97212b2b1e792f48 Mon Sep 17 00:00:00 2001 From: tituspijean Date: Tue, 15 Feb 2022 21:41:19 +0100 Subject: [PATCH 7/7] Antifeatures translations --- antifeatures.yml | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/antifeatures.yml b/antifeatures.yml index bbe71991..4628e479 100644 --- a/antifeatures.yml +++ b/antifeatures.yml @@ -4,7 +4,8 @@ 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 design." + 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 @@ -22,13 +23,16 @@ 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 @@ -37,15 +41,16 @@ 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: "" + fr: "Mauvaise réputation en matière de sécurité" description: en: "Has a bad security reputation, such as deprecated addons." - fr: "" + 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 @@ -54,6 +59,7 @@ 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 @@ -62,6 +68,7 @@ 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 @@ -70,6 +77,7 @@ 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 @@ -84,17 +92,19 @@ icon: rotate title: en: "Replaced by another app" - fr: "Remplacé par" + fr: "Remplacé par une autre application" description: en: "Was replaced by another app. Please refer to the README." - fr: "A été remplacé par une autre application. Se référer au fichier 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 unexpected features such as bugs and security vulnerability." + 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 @@ -103,3 +113,4 @@ 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."