Akademy 2024 abstract
- Title — the title of your session/presentation
- Content — a brief summary of your presentation
- Description — additional information not in the abstract; potential benefits of the topic for the audience
- A short bio — including anything that qualifies you to speak on your subject
- A headshot — your picture that we can use to help promote your talk as part of the final Akademy schedule (not essential but desirable)
Title
Integrating value-oriented design with Qt/QML using the lager library
Content
In this talk, I will be talking about the use of lager in Qt/QML applications. The current way of programming in Qt can often lead to thread-safety or performance problems. lager can solve this problem by incorporating another way of thinking into your Qt/QML software. In this way, the state of your application is a value that can be copied around so developers will have a lot less to worry about thread-safety. The value-oriented design can also help improve testability of your software because the main logic is to be written in pure functions (no side effects, and much less to mock when testing). The talk will cover the basic usage of lager, and solutions to common problems I have faced when writing a QML application with lager, for example, how to write list views and how to offload work onto a worker thread.
Authors
tusooa tusooa@kazv.moe
Contribution type
Coneference Talk (40mins)
Comments
Track
Main
Description
From lager's website:
lager is a C++ library to assist value-oriented design by implementing the unidirectional data-flow architecture. It is heavily inspired by Elm and Redux, and enables composable designs by promoting the use of simple value types and testable application logic via pure functions.
I was first introduced to lager by a Krita developer, Dmitry Kazakov, when I was on a Google Summer of Code program for Krita back in 2019. In that program, I attempted to refactor a part of the vector library for it to use copy-on-write mechanism. We were frustrated by a lot of thread-safety problems. Dmitry recommended the use of lager, though it was too huge a project for me to refactor everything to use lager.
When I went on to create kazv, the Matrix client and instant messaging app, I used the lager library and faced a lot of challenges. I ended up solving those problems and think it would be valuable to share my experience creating a Qt/QML application with lager.
Biography
tusooa is the maintainer of kazv, a Matrix client and instant messaging app that makes heavy use of lager.