A Qt journey from desktop to mobile

nicolas's picture

Nicolas Froment
Europe Date: 
Wednesday, October 8, 2014 -
10:15am to 11:15am
Europe Room: 
Europe Track: 

Presenter Bio: 

Nicolas Froment (@lasconic) has always attempted to combine his two main hobbies: playing drums and computer programming. Both came together with joining the development of Qt/C++ based MuseScore and porting the software from Linux to Windows and Mac OSX. In 2011, Nicolas co-founded the MuseScore company and he is the technical architect of the MuseScore platform, spanning from desktop, to web, to mobile. Meanwhile he coordinates the MuseScore developer community and welcomes new developers. As the future of MuseScore is closely tied to mobile applications, Nicolas is leading the development of the MuseScore apps for mobile platforms.


MuseScore is a startup with a mission to help musicians to learn to play their favorite songs and master their musical instruments. Its history goes back more than 10 years when German software developer and pianist Werner Schweer decided to write his own software to compose and notate music. He open sourced his project under GNU GPLv2. The first desktop version of MuseScore was created using the open source edition of Qt 3.1. Today the MuseScore development is happening using Qt 5.3 with Qt Widgets.

Millions of musicians worldwide are using MuseScore on desktop to compose and notate music. Many of them show off their work on the community site musescore.com which functions as a self-publishing platform. While the production and distribution of sheet music has been digital for decades, consumption has almost exclusively happening on paper. However the advent of tablets is about to change that and MuseScore wants to lead this transition. Technically, this meant making a mobile app from a desktop based codebase.

Starting in 2012, we investigated how we could make it happen. We started on iOS, using Qt 4.8 to draw the score and Objective-C to create the user interface around it. Even though this solution was working, it was not economically viable for a niche startup company to invest in both Objective-C and Java development. So the decision was made to wait for the arrival of the Qt port for mobile platforms.

With the arrival of Qt 5 and with Digia supporting Qt Mobile for Android and iOS, the time was right to make a new attempt but this time using Qt Quick. As a result, MuseScore apps are today available in the Google Play Store, Amazon App Store and in the Apple App Store.

In this presentation, you will get the lessons learnt during this development journey and the following topics will be addressed:

* Code refactoring
How to integrate 100,000 of loc of C++ in a cross platform mobile app?

* Design
How to design an interface for both mobile platform and for different size factors

* Development
How to implement conveniently a scalable design?
How to store data on the device?
How to communicate and authenticate with a REST API?
How to maintain only one codebase a free app and paid app?

*Tools and tests
Which tool to use for development, user testing and crash reporting?

* Platform integration
How to open an external file?
How to integrate with native SDKs (google analytics, crashlytics etc..)?
How to lock and unlock the screensaver?

* Distribution
How to distribute on different app stores? Which ones?
What are the difficulties encountered?

Slides from the Presentation