Tuesday, June 11, 2013

Experimenting with user interfaces for todo lists

When I presented Polka, my experiment to reframe the user interface for address books, some people suggested that it would be interesting to try something similar for todo lists. So I did try. The result is a small app called Bliss, because it makes you happy and gives you peace of mind.

I started with taking the concept from Polka to have freely arrangeable items on a canvas organized in groups. That works, but it had a flaw, because the basic element of todos is not the individual item, but a list.

Todos are much more dynamic than information about people. You create, remove, and rearrange them all the time. Context matters. One powerful effect of writing todos down is that you relieve your brain from having to constantly make sure you don't forget about them. This only works, if it's easy and quick enough to structure and arrange the todos according to your mental model. Lists are the natural structure here to keep priorities and order.

So basically a group became a list, where you can reorder items by dragging them around, either within the list or to other groups.

But in addition to this it's also quite useful to have multiple lists in one view. You can for example model a flow between things to do today, this week, and this month, where items in one list are replenished from the next one. Or you can have something like a personal Kanban with lists for things to do, being done, and done. Or you can use a scheme like in the Getting Things Done method. The combination of groups and lists is pretty powerful here.

Bliss keeps the complete history of what you did, so you can always look or go back without cluttering your views with done items. It animates all the transitions when moving items or navigating groups, so you don't lose context when items are rearranged or you change the view. Especially when dealing with such dynamic objects like todo items, animations really make sense, not as eye-candy, but as a way to support you in keeping track of what's happening. That said, they also make the app more fun to use.

The menus are done in the same way as in Polka, as semicircular context menus, which works nicely not only with the mouse, but also on a touch screen.

The code is in the KDE git as well as on GitHub. If you want to give it a try and play around with the UI you can get it from there. I'm happy about feedback.

The technology behind this experiment doesn't matter much. It's mostly reusing Polka code, a QGraphicsView based Qt GUI with an Kode-generated XML backend, which stores data in a git repository. To move forward it would be nice to redo the UI in QML and connect it to Akonadi. But the more interesting part it experimenting with the user interface right now.

Looking ahead it would also be interesting to rethink the UI of mails and calendars by moving beyond the limitations of the traditional widget based approach. This could make it possible to come up with user interfaces which are much more tailored to the natural mental model of people, and make full use of the opportunities you have by not being constrained to paper. There are tons of unexplored areas here.

I'm looking forward to more experimentation.


  1. Interesting concepts. I use flat text files at the moment (organized in Kate) because it is the lowest-effort solution. And low effort for me is priority #1 - I really despise 'book keeping' in general and todo-lists and task trackers and all that - blegh.

    But I realize full well that flat text files have their downsides, it's just that I so easily can switch between various tasks - a temporary writing area, clip board - it can be long or short term, anything. Hard to beat, I suppose.

    But I do look forward to what you come up with, if you have something which works & has a rpm, I'd be happy to give some feedback if you like.

    1. Bliss actually can operate on flat text files as well, provided the are formatted using markdown. Might not work perfectly yet, but I would like to have it work just as a transparent editor for TODO text files as well.

      The app is not quite ready for an RPM yet. On the other hand, if somebody would want to package it...

  2. Hello,
    nice tool, i have migrated my todo lists from notes on plasma desktop
    i have just 2 problems
    1) it's unreadable with inverted color scheme - http://jouda.webx.cz/sshot/bliss.png
    is it "skinnable" somehow? I found some colors in code, but i don't know qt much
    2) it's easy to get lost - i created some lists in group, then ... i did something and lists got out of view area and it was hard to find them again

    1. 1) You are right, colors are hard-coded now. That's certainly not a good solution. I'll put it on my todo list. Don't hold your breath, though ;-)
      2) There is no indication of elements with are out of view on the canvas right now. Maybe that's something which should be added.


Team Profile

What makes a great team? One important factor is that you have a balanced set of skills and personalities in the team. A team which only con...