Interview with Przemysław Nogaj and Łukasz Ornatek: Spyrosoft Synergy at Qt World Summit 2022

Małgorzata Kruszyńska

Business Researcher

Our partnership with the Qt Company ranges from business to R&D. On the one hand, our specialists support the development process, help Qt clients adopt Qt technology or solve certain architecture challenges. On the other hand, we also regularly cooperate in terms of improving the Qt framework.  

At this year’s Qt World Summit, we’d like to share one of our ideas. In the following interview, Przemysław Nogaj, Principal C++ Software Engineer, and Łukasz Ornatek, Senior C++ Software Engineer, from Spyrosoft Synergy, are giving a sneak-peak of the improvement solution their team has come up with.  

What was the problem that you experienced?  

Łukasz Ornatek: While working on our projects, especially for clients in the automotive sector, we’ve observed that their preference is to use Android-based solutions. Qt is a multi-platform framework that works perfectly with Android. Still, quite often, there’s the need to integrate a solution with various APIs offered by Android and this results in a bottleneck caused by a programming language barrier between the business logic and UI layers of an app. 

Interview with Przemysław Nogaj and Łukasz Ornatek: Spyrosoft Synergy at Qt World Summit 2022

Przemysław Nogaj: A perfect example is the case of downloading a contact list from an Android phone and displaying it in a car’s infotainment system developed in Qt, which requires many Android API calls. 

Łukasz Ornatek: That’s a nonoptimal process requiring breaking a few programming language barriers. In Qt, the UI is developed in QML, but to communicate with Android API, which is most often coded in Java, we needed to manually write a C++ code and then code it in Java. Usually, it entailed manually writing the so-called boilerplate code, which consisted of many repetitive elements. That was a very error-prone process, which we wanted to avoid, so we created a solution based on native Android mechanisms and Qt tools that improved the framework.  

How does your solution solve the problem? 

Łukasz Ornatek: Our solution, called QtAIDL, automates the process of writing the code, which enables the communication between the business logic and UI layers of an app. QtAIDL also allows the simulation of the Java backend before the final implementation is ready. Thus, the developer who codes the UI is not blocked and can work with the simulation.  

Interview with Przemysław Nogaj and Łukasz Ornatek: Spyrosoft Synergy at Qt World Summit 2022

Now we want to share our solution with the Qt community at the Qt World Summit 2022. We don’t want it to be a dead code, so we’re sharing it under the MIT licence. Everybody can use it freely and propose additional improvements.  

Przemysław Nogaj: Our solution addresses many challenges. Firstly, we got rid of the language barrier. Developers can focus on either the QML or Java code. We can forget about writing the tedious boilerplate code. It allows us to optimise the workflow with regard to developer specialisation. Qt and C++ developers can concentrate on the UI, while Java developers can give their attention entirely to the business logic part of an app. 

It’s difficult to find Android developers who code in Java, C++ and QML at the same time. Thanks to QtAIDL, it’s easier to keep the competencies separate.   

What are your expectations for the Qt World Summit 2022? 

Przemysław Nogaj: We’d like to ignite discussions about the Qt framework improvements, exchange ideas with other Qt enthusiasts and add our contribution to the community. We love Qt because it’s an open-source framework that everyone can contribute to, and we’d like to support it too.  

Next year, we’re also planning to attend the Qt Contributors Summit, where we’d like to present some of our ideas to the Qt contributors community.  

[MIG-TITLE]C/C++ Software Engineer for Compilers (RO)[/MIG-TITLE] [MIG-CONTENT]
[siteorigin_widget class="Requirements_Widget"][/siteorigin_widget]
[siteorigin_widget class="Carier_Details_New_Widget"][/siteorigin_widget]
[siteorigin_widget class="Benefits_list_Widget"][/siteorigin_widget]
[siteorigin_widget class="Carier_Recruiter_Widget"][/siteorigin_widget]
[siteorigin_widget class="Carier_Recruitment_Process_Widget"][/siteorigin_widget]
[siteorigin_widget class="Job_Offer_Sticky_List_Widget"][/siteorigin_widget]
[siteorigin_widget class="Carier_Form_Widget"][/siteorigin_widget]
[/MIG-CONTENT]