Parlons de Gladys V4

Je t’avoue que je suis étonné par ce genre de réaction!

C’est extrêmement rare qu’on parle publiquement de ça (je pense que les logiciels évitent d’en parler pour pas effrayer les utilisateurs, surtout en open-source), mais je ne connais pas un seul logiciel open-source qui ne connait pas ses statistiques de fragmentation de versions, d’usage par pays, et son nombre d’installation. Désolé d’avoir jeté le pavé dans la mare :smiley:

Tu as déjà développé avec VSCode? Utilisé Firefox (ou autre)? Ou même écrit des messages sur un forum Discourse comme celui-ci? :smiley: Tous ces logiciels collectent des statistiques.

Je ne dis pas « parce qu’eux ils le font, il faut le faire ». Je ne parle même pas de faire des collectes de statistiques poussées comme le font ces logiciels, je ne parle même pas de garder les IP, moi je parle juste de garder, « server-side », un log des appels de mise à jour juste pour connaitre le parc d’installation.

Es-tu choqué qu’il y ait des analytics sur le site Gladys par exemple? :slight_smile:

Exactement! C’est hyper important de savoir quelles versions tournent dans la nature, rien que pour la sécurité.

On pense à la France qui est un petit pays, mais par exemple aux US savoir juste « Etats-Unis » ça donne peu d’infos, non? Avoir une latitude/longitude tronquée pour savoir si c’est plutôt côte ouest/côté est, ça me parait pas mal pour savoir où est la communauté.

J’ai peut être mis un mot un peu trop fort en parlant de télémetrie… :smiley:

Je propose juste de compter côté serveur les appels API de mise à jour et faire des stats sur le user-agent du programme qui appel.

En gros a chaque appel de mise à jour, si le programme qui appel a comme user-agent « gladys v4.0.1 », en gros je compte save +1 pour Gladys v4.0.1, et je fais un GeoIP pour avoir le pays + la région + un latitude/longitude très imprécise.

Je pense à ce genre de data model:

CREATE TABLE t_gladys_usage (
    id uuid DEFAULT uuid_generate_v4() NOT NULL,
    version character varying(255), -- Ex: v4.0.0
    country character varying(255), -- Ex: US
    region character varying(255), -- Ex: CA
    timezone character varying(255), -- America/San-Francisco
    region_latitude character varying(255), -- ex: 44.2
    region_longitude character varying(255), -- ex: 2.3
    created_at timestamptz NOT NULL default now()
);

Je vois pas l’intérêt à part pour la timezone.

Tant qu’on a le choix c’est pas un problème @pierre-gilles

Bonjour,
Je fais parti de ce qui ont téléchargé puis installé pour voir.
Je n’utilise pas Gladys au quotidien n’ayant pas assez de périphérique.
J’aimerai installer la reconnaissance vocale mais je ne veux pas donner mes coordonnées bancaire et stat à Google.
Que Gladys collecte un minimum d’information me semble normal pour faire évoluer les versions.
Mais il faut que cela reste large, ou sinon laisser le choix de ce que l’on souhaite envoyer.
La version, le pays, la région me semble acceptable.

@pierre-gilles arff j’aurais peut être dû mettre un petit smiley histoire de comprendre mon humour à 2 balles… C’était une boutade, bon elle avait peut être pas sa place ici sorry !

Après pour ce qui est des multiples pistages qui se trouve sur le Web, je pense être assez protégé, ublock, eset smart security avec son pare-feu en mode strict et interactif, ensuite je laisse bloquer où non selon mon choix… Je ne suis pas développeur non, je suis maçon.
encore une fois, sorry que tu es été choqué, ce n’était pas le but de mon message.

Ps: je rencontre quelques erreur 502 d’nginx quand envoi des messages.

1 « J'aime »

En quoi ça aide de savoir ça, en quoi cela améliore la sécurité.

OK tu sais par exemple que telle version de gladys contient une faille. Super, mais si tes données sont anonymes ça t’avance pas plus d’avoir des infos. Ça reste des statistiques.

Idem ça a du mal ce matin :grin:

Je ne parle pas de télémétrie envoyée par le client ou effectivement tu peux « opt-out », je parle juste de compter les appels serveurs. Il n’y aura même pas de opt-in, car Gladys ne fera rien de spécial! On ne collecte même pas d’informations personnelles, tout est côté serveur de façon anonyme.

Je vais donner quelques exemples de comparaison, parce que j’ai l’impression que les réactions sont disproportionné par rapport à l’enjeu ^^ J’ai du mettre des mots trop fort.

Quand tu fais:

docker pull gladysassistant/gladys
npm install 

On est d’accord, docker-cli et npm-cli font des appels aux serveurs de Docker et NPM?

Docker garde des traces de ces appels, déjà parce que ça utilise leur infra (il faut bien qu’ils sachent le volume de traffic sur leur propre serveurs, c’est le minimum si ils veulent dimensionner leur API), et en plus parce qu’ils mettent à disposition des statistiques de téléchargements sur les différents repository.

Cela permet de calculer ça:

Docker veut aussi probablement savoir quelle version du « docker-cli » tourne chez les clients, pour savoir si ils peuvent deprecate des routes d’API d’anciennes versions, ou si ces versions sont encore trop utilisées.

Je veux juste avoir ces mêmes stats « server-side ».

C’est important de connaitre la fragmentation du parc car tu peux prendre des décisions basé sur ces stats.

Exemple: L’application Android, elle se base sur l’API de Gladys. Si on ajoute une nouvelle route dans la version 4.2.1 de Gladys, on veut savoir si on peut utiliser cette route dans l’application Android.

Si on voit que 99% du parc fait tourner Gladys 4.3.0 qui est après 4.2.1, alors on peut se dire « ok on peut implémenter la fonctionnalité ».

C’est qu’un exemple mais c’est pas le seul. C’est aussi un bon moyen de voir si le système de mise à jour fonctionne correctement et que le parc migre régulièrement.

1 « J'aime »

A bizarre! Je vais regarder si le serveur va bien.

Edit: Tout à l’air d’aller, même si niveau RAM j’ai l’impression qu’on est juste… 200 mo dispo sur 2go de RAM. Je surveille ça.

1 « J'aime »

On peut imaginer le scénario suivant :

Gladys V4.1.2 est extrêmement déployée et utilisée. Mais elle est touchée par une vulnérabilité qui permet a un attaquant de prendre la main a distance (donc vol de données, espionnage, infections, PC zombie, ransongiciel et j’en passe).
Une version v4.1.3 sort pour vite patcher tout ça, mais après quelques semaines grâce aux stats on voit que a peine 20% des utilisateurs on appliqué le patch.
Dans ce cas on pourrait faire une seconde communication ou réfléchir a de nouvelles actions pour protéger tout le monde.

C’est aussi pour ça que pas mal de solutions demandent une adresse email avant de télécharger le logiciel. En cas de problème tu peux rapidement contacter tout le monde.

1 « J'aime »

Salut,
Cela ne me pose aucun soucis que tu stockes ces données (même la ville, du moment que ce n’est pas l’adresse exacte mais ça ce n’est pas possible).

A partir du moment où un utilisateur surf sur le web, il laisse ces traces sur les serveurs qu’il visite.

Ce n’est pas le logiciel open souce côté client qui envoie ce données mais bien le serveur qui utilise ses logs, donc pour moi No souci

1 « J'aime »

Tiens j’ai trouvé la doc de Gatsby (projet open-source de site statique) sur les stats anonymes qu’ils enregistrent, c’est intéressant:

Ok ok let’s go :slight_smile:

@pierre-gilles et les autres bonjour :slight_smile:

Question concernant Gladys 4. On parle de sécurité etc … Pensez vous que cela peu être intéressant d’installer sur Gladys un outil comme par exemple Pi-hole qui permettrai de gérer les requêtes qui sortent de notre réseau ?

On a de nombreux objets connectés, et en fait on sait pas trop ce qu’ils font. L’idée est de les interdire de sortir vers l’extérieur mais seulement d’intéragir avec notre gladys. Je pense notamment à la gamme Xiaomi qui est super mais ça reste du chinois … Et on sait pas ce qu’ils font avec.

Vous en pensez quoi ? Vous avez peu être d’autres solutions ?

Je veux faire un réseau dédié à la domotique et séparé du réseau « public » utilisé par les téléphones et ordinateurs. Dans ce cas là, bloquer et monitorer les requêtes initiées vers l’extérieur depuis un objet connecté, c’est intéressant.
Mais Pi-hole serait soit une application totalement extérieure à Gladys que chacun peut choisir d’installer (même si on l’installe sur le même Raspberry Pi) , soit un plugin activable dans Gladys, que quelqu’un développera ?

Au final, c’est le mot « telemetry » qui fait peur, alors que ce que tu veux faire n’est pas du tout du même genre : quand j’entends (ou lis :slight_smile:) ce mot, je pense tout de suite à Windows (entre autre) et la quantité de données phénoménale que l’OS envoie de lui-même !
Alors que Gladys n’enverra rien, elle demandera seulement si une mise à jour existe, en précisant sa version actuelle. C’est côté serveur que tu pourras faire des statistiques sur les versions utilisées et les localisations approximatives.

Si ça peux permettre de faire évoluer Gladys et la communauté d’utilisateurs, je suis pour la collecte de stats.

  • version de Gladys utilisé
  • Pays

De mon côté je vais avoir 2 Gladys (habitation et travail), donc un seul téléchargement pour 2 instances, et la tes statistiques sont fausses.

Bah ouai @pierre-gilles a craqué l’allumette ce matin :boom: :grin:

2 « J'aime »

Alors tu as plusieurs façons de penser le problème tu peux évidement dire que l’application est à installé par les personnes. La deuxième idée pourrait-être de l’intégrer aussi dans l’image rasbian de Gladys et donc la mettre par défaut. Ensuite on aurait Gladys qui communiquerai avec l’API de pi-hole pour changer les règles ou juste activer désactiver le pi-hole.

C’est une idée qui peut être pas mal. En plus on peut même faire un docker juste à côté.

Top! Bon content que vous compreniez le besoin :slight_smile: Rien de méchant de mon côté, je veux juste un peu mieux comprendre l’usage et avoir les outils pour voir l’évolution du parc, mais sans compromettre la vie privée des utilisateurs.

L’implémentation actuelle que j’ai faites, full côté serveur comme prévu, je stocke dans une table:

CREATE TABLE t_gladys_usage (
    id uuid DEFAULT uuid_generate_v4() NOT NULL,
    client_id uuid NULL,
    event_type character varying(255),
    user_agent character varying(255),
    system character varying(255),
    node_version character varying(255),
    is_docker boolean, 
    country character varying(255),
    region character varying(255),
    timezone character varying(255),
    region_latitude double precision,
    region_longitude double precision,
    created_at timestamptz NOT NULL default now()
);

Quelques ajouts:

  • system: (linux, macos, windows). Ce sera utile pour connaitre la part de chaque OS.
  • node_version: (v10.0.0) la version de Node.js utilisée
  • is_docker (true/false): est-ce que Gladys tourne dans Docker?

Que des informations anonymes, mais très utile pour le projet.

Pourquoi pas un service qui lancera le container pi-hole + la configuration :slight_smile:

Pour moi c’est top d’expliquer comment faire et de tout mettre en place pour que ce soit facile à configurer à côté de Gladys, mais ce ne doit pas être installé par défaut.

L’image doit être minimal.

Egalement ok pour quelques stats mais pas poussé au niveau de la ville.
C’est pour cela que je ne me suis pas inscrit sur la carto du forum : imagine une faille et je n’ai pas mis à jour…

Même approximativement, c’est pas compliqué de me retrouver en recoupant les données sur le web (même actuellement je me demande si c’est pas déjà le cas…) et de venir faire mumuse avec la faille.

C’est un peu parano, pas poussé non plus parce que je ne filtre pas tout ce qui part de chez moi (Xiaomi) mais j’aime bien espérer avoir le contrôle sur ce type de donnée.

Par contre effectivement : Pays, OS, Version, Hardware ?, et autres joyeusetés, si ça sert à Gladys… :wink: