Search the blog

A blog about the magic which dwelves deep into KMess

Allowing user feedback with LikeBack

LikeBack is a very effective way to allow your application’s users to contribute actively with your project.

It is composed by two parts:

  • A frontend, the most important part, that which will be seen and used by the users.
  • A backend, which the developers can use to see and answer to what users had to say.

In seven months of activity (we’ve started using it in KMess since february 2009) we’ve received well over 2500 comments: of those, the vast majority was useful to us: this should help understanding how bloody useful LikeBack is.

The flow of comments will be to you extremely useful to understand what your users want: we found that LikeBack really helped in giving the project a direction. It will be *their* direction – which needs to be also *yours*, if you want to keep your project alive! I think that 99% of the time, you’ll find the direction suggested by LikeBack comments will be the best one :)

Now a little tutorial on how it works, and how to install it (it’s not hard!):

The frontend

A screenshot, as usual, is worth a thousand words:

The LikeBack frontend

Users can send four types of feedback: things they liked; things they didn’t like; bugs; ideas for features.

The frontend is a set composed by:

  • a bar, which automatically moves itself to the current window, with the four icons corresponding to the four feedback types;
  • A dialog, which is used to allow the user to compose then send the feedback;
  • A “LikeBack” object, which is practically the only thing you’ll have to insert in your code, and allows you to customize how LikeBack will integrate in your application.

Once it is installed (more on this later), the user can use it in two ways. First, by clicking in the Bar icons, a very direct way; and second, by choosing “Send comment to the developers” from the Help menu. Once one of these action is made, the Dialog pops up. The developers can choose the languages they can read, to help the users choose how to write the feedback. Notice the online translator option (linking back to Google Translate) :)

After writing their comment, the user can choose whether he/she wants to remain anonymous or to be contacted back in case it’s needed. The obligatory privacy statement makes it clear that you developer won’t mess with the collected personal data – which amount to an email, the app’s version number, and which app’s window the feedback was sent from; anonymity or privacy assurance help keeping the user comfortable about telling his/her opinions to you.

Once he/she is done, the Ok button will send an HTTP POST request to your LikeBack installation, somewhere on the Web.

The backend

This is a simple web application, running on any web host with PHP5 and MySQL (you need root shell access to add some neat extras, explained below). Screenshots:

Backend: List of comments Backend: Comment

The first screenshot shows how flexible LikeBack is: you can show which bugs types to view or hide, and customize the list however you may wish. The list itself shows a very generous set of details from each ticket, and the line color gives a direct visual key to the feedback types.

In the comment view, easily accessible by clicking on the comment text, you will be able to see an extended form of the ticket list details, along with the commenter’s email (if any). The remarks system is a very powerful way to communicate with the user: it allows to send your remark both to the ticket remarks list, and also to the user email. Using a certain script which must be installed on your mail server, the user will be able to reply him/herself to the remark, establishing a full and direct conversation between you and them. If this is not listening to your user base, what is? 😉

Of course you can delegate LikeBack interaction to specific members of the team, to help keeping focus – we at KMess can get 5 to 20 comments each day, this means you could need to use a significant development time on LikeBack. Trading and sharing burdens between team members is even more important!

Another *great* feature of LikeBack is Trac triaging – you can enter a Trac ticket number, and LikeBack will close the ticket as soon as it is marked as done in Trac, also posting a remark about the event :) This can be expanded of course, making a Bugzilla interaction plugin is surely not hard!


How do you get LikeBack up & running? At the time of writing, the best way is checking out the LikeBack SVN; we will soon release version 1.4, which will also be packaged on SourceForge as a tarball.

Here’s the LikeBack SVN repo:

Installation instructions about the backend are also present in the README file:

  1. Install the Smarty library, usually by installing the smarty package on your server’s shell, or by installing it locally on the LikeBack directory (this is not tested at the moment, can you tell us if it works?)
  2. Put the Likeback backend/ directory contents in a publicly accessible location, say /likeback/ on your server, or somewhere less accessible/guessable, if you want
  3. Restrict access to admin/ by HTTP/HTTPS authentication
  4. Copy db.conf.template.php to db.conf.php and modify it with your database’s access details. We recommend, if possible, to use a separate username and password only for LikeBack, with only access to the LikeBack tables
  5. Make sure the user that runs all scripts can write to admin/templates/cache
  6. Run admin/install.php
  7. Optionally, to have LikeBack send weekly reminders to you, add a crontab entry to run cron/sendReminders.php weekly (see cron/crontab file about this)
  8. Test your installation!

When it’s ready, move on to the frontend! Copy the frontend/ directory in your source tree. Then we need to add LikeBack to a window: usually, the first QMainWindow which gets shown will be the best place for LikeBack. From the moment it’s enabled, the LikeBack Bar will move to every window or dialog automatically. If you want to add the menu entries to send feedback in other windows, you can instance LikeBack somewhere global, then call likeBack->createActions( actionCollection() ) whenever your other main windows are instanced.

Include the “likeback.h” file. Then, here’s the code to instance and set up LikeBack initially:

  1. Instance the LikeBack object:
    LikeBack *likeBack = new LikeBack( LikeBack::AllButtons, true /*showLikeBackBar/ );
    The first argument allows you to choose (with ORed flags) which of the 4 available feedback types you want to enable. The others will not show up anywhere.
    The bool argument allows you to initially show or hide the LikeBack Bar – but the user can override this option with the Help menu checkbox (also added by LikeBack).
  2. Then you need to set up where to send the feedback; that is, your server:
    likeBack->setServer( "", "/where/you/set/up/likeback/send.php", 80 );
  3. You can also choose on which windows the LikeBack bar is allowed to show up:likeBack->setWindowNamesListing( LikeBack::AllWindows );
  4. An important line: choosing which languages are known by the development team: at least one of each team members which have access to the LikeBack web interface must know at least one of the language locales you specify here (use the ISO short format in the list):
    likeBack->setAcceptedLanguages( QStringList() << "en" << "nl" << "it" << "de" );
  5. Finally, add to your window the LikeBack menu actions:likeBack->createActions( actionCollection() );
    and in your ui.rc file:

    <Menu name="help">
    <Action name="likeBackSendComment" />
    <Action name="likeBackShowIcons" />

  6. If you don’t use a KXmlGuiWindow, but a plain KMainWindow, add the actions like this:KActionCollection *collection = new KActionCollection();
    collection->addAssociatedWidget( this );
    likeback->createActions( collection );
    menu()->addAction( collection->action( "likeBackSendComment" );
    menu()->addAction( collection->action( "likeBackShowIcons" );

See, it’s not really hard! And I must assure you – it pays off 😉


We didn’t invent LikeBack. We first learned about it from BasKet Note Pads, when KDE 3.5 was on all of our desktops.  We adopted it and, around october 2008, ported it to KDE4 – but only activated it in February 2009. Since then, we have improved it dramatically, and it’s really better than it was before. And we’re not done at all!


We’d like to see LikeBack in a lot of apps! If you have any question feel free to poke us (Valerio Pilo and Sjors Gielen):

  • on IRC: #kmess on Freenode
  • on our forum:
  • via email:

Thanks for reading 😉

PS. on a funny side, it took 2500+ comments to get our very first insult 😀

10 Responses to “Allowing user feedback with LikeBack”

  1. peter Says:

    Really good job, Im not a developer but i very muhc like both the idea and the actual app.

    Unleash the power of FLOSS :-)

  2. Kurt Hindenburg (kurthindenburg) 's status on Sunday, 06-Sep-09 16:37:03 UTC - Says:

    […] a few seconds ago from eventbox […]

  3. afiestas Says:

    Wow! I really like this!
    I’m almost sure that we’ll implement LikeBack in k**** (no spam xD), will be so helpful!

  4. Wolfgang Says:

    Hi all,

    I like this tool. But I do not like the place, where it is presented: the help menu.

    One of the best features of KDE, and open source in general, is its community: developers, designers, user, and all the other people involved. I think it is time to add another menu entry, community, to the menu bar. There all the community related things like
    – Report Bug
    – About
    – About KDE
    and of course
    – Send comment to the developers
    could be gathered. This, I think, would strenghten the community feeling, and would show new users at a glance that there is more to gain than “just” first class software for free!

    Cheers, Wolfgang

  5. tsb Says:

    I was surprised the first time I saw this in kmess. It really is a great way to get feedback!

  6. Diederik van der Boor Says:

    In the beta releases of KMess, there was an introduction screen to advertise this feature, and the smileys were prominently visible in the menubar. In the final release we’ve decided that having the smileys there is a bit too much. They are disabled by default for the lack of a better solution.

    I do agree something else would be nice, and fit perfectly in the vision of bringing the community to our software and desktop offering.

  7. patpi Says:

    Is there any chance to make LikeBack versions available also for Qt-only apps? (ie. -options –build-with-kde during configuration or build-with-qt)
    Is port to Qt possible at all? Is it a lot of work?
    Will you allow patches for this?

  8. Amroth Says:

    It is almost certainly possible and we’ll gladly accept patches for it!
    Plus, I don’t think a port to Qt will take ages 😉

  9. mxttie Says:

    Yes, the first time I learned about likeback was when I was using KAlarm (which must have it since ages). I was simply amazed! so effective! and as a user, you feel listened to :) I remember I was totally baffled when I actually got a response to my comment through likeback. I thought: yeah right, I can give feedback right from the app itself, but it will end up in a black hole.. 😉 I was proven wrong.

  10. Diederik Says:

    Lol, I just found out Amarok 2.3 beta also used Likeback: 😀