The FrOSCon conference opened its doors to people and the halls of the college in Sankt Augustin were once again filled with visitors this year. Lumiera developers also attended the conference. The occasion furnished an ideal opportunity to review the status of Lumiera, debate on the project’s future and to forge a strategy for the ensuing year.
Little coding work can be seen over the previous couple of years, however, rather more project activity has occurred recently. Our thoughts have turned to how best to progress with Lumiera, and we are unanimously resolved to continue along the path set out at the beginning. As a result, the team have decided to implement a vertical slice. This entails implementing some feature such that all major software layers participate in providing the feature. Moreover, while integrating the vertical slice many previously developed components will emerge, hidden deep down in the steam and vault layers, to reveal the functionality they were originally designed to provide.
Once the vertical slice has been successfully implemented, we have the possibility of developing a horizontal layer along the GUI, in the session, etc. However, work cannot begin on the vertical slice until work on other parts of Lumiera have been completed.
While this is not the first vertical slice implemented in Lumiera (see previous report), this will be one in which it will be triggered by the user and response will be visible to the user on the GUI from where it was triggered.
A »vertical slice« is a software feature that engages all major software components of a software system to provide the feature. Lumiera consists of three major layers: the Stage, the Steam and the Vault.
The Stage roughly corresponds to the GUI or the area that immediately engages the user, the Steam covers translation and orchestration, while the deep dungeons of Lumiera catering to low-level functionality is the Lumiera Vault. In Lumiera we can envisage a vertical slice being triggered by a user who interacts with the GUI. To be a vertical slice, the action would have to trigger some functionality in the stage which would, in turn, engage some code in the deeper recesses of the Vault. Please bear in mind, that each of these layers consist of many sub-components, so in effect, many code components should ideally be activated by the user at the GUI. Thus, for example, turning on a light by activating some button would probably not constitute a vertical slice if this is accomplished by one line of code.
Lumiera development over the previous years produced little end-user tangible features. The main significant end-user feature was the GUI presented at start up; but that has been around for many, many years now. It was decided to use a feature directly accessible to end-users as a starting point for the vertical slice.
End-user feedback is crucial for developers, and it is difficult to discuss GUI controls without some real, hands-on GUI. It is hoped that this vertical slice will provide more accessibility (however small at this stage) to all potential users to participate in the Lumiera development process.
It is, however, important to note, that this was not the sole reason to progress with this strategy. Vertical slices are an important software development method providing a wealth of feedback to developers: component interaction, exposing time lags, limitations in component communication, missing components or functionality, inappropriate design of components; and, of course, user feedback on the particular feature. Moreover, it is also a litmus test of how the stipulated design is actually appropriate to the final model all in the mind of the developers.
This will also provide the user with another glimpse from a different perspective of what the final application might look like and possibly place a user in a better position to provide feedback to developers.
While astonishingly simple to formulate, this vertical slice is technically a formidable yet fruitful task to complete. An innocuous touch of a button on the GUI by a user can initiate a command via the UI-Bus where at the Steam Layer user settings and data are received by the builder that translates model entities from the Stage Layer into a low-level data processing graph: a representation digestible by the render engine in the Vault. The dispatcher can process this graph representation into individual frame processing jobs. These jobs, when activated by the scheduler, produce data which are sent to a display buffer to finally emerge at the Stage Layer in the video viewer embedded into GUI.
While it is a relatively simple matter to provide such functionality using other means, the focus is not on functionality; rather the vertical slice will test and scrutinize many components that will eventually provide such functionality as a session, looped playback or editing gestures. It is important to realise that the vertical slice will have some components that are mocked as not all software blocks required to implement the vertical slice are complete. For example, the clip is mocked, which means a user cannot load any clip, rather a hard-coded clip is used.
The Lumiera ticketing system system provides more concise and up-to-date information: Ticket #1221. Feedback most welcome.
Ticket #1230: Work on the Playback Vertical Slice can not be commenced until the following have been completed:
Custom drawing needs to be integrated into the main development branch
Build a GTK custom widget for a named entity for the track heads and the timeline header pane
Moreover, some detail aspects revealed by the previous integration task #1014 (mentioned in News 2021) should be finalised first.