After two years of development, finally, the first public release of the FacetZoom widget source code. FacetZoom is a novel widget combining faceted browsing with zoomable user interfaces. It allows navigating hierarchies of faceted metadata, such as time or location, with two interaction concepts. By exploiting the widget’s space structuring nature, continuous data (e.g. stock quotes) or information collections (e.g. photo sets) can be arranged according to the metadata’s location in the widget.
The FacetZoom design was developed as part of graduate theses on User Interfaces for Personal Information and Media Management at the Heinz-Nixdorf-Chair of Multimedia Technology at the Dresden University of Technology in Germany. The work was supervised by Dr. Raimund Dachselt who is now at the Otto-von-Guericke University Magdeburg. Third member in the design team was Mathias Frisch, who is now a PhD student in Magdeburg.
At the beginning, the widget was called TimeZoom and implemented the concept of a zoomable timeline which was explored in my Bachelor’s thesis. After presenting this early version at the 2006 CHI conference in Montreal, the design was abstracted and generalized, thus leading to FacetZoom. The presentation we will be holding at this year’s CHI in Florence will officially introduce the results of this work.
Here are three screenshots of the FacetZoom widget showing a time metadata facet,
a location metadata facet,
and a classification metadata facet.
I’ve also created a short video-only screencast in OGM Theora format. In case you attend our talk at the CHI conference, a more in-depth video will be shown there.
So, without further ado, here is the link to download the FacetZoom source code:
I’ve called this version 0.8, symbolizing that it is an advanced prototype but not yet a production-ready implementation. The code is licensed under the GPL Version 3.
What the implementation currently provides:
- a visualization of time-based hierarchies (years, months, weeks, days, hours), as well as arbitrary hierarchies with 1:n parent-child relationships
- scrolling (traversing along a hierarchy level)
- zooming (traversing up and down the hierarchy)
- scaling of cell labels geometrically and semantically (currently for time only)
What the implementation does not provide (yet):
- correct behavior in all non-default situations (e.g. after resizing the widget in some cases)
- construction in a completely programmable way (it currently relies on configuration files to a significant degree)
- on-demand construction/destruction of cells at runtime for hierarchies of infinite width (e.g. a timeline)
In order to compile and run FacetZoom, follow these steps:
- Download and install the Qt library in version 4.3 if you don’t have it already. Windows users should get the package including MinGW.
- In the project directory, run Qt’s ‘qmake’ and then ‘make’. If you have multiple versions of Qt installed, ensure that you are running qmake of 4.3. Under Windows, use the Qt-enabled command prompt shortcut that was installed with Qt and run ‘make release’ instead of simply ‘make’.
- After compiling, run the binary from the project’s root folder by issuing ‘build/BINARY_NAME -configPathSuffix config’, replacing BINARY_NAME with the compiler result on your platform. ‘-configPathSuffix’ tells the widget to look for its configuration file in the given subfolder of the project.
Some last points:
- Please leave me/us feedback.
- Suggestions for future development are welcome, too.
- In case you decide to integrate FacetZoom into your own application, please leave a note. It will certainly be interesting to see where the widget will show up.
- I will post programming examples for integrating the widget soon.