Usability Survey Framework

The Usability Survey Framework allows designers and developers to create small user feedback studies tailored to their application. A service component allows developers to create services to listen for activity on features within their applications (such as a click on a new button) and launch a survey tailored to collecting feedback about that feature. A survey component allows developers and designers to create custom feedback surveys to collect information from the user after they experience the features being studied in the application.

The first test case of the framework is to study KDE notifications. This includes a service that listens for notifications on D-Bus and a survey form that asks users about their notification experience after a notification is delivered.


The survey code layout is like that of a plasma applet. In fact, there is a plasma applet in contents/code/usabilitysurveyapplet.cpp and contents/code/usabilitysurveyapplet.h. This will most likely end up being the main UI piece of the survey framework. For the rest of the email, you can assume to be in contents/code and the paths will be relative from there.

The Survey class (survey.{h,cpp}) represents a survey and is the container for the various survey questions. The SurveyBuilder and SurveyGrammar classes (surveybuilder.{h,cpp} and surveygrammar.{h,cpp}, respectively) are used to build out the actual survey questions as objects from the survey that was specified. The Boost Spirit project is used for parsing the survey grammars and building complex objects from those grammars. The Qi and Phoenix subprojects are what is specifically used.

The questions that are supported by the framework are in the questions subdirectory. There are several different question types available. You'll want to use the source code here to determine how many different types of questions are supported.

At this point, the main thing left to do is to port the previous version of the notification survey at git:// to this framework. That is what the applet class mentioned about is the starting point for.

Original design document:

2011 GSoC Project:


This page was last edited on 18 May 2012, at 14:24. Content is available under Creative Commons License SA 4.0 unless otherwise noted.