Skip to content

Analytics

freezy edited this page May 21, 2023 · 1 revision

In v2.1.1, I've added analytics to dmdext. It's an opt-out approach, meaning it's enabled per default, but you can disable it, if you wish.

I want to be transparent about this. Below you'll find my point of view of why analytics was added, what data is included, and who accesses that data.

Why?

I have created dmdext in 2016 and I have been maintaining and improving it ever since. I was recently mentioning this project to a future employer, and I had to admit that I'm completely clueless how many people are actually using it.

But knowing the traction of your project not only serves as bragging in a job interview, it also directly impacts your motivation. At least that's true for me.

The second reason is that until today, the only way of knowing whether a new table release is well received, is to look at the download stats. However, that doesn't tell the whole story. Knowing whether the game was actually played would be much more valuable. I'm planning to make this publicly available (see below).

The third reason is knowing about the average hardware of our user base is very valuable for future projects. More specifically, when developing VPE, it would be beneficial to know the configuration of the average pinballer's gaming rig, so we can optimize it in a more impactful way.

The fourth reason, and admittedly the weakest one, is curiosity. Maybe, through analytics, I'll discover usages I've never even thought about.

To summarize, the reasons are:

  1. To know how many users dmdext has
  2. To provide more detailed stats about table usage to the community
  3. To know about the typical user hardware, in order to better plan optimization for VPE
  4. Curiosity.

What?

Below, I'm going to list the exact data that is collected, and why. Since dmdext is open source, you can also just have a look at Analytics.cs, where most of the data is collected.

There are two events emitted: When a game starts, and when a game ends. The data included is identical, apart from the game duration, which is only included when the game ended.

Here is a table of the data.

Data Why it's there
Event name To know what event it was (game started or ended)
ID To count the users
Timestamp To know when the event occurred, so we can split the stats by day / week / months
Version of dmdext To know whether users actually update sometimes
Host application which is using dmdext To know the most popular simulators, and maybe even learn about new ones
Where dmdext was downloaded To know the impact of other installers / distributors
Locale To know whether it would make sense to translate dmdext in the future
OS and version To know with which Windows version dmdext is used most, which is useful in terms of available APIs
Screen resolution To know how common 4K screens are
CPU info To know how many cores are available and how fast they are
Total Memory To know with how little memory users can get away with
GPU info To know on which brand, generation and driver most users are running on
DMD output To know which DMDs are the most commonly used, and how they compare to virtual DMDs
Game ID To know which game was started or ended

Where?

Today, analytics are sent to Rudderstack, where they are relayed to a BigQuery table. I have a local instance of Metabase where I can pull this data out of BigQuery and create meaningful dashboards.

I want to share this data back to the community, specially data about games played. It's still work in progress, and there isn't much data available yet (v2.1.1 was just released), but I'll update this page when there is.

Meanwhile, feel free to ping me or comment about this topic in the release thread.

Clone this wiki locally