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
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? 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?
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…
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()
);