I must say I’m surprised by this kind of reaction!
It’s extremely rare to talk publicly about this (I think software avoids talking about it to not scare users, especially in open-source), but I don’t know a single open-source software that doesn’t know its version fragmentation statistics, usage by country, and number of installations. Sorry for throwing a stone in the pond ![]()
Have you ever developed with VSCode? Used Firefox (or another)? Or even written messages on a Discourse forum like this one?
All these software collect statistics.
I’m not saying « because they do it, we should do it ». I’m not even talking about collecting in-depth statistics like these software do, I’m not even talking about keeping IPs, I’m just talking about keeping, « server-side », a log of update calls just to know the installation park.
Are you shocked that there are analytics on the Gladys site for example? ![]()
Exactly! It’s very important to know which versions are running in the wild, just for security.
We think of France as a small country, but for example in the US, just knowing « United States » gives little information, right? Having a truncated latitude/longitude to know if it’s more west coast/east coast seems good to know where the community is.
I may have used a word a bit too strong when talking about telemetry… ![]()
I’m just proposing to count the API update calls on the server side and make statistics on the user-agent of the program that calls.
In short, with each update call, if the program that calls has as user-agent « gladys v4.0.1 », in short, I count save +1 for Gladys v4.0.1, and I do a GeoIP to get the country + the region + a very imprecise latitude/longitude.
I’m thinking of this kind of 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()
);

