Qt applications for desktop and mobile are truly “code once, deploy everywhere” as MuseScore, an innovative startup from Germany has proven. The MuseScore desktop software and the MuseScore mobile application are a perfect example of cross-platform, multi-screen deployment with a single source code.

On the 3rd of September 2016, Nicolas Froment from MuseScore will present his topic “Continuous tests and distribution for Qt applications on desktop and mobile” at the bcc in Berlin.

MuseScore is a company with that offers an application for writing musical notation. On the desktop they offer a traditional Qt application that runs across different desktop platforms. Their strategy for ”going mobile” was not to take that same application as-is to mobile but to extend their offering by providing the MuseScore Player, a player for the notes, on mobile platforms. They were able to re-use the same technology, Qt, to go mobile. Available across all platforms (Windows, Mac OS, Linux, Android, iOS), MuseScore is a free and open source cross platform software hosted on github.com. This Qt Widget application uses the CMake build system and regressions tests written with QTest and managed by CTest.

At QtCon 2016, visitors will learn how the MuseScore project uses Travis-CI to build and run the tests for every push but also every pull requests made to the project. During the presentation, you will also learn how Travis-CI is used to deliver self-contained binaries for Linux (AppImage) on x86_64, x86 and ARM on Bintray.com and also a DMG package for MacOS on a public FTP server. For Windows builds, the use of AppVeyor will also be presented. The discussion will introduce the challenges of building automatically a large desktop app in a relatively constrained environment without any UI.

MuseScore also provides a mobile app for iOS and Android. The app is in Qt/QML and built with qmake. We will show how a new version of the app is sent to testers for every build and how the app is cross compiled, automatically tested and, deployed on both Google Play and the Apple App Store together with metadata and screenshots translated in several languages. We will discuss the different problems which had to be solved in order to have a fully automated distribution chain.

The MuseScore Songbook app, which was built with Qt, is consistently ranked in the Top 10 of the Music category in the Apple App Store and in the Top 500 for iPad in several markets.

Nicolas summarizes, “we hope that sharing our experience with other Qt developers will help to generalize continuous tests and distributions among the Qt community and then develop best practices to solve common problems. MuseScore is poised for growth and there is great potential for the future.”