Option to provide anonymous usage statistics enabled

The option to provide anonymous usage analysis from Qt Creator 4.10.1 has been enabled today. Please read on to understand what kind of data we are collecting when you choose to send anonymous usage statistics, why we are interested in this and how is the data collected. 

Why to collect usage statistics? 

The Qt Company has an increasing need to better understand, how Qt products are used by both commercial and open-source users. This information is being collected from bug reports and suggestions, using customer and user surveys, and Qt mailing lists. Now, we want to offer an option for anonymous data collection in Qt Creator as well. The collected data helps to understand what Qt versions developers use, which compilers are used, how much Qt Creator itself is used. This data will be used for improving Qt and Qt Creator to be even better fit for the needs of our users. 

How to enable and control data collection?

The data collection takes place in the new Qt Creator telemetry plugin, which is installed into Qt Creator, if the user accepts the data collection in the Qt Online Installer. No plugin is installed or analytics data is collected, unless the user explicitly chooses the option to help us by sending the anonymous usage statistics. 

The following page will be used in the Qt Online Installer to ask, if the user wants to join in collecting the usage data.

installer view

The Qt Creator telemetry plugin uses the KUserFeedback framework (Thanks, KDE!) to collect the usage data. The library has been designed from the user data privacy point of view and we are committed to respect the same privacy rules.

All collected data is fully transparent to the user and the user can control, what data will be transmitted to the backend storage if anything.  The user can control and check in Qt Creator Telemetry settings, what data is collected, if anything. The settings can be found in Preferences in macOS and Tools > Options menu in Windows and Linux. 

There are five modes in the settings, which the user can change to control, what data is collected. 

  • Basic system information mode collects data about Qt and Qt Creator versions and about the compiler and the QPA plugin the developer uses. 
  • Basic usage statistics mode adds data about Qt Creator usage itself. This data includes the number of times Qt Creator has been launched and the total Creator usage time. 
  • Detailed system information adds screen parameters and OpenGL information to basic usage statistics. Which graphics card is used and who is the graphics card vendor.
  • Detailed usage statistics adds license information, Qt Quick Designer usage, locale information, build system type, and usage of different Qt Creator modes into the collected data. 

And No telemetry obviously means no data is collected at all. 

Please note that currently No telemetry is the default mode. The user has to switch a higher mode to start data collection. In the future, the default mode will be Detailed usage statistics, but the user can easily change to lower modes. 

telemetry_levels

In addition to the levels, it is possible to enable and disable each collected data source separately. The actual data values sent to the backend are shown in Collected Data in the JSON format.

usage_data

The data is transmitted to the backend storage using an encrypted connection. The storage is located in the same Heroku backend, where we have the installer backend. Physically, data is stored in the Amazon cloud. 

If the user has accepted the data collection, it is possible to stop it at any time. The telemetry level can be set to No Telemetry. The user can also disable Qt Creator to load the telemetry plugin in About Plugins menu. 

telemetry_disableData privacy

Our priority in designing the telemetry plugin has been user data privacy. We do not collect any personal data, such as names, IP addresses, MAC addresses or project and path names. However, we want to identify, which data records belong to the same user. For that purpose, we use QUuid Qt class, which cannot be converted back to the actual values from which it was generated.

You can find more details about the user data privacy in telemetry privacy statement.

Data analysis

Usage data combined with Jira tickets and customer surveys will give us valuable information to improve workflows, tools, and product features. In The Qt Company, there are several groups, who are going to use the collected information.

Developer experience steering group

The group has bi-weekly meetings to plan, how the developer experience can be improved. 

  • How new users, i.e. evaluators are using Qt Creator? 
  • What examples are they looking for?
  • Can they build examples successfully? 
  • What is the right number of examples? What examples could they be? 
  • What modes are used most? How relevant Qt Quick Designer still is? 
  • How to improve retention? Where and when evaluators stop using Qt Creator? 

Product management 

There is a constant need to understand our users better to optimise maintenance and development efforts. Rather than following the absolute values of usage data, it will be more interesting to see, how data changes over time, monthly, quarterly or annually. 

  • Which are the most used Qt versions?
  • How much unsupported versions are still used? 
  • Which compilers and cross-compilers to support? Can we drop anything?
  • Which build tools are most frequently used? 
  • Is there any correlation between open-source and commercial downloads vs. Qt licenses used?

Community

  • It may be interesting for the community members to see, which platforms are most commonly used or which Qt tools and features Qt developers typically use.

 

We hope you see the value of data collection to The Qt Company and whole community and enable the data collection in Qt Creator. 

If you have any questions or concerns, please contact us info@qt.io

Additional note for developers, creating custom installers

The installer control script stops working, because the script does not find  the callback DynamicTelemetryPluginFormCallback. You may add either of the two callbacks below to your control script. The first one enables telemetry, while the latter disables that. 

Unfortunately, this is missing in the Installer Framework documentation, because the callback is meant only for the Qt installer.

// The Telemetry plugin page
Controller.prototype.DynamicTelemetryPluginFormCallback = function()
{
    var page = gui.pageWidgetByObjectName("DynamicTelemetryPluginForm");
    page.statisticGroupBox.enableStatisticRadioButton.setChecked(true);
    gui.clickButton(buttons.NextButton);
}

// Telemetry disabled 
Controller.prototype.DynamicTelemetryPluginFormCallback = function()
{
    var page = gui.pageWidgetByObjectName("DynamicTelemetryPluginForm");
    page.statisticGroupBox.disableStatisticRadioButton.setChecked(true);
    gui.clickButton(buttons.NextButton);
}

 

 

 


Comments