Please, see our response:
Due to the large amount of worry about this PR, (which we completely understand), we want to clarify exactly what is going on:
- Telemetry is strictly optional and disabled by default. No data is shared unless you choose to opt-in and enable telemetry.
- Telemetry only works in the builds made by GitHub CI from the official repo (the telemetry URLs are only defined there).
- If you are compiling Audacity from source, we will provide a CMake option to enable the telemetry code. This option will be turned off by default.
Why have telemetry at all?
Essentially, it’s to help us to identify product issues early:
- Audacity is widely used across several platforms, but we have no information on the application stability.
- It is difficult for us to estimate the size of the user base accurately.
- We need a way to make informed decisions about which OS versions to support. For example, can we raise the minimum version of the macOS to 10.10 to update the wxWidgets to the latest version?
- We have a known issue with the new file format introduced in Audacity 3.0. We found it with the great help of the community members on our forum. However, there is no way for us to estimate the impact of these issues on users. Is it just a random case? Do we need to rush the work on the recovery tool or help the users one by one? Or do we need to rethink the file format to make it safer and more easily recoverable?
Regarding the concerns about the choice of providers:
- We do not incorporate cross-site tracking, limiting the ability to identify the user by both Google and Yandex.
- Yandex would only receive the “application opened” event to help us estimate the size of the user base.
- Google would only receive:
a. Session start and end events;
b. Errors for debugging;
c. File formats used for import and export;
d. OS and Audacity versions;
e. Use of effects, generators, and analysis tools to prioritize future improvements;
- We will consider replacing Google and Yandex with another service if we find one that fulfills our requirements - thanks for the suggestions and keep them coming.
Just to reiterate, telemetry is completely optional and disabled by default. We will try to make it as clear as possible exactly what data is collected if the user chooses to opt-in and enable telemetry. We will consider adding the fine-grained controls that some of you have asked for.
To address the concerns about use of private library versions, the largest part of this pull request is a networking layer built on top of libcurl. This library is chosen as it is an industry-standard for cross-platform networking. It is exceptionally tested and reviewed by industry experts. The layer on top of it, aka
lib-network-manager meant to simplify the development of future features. libcurl is used without any patches. It is possible to use the system-provided version of the library available on the Linux distributions, and we will double-check that this works as expected.
Original PR description:
This request provides the basic telemetry for Audacity.
To implement the network layer libcurl is used to avoid issues with the built-in networking of the wxWidgets.
Universal Google Analytics is used to track the following events:
- Session start and end
- Errors, including errors from the sqlite3 engine, as we need to debug corruption issues reported on the Audacity forum
- Usage of effects, sound generators, analysis tools, so we can prioritize future improvements.
- Usage of file formats for import and export
- OS and Audacity versions
To identify sessions we use a UUID, which is generated and stored on the client machine.
We use Yandex Metrica to be able to correctly estimate the daily active users correctly. We have to use the second service as Google Analytics is known to have some really tight quotas.
Both services also record the IP the request is coming from.
Telemetry collection is optional and configurable at any time. In case of data sharing is disabled - all calls to the telemetry Report* functions are no-op.
Additionally, this pull request comes with a set of libraries to help the future efforts on Audacity.