Recent coding activities were largely related to upgrading the language and support libraries. After we switched to C++11 last year, we were able to address a lot of long standing minor technical issues with the help of “R-Value References” and “Variadic Templates”. Also somewhat helpful was the nice language support for Closures — which allowed us to get rid of some custom library based constructs, thereby improving both the readability and the performance of the code. Prompted by these upgrade activities, a lot of clean-up work was done all over the place. This kind of work — not very gratifying in itself-- helps support and assist further development work. After all, Our code base has reached a significant size.
The Lumiera User Interface is based on the Gimp Tool Kit (GTK). It is one of the major UI technologies for building user interfaces on Linux and similar systems; the other main contender is the Qt framework. GTK saw a partially disruptive update and a round of code renovation over the last few years. The new version of GTK, version 3, has reached a state that can now be considered stable and mature. However, all applications based on GTK have to face a significant upgrade either sooner or later. We were considerably fortunate with our then UI developer, Joel Holdsworth, who used his experience and involvement in the Inkscape project to inject the Lumiera UI with an advanced technological base. One major significant contribution was that Lumiera right from the very beginning used the Cairo library for vector based rendering of the interface. This provident move turned out to save us most of the pains other projects encounter when they upgrade from GTK-2 to GTK-3. Two years ago, Michael Fisher built an experimental branch of our UI based on GTK-3 in order to conduct some experiments with a view towards a generalised UI canvas control. We were then able to build on this work to switch the main library with considerably less pain.
On-going work: Timeline ←→ Session connection
Another unfortunate “ripple effect” of the transition to GTK-3 caused our custom timeline display widget in the GUI to become defunct. GTK has largely reworked and streamlined event handling; yet our present timeline code simply does not respond to new events and thus remains stale. Consequently, it was considered to be a good opportunity to review the current approach we used to render the timeline, which is more or less the backbone of our interface. It turned out, that — while just fine for the moment — the approach we adopted does suggest a number of problems when confronted with scaling the architecture. Based on what we have now implemented in the Session, there is still a lot more functionality that has to be hooked up into the UI. One important facet that requires careful attention is that updates must be pushed up from the lower layers asynchronously; otherwise the interface will not be “reactive” and would suffer sluggish behaviour. This is a common phenomena in all current application development, and it is well known that the classical, data centric and imperative programming paradigm causes significant maintenance problems when turning to parallel and asynchronous programming models. For this very reason, instead of just simply porting the existing custom timeline widget to the new GTK-events, Ichthyo started to rework this backbone component. To this end, he adopted a message driven approach: the Session will push up change messages (“diff messages”) to the UI and the timeline will be organised recursively, so it automatically follows the structure dictated by the Session, instead of maintaining a “mirrored UI model” on its own.
Workflow and User Interaction Design
By pure coincidence, questions of Interface and Interaction Design saw some recent activity again. About two years ago, Christoph Varga, a film maker from Vienna approached Ichthyo with a visionary and innovative proposal concerning the Human-Computer interface with film editing. Christoph — like Ichthyo — considers most present day professional film editing software to be deficient. This deficiency is less a lack of »features«, but more of a failing as a tool for humans to actually work with. Incidentally, Christoph is also related to the Apertus° AXIOM project. Once Christoph and Ichthyo had met, private communication continued which resulted in a Interface Concept contribution to Lumiera from Christoph. The focus of this work is on working style, the arrangement and interplay of functions, terminology and the mental model of workspace. This concept covers an area in urgent need of more thoughtful considerations, beyond just building the interface and engine technology.