Since this is a sensitive topic I'll explain it in great detail:
It helps me to keep track of software quality and "acceptance".
This App is for Windows, Linux and Mac users. As I learned quite early: if something works for one person it most certainly fails for others.
electron-telemetry is a small project that records errors, events, the used architecture and operating system, how much memory the app uses (so I can detect memory leaks). The information recorded is limited to technical data (for instance not even the IP is logged).
It's source can be found here: https://github.com/thomasnordquist/electron-telemetry
Firebase is "the standard" for mobile apps, for electron apps there is not really a good free product on the market to ensure that your users are crash free. I used "nucleus" before but since version 0.1.1 I decided to do the reporting myself.
This is the processed view of the data using Metabase:
This is a snapshot from the server logs
{ system: { arch: 'x64', platform: 'darwin' },
appVersion: '0.0.7',
events: { HELLO_EVENT: [ 1547714886134 ] },
now: 1547714886135,
transactionId: '1767d251-f492-4f2c-aa62-88add3acc26b' }
{ errors:
[ { time: 1547714887921,
message: 'He\'s dead Jim!',
stack:
'Error: He\'s dead Jim!\n at ./src/tracking.ts.exports.default (./mqtt-explorer/app/build/bundle.js:142765:11)\n at new Promise (<anonymous>)\n at Object../src/tracking.ts (./mqtt-explorer/app/build/bundle.js:142764:1)\n at __webpack_require__ (./mqtt-explorer/app/build/bundle.js:20:30)\n at Object../src/index.tsx (./mqtt-explorer/app/build/bundle.js:142618:1)\n at __webpack_require__ (./mqtt-explorer/app/build/bundle.js:20:30)\n at ../backend/node_modules/charenc/charenc.js.charenc.utf8.stringToBytes (./mqtt-explorer/app/build/bundle.js:84:18)\n at ./mqtt-explorer/app/build/bundle.js:87:10' } ],
now: 1547714887921,
transactionId: '53bf9aac-e695-40cc-9a81-b1cf3398843d' }
The transactionId is a "Universal Unique Identifier", the transactionId is used do avoid duplicate entries. A event like HELLO_EVENT
or CONNECTION_SET_CONNECTED
ONLY contains a timestamp, and no other data, so I know the order of events.
So now I can see: "Oh, there have been two crashes the last day".
Then I can click on the log entry below and see something like: CONNECTION_SET_CONNECTED, CONNECTION_FAILED, SHOW_ERROR, CONNECTION_SET_DISCONNECTED and a stacktrace (of bundled JavaScript, which is still kind of hard to understand).
This then allows me to instantly fix the error if I figured out what is going on: https://github.com/thomasnordquist/MQTT-Explorer/commit/e0d7f45ab88a23650e7f4b40950f488886299289
This is the beauty of open source. I could always simply tell you "I do not store personal data".
BUT It's all open for everyone to see
P.S.: It also motivates if I see that someone uses my software