The new emerging NLE for GNU/Linux

Coding: Upgrades

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.

Of course, there remained some follow-up work which kept Ichthyo busy well until the end of 2014: On the one hand, we were able to abandon our old backport of the docking library (GDL) and switch to the C++ bindings available for GDL-3 / GTK-3. This upgrade helped us to get rid of some manual resource tracking done in C previously, replacing it with the automated resource tracking supported by the C++ language, which resolved several insidious issues related to closing docked and re-ordered windows and toolbars. Another somewhat tedious work was to port our custom style sheet to CSS. Lumiera used a custom “dark” theme based on the Ardour audio workstation software, which also relies on GTK as the UI framework. Since GTK abandoned the home-grown theming framework and switched to the Cascading Style Sheets (CSS) known from web and JavaScript development, we had to reverse-engineer our custom theming and re-build it as a CSS stylesheet.

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.