Warning, /libraries/kuserfeedback/README.md is written in an unsupported language. File is not indexed.
0001 # KUserFeedback 0002 0003 Framework for collecting feedback from application users via telemetry and targeted surveys. 0004 0005 ## Telemetry 0006 0007 * Extensible set of data sources for telemetry. 0008 * Full control for the user on what data to contribute. 0009 0010 ## Surveys 0011 0012 * Distribute surveys and offer users to participate in them. 0013 * Survey targeting based on telemetry data. 0014 * Allow the user to configure how often they want to participate in surveys. 0015 0016 ## Components 0017 0018 This framework consists of the following components: 0019 * Libraries for use in applications. 0020 * QML bindings for the above. 0021 * A server application. 0022 * A management and analytics application. 0023 0024 ## Integration 0025 To use this framework in your application, on a high level you have to do 0026 the following steps inside your program: 0027 * Create an instance of KUserFeedback::Provider for the entire lifetime of your 0028 application, and configure it as described in its documentation. 0029 * Add one or more data sources to the provider, choosing from the standard 0030 built-in ones, or by adding custom ones deriving from KUserFeedback::AbstractDataSource. 0031 * Add a way to notify your users about surveys, and to encourage them to contriubute 0032 in the first place, by hooking a suitable user interface up with the corresponding 0033 signals in UserFeedback::Provider. KUserFeedback::NotificationPopup provides a 0034 reference widget for this purpose. 0035 * Add a way for your users to configure what data to contribute, and how often 0036 to be bothered by surveys. KUserFeedback::FeedbackConfigDialog provides a 0037 reference implementation of a configuration dialog for this. 0038 0039 ## Deployment 0040 For information on how to deploy the server parts, please see the 0041 [INSTALL](https://commits.kde.org/kuserfeedback?path=INSTALL) file. 0042 0043 ## Usage Documentation 0044 Information on how to use KUserFeedback from a product manager point of view can 0045 be found in the user manual of UserFeedbackConsole. Start UserFeedbackConsole and 0046 press `F1` to get to the user manual. 0047 0048 ## Frequently Asked Questions 0049 0050 _Why does the telemetry data contain no unique user/installation/machine id?_ 0051 0052 KUserFeedback is designed to be compliant with [KDE Telemetry Policy](https://community.kde.org/Policies/Telemetry_Policy), 0053 which forbids the usage of unique identification. 0054 If you are using KUserFeedback outside of the scope of that policy, it's of course 0055 possible to add a custom data source generating and transmitting a unique id. 0056 0057 _How can duplicated submissions be detected without unique identification?_ 0058 0059 KUserFeedback addresses this by using a fixed time interval for telemetry data submission. 0060 If for example Provider::submissionInterval is set to one week, aggregating data in one 0061 week intervals ensures that there's only at most one sample included from each installation. 0062 The other way around, setting Provider::submissionInterval at least as high as the average 0063 usage interval of your application ensures a substantial amount of installations have 0064 submitted a sample in this interval. A frequently used application such e.g. an email 0065 program can therefore get good results with a smaller value than e.g. a special purpose 0066 application. 0067 0068 _How can developments of a user be tracked without unique identification?_ 0069 0070 If you want to observe how usage patterns change as your users gain more experience 0071 with the application, there are multiple ways to do that: 0072 - Include a UsageTimeSource, and correlate the relevant usage data with how long 0073 the application has been used. 0074 - It is possible to track arbitrary historic development using custom data sources 0075 via AbstractDataSource::reset. This method is called after each successful submission, 0076 allowing you to implement a "memory" for your data source, and e.g. submit differential 0077 rather than absolute values.