Porting applications to Qt. Kevin Funk, Software Engineer KDAB

Similar documents
Why you should be excited about Qt 5

Version Control. Second level Third level Fourth level Fifth level. - Software Development Project. January 11, 2017

Installing Enterprise Architect inside WINE

MODERNIZATION C++ Bjarne Stroustrup, creator of C++

APL Source Code In Text Files

Modernizing C++ March 18. Kevin Funk

Solution overview VISUAL COBOL BUSINESS CHALLENGE SOLUTION OVERVIEW BUSINESS BENEFIT

Qt for Device Creation

9 th CA 2E/CA Plex Worldwide Developer Conference 1

LEGACY SYSTEMS MODERNIZATION SERVICES.

ArcGIS Runtime: Building Cross-Platform Apps. Rex Hansen Mark Baird Michael Tims Morten Nielsen

Installing Enterprise Architect inside WINE

CS108, Stanford Handout #37. Source Control CVS

Kick Start your Embedded Development with Qt

FRONT USER GUIDE Getting Started with Front

How Rust is Tilde s Competitive Advantage

The Future Is Now PHP 7. Matt Jaworski - Founder & PeepSo.com

FIVE BEST PRACTICES FOR ENSURING A SUCCESSFUL SQL SERVER MIGRATION

In the Driver s Seat

Switch What s New in Switch New features. Fixes and improvements. Date: March 22, 2018 What s New In Switch 2018

Migrating IONA Orbix 3 Applications

Standards for Test Automation

Qt Essentials - Fundamentals of Qt Module

Construction: version control and system building

Whitepaper. Web-based Architecture. Author : Jayamsakthi Shanmugam and Ravi Bhardwaj

Notepad++ The COMPSCI 101 Text Editor for Windows. What is a text editor? Install Python 3. Installing Notepad++

Version Control. Second level Third level Fourth level Fifth level. - Software Development Project. January 17, 2018

THE PRAGMATIC INTRO TO REACT. Clayton Anderson thebhwgroup.com WEB AND MOBILE APP DEVELOPMENT AUSTIN, TX

Implementing the Twelve-Factor App Methodology for Developing Cloud- Native Applications

Save time. Stay on Schedule. Reduce your work. Re-use Your Code with OS Changer

Team Developer. There are no good reasons to stay in legacy mode.

12/7/09. How is a programming language processed? Picasso Design. Collaborating with Subversion Discussion of Preparation Analyses.

Three things you should know about Automated Refactoring. When planning an application modernization strategy

Present and Future of the RhoMobile platform. Migrating legacy applications, Node.js on mobile devices right now and more

In this third unit about jobs in the Information Technology field we will speak about software development

Extreme Java Productivity with Spring Roo and Spring 3.0

Introduction to Mobile Development

Atlassian Confluence 5 Essentials

Sccm 2012 Manually Remove Package From Distribution Point

Advances in Qt 3D. Kévin Ottens, Software Craftsman at KDAB

Polyratings Website Update

Manual Update Java 7 Version 11 Not Work In

Belle II - Git migration

Refactoring Without Ropes

What s new in SketchUp Pro?

What is Standard APEX? TOOLBOX FLAT DESIGN CARTOON PEOPLE

Soar Mazin Assanie, John Laird, Joseph Xu

Expert Guidance on Migrating from Magento 1 to Magento 2

CSP ODDITIES. Michele Spagnuolo Lukas Weichselbaum

Upgrading Print Director to PCS Director

GUI in C++ PV264 Advanced Programming in C++ Nikola Beneš Jan Mrázek Vladimír Štill. Faculty of Informatics, Masaryk University.

The Next Generation of Eclipse: e4. Mike Milinkovich Executive Director Eclipse Foundation

DAVE TM & DAVE TM SDK

Thomas Pelaia II, Ph.D. XAL Workshop 2012 December 13, 2012 Managed by UT-Battelle for the Department of Energy

Web Development for Dinosaurs An Introduction to Modern Web Development

COBOL and the HP3000. Discussion led by Stephen Hjerpe and Jeanette Nutsford. acucorp

This guide shows you how to set up Data Director to replicate Data from Head Office to Store.

Welcome to this IBM podcast, Realizing More. Value from Your IMS Compiler Upgrade. I'm Kimberly Gist

Monkeybars Tools-enabled Swing development with JRuby

WHITEPAPER. Embracing Containers & Microservices for future-proof application modernization

Brochure. Visual COBOL. Visual COBOL

Technology Background Development environment, Skeleton and Libraries

Pulling the Plug on Your Mainframe. Automated Refactoring. Colorado s Automated Child Support Enforcement System

WR2QTP: Semantic Translator of WinRunner Scripts to QTP

1. I NEED TO HAVE MULTIPLE VERSIONS OF VISUAL STUDIO INSTALLED IF I M MAINTAINING APPLICATIONS THAT RUN ON MORE THAN ONE VERSION OF THE.

AEM Code Promotion and Content Synchronization Best Practices

FROM 4D WRITE TO 4D WRITE PRO INTRODUCTION. Presented by: Achim W. Peschke

Flatpak and your distribution. Simon McVittie

CS279 Course Overview. Joe Hoffert Distributed Real-time Embedded (DRE) Group Institute for Software Integrated Systems Vanderbilt University

The Now Platform Reference Guide

2/9/2013 LAB OUTLINE INTRODUCTION TO VCS WHY VERSION CONTROL SYSTEM(VCS)? II SENG 371 SOFTWARE EVOLUTION VERSION CONTROL SYSTEMS

Secure Access. Novell. Overview and Installation QUICK START

Manual Internet Explorer 10 Xp For Windows 7 Full Version

HOW TO SOLVE COMMON PROBLEMS WITH LEGACY ORACLE JAVA VERSIONS IN WINDOWS 10

The Number One. Maturity. Value Added. Multi-Platform

SCASE STUDYS. Migrating from MVS to.net: an Italian Case Study. bizlogica Italy. segui bizlogica

Java FX 2.0. Dr. Stefan Schneider Oracle Deutschland Walldorf-Baden

Presentation Subtitle. 9 th CA 2E/CA Plex Worldwide Developer Conference

MAKING THE BUSINESS CASE MOVING ORACLE FORMS TO THE WEB

Creating outstanding digital cockpits with Qt Automotive Suite

Indexing Large, Mixed- Language Codebases. Luke Zarko

OpenServer Kernel Personality (OKP)

Qlik Sense Desktop. Data, Discovery, Collaboration in minutes. Qlik Sense Desktop. Qlik Associative Model. Get Started for Free

Chapter 1 Getting Started

Sonatype CLM - IDE User Guide. Sonatype CLM - IDE User Guide

<Insert Picture Here> Looking at Performance - What s new in MySQL Workbench 6.2

UCT Application Development Lifecycle. UCT Business Applications

perfsonar: A Look Ahead Andrew Lake, ESnet Mark Feit, Internet2 October 16, 2017

Advanced Software Development with MATLAB

ArcGIS Runtime: Building Cross-Platform Apps. Mike Branscomb Michael Tims Tyler Schiewe

NHERI SIMCENTER PROGRAMMING BOOTCAMP JULY 30 THROUGH AUGUST 3, 2018, AT UC BERKELEY S RICHMOND FIELD STATION. GUI Development

Domain-Specific Languages Language Workbenches

Internationalizing the Virtual World

Software Development & Education Center. Java Platform, Micro Edition. (Mobile Java)

CHAPTER 5 WINDOWS OPERATING SYSTEM

<Insert Picture Here> JavaFX 2.0

Software Development I

InstallFree Application Compatibility Solution for Windows 7 Migrations

The State of Samba (June 2011) Jeremy Allison Samba Team/Google Open Source Programs Office

This checklist tells you how to create accounts and obtain permissions needed by Hive contributors. See the Hive website for additional information.

Transcription:

Porting applications to Qt Kevin Funk, Software Engineer KDAB

What is a migration? Some other toolkit Qt QNX Photon Motif MFC Java AWT Older Qt version Qt5

Why migrate at all? Hard to find developers who know the legacy toolkit Legacy toolkit is not actively developed any more Applications have an outdated look-andfeel Support for more platforms Job satisfaction - it is easier to attract good developers to work on something cool than something outdated

Qt Framework to the rescue! Actively developed C++ framework Under Open-Source Governance model Cross-platform Deployable to embedded devices Used in over 70 types of industries world-wide

What is a migration? Migration techniques Throw out all code, just copy the basics over. Port code gradually using framework integrations your app will be part Qt & part legacy toolkit (think of MFC) Note: Not suitable for production code! Comment out all code that doesn't compile on the target platform, and port it bit by bit.

What is a migration? Potential tasks Changing a legacy toolkit push button to a QPushButton. Reworking mechanism like callbacks to signals/slots. Converting code for painting and color allocation. Rewriting usage of third party libraries, like Custom JSON parser library...

More potential tasks :( What is a migration? Replace your own implementation of what Qt now supports natively (XML/Multi threading/file support) Replacing unsupported third party tools like charting engines with new or custom made components. Take advantage of the target frameworks capabilities like model/view or Qt designer to improve overall design quality. Now think we have a few million lines of code, and understand the complexity!

Some of the tricky parts :(( What is a migration? Should you use char *, QString, or your own string implementation including Unicode support? Legacy toolkit may have been plain C, but you likely had a C++ wrapper layer, how do you port that? You d like to keep your custom style of the application how to bring to the Qt world? User interface description files of legacy toolkits e.g. how to port QNX Photon s.wgt files?

Issues to consider What is a migration? Which build system to use - QMake and CMake are both good candidates It might be a good time to update your naming convention It might be a good idea to update to a newer C++ standard Still using CVS? Consider upgrading to SVN or Git Peer reviews may help you towards a consistent port needs experts in the target framework

What is a migration? Automatic Conversions A one-to-one mapping is likely only possible for the simplest part of a port. Improve your editors to support you while porting Code snippet plugins Stored RegEx-based replacement routines Use scripting! Popular these days: Clang tooling!

What is a migration? Pitfalls Feature Frenzy - It is more fun to add a new feature than doing porting, so you risk you will never get done Refactoring/Clean-up Frenzy - when porting - it isn't the right time to clean up(!) Bug fixing Frenzy - when you have a new look at the code you may find new bugs, or new ways to fix old bugs. Be careful not to drift away in a bug fixing frenzy where you fix a bug that everyone has accepted is there.

What is a migration? General recommendations Remind management why you want to port - don't push for new features. Remind developers why you want to port - stay with what is the default in Qt (colors, fonts, ) for now Remind customers why you want to port - this is the hardest one!

KDAB Migration What we offer as part of a migration free in-depth analysis report if you decide to use us for the project Using our own set of code analysis tools Reviews by our Senior engineers porting of your code base from another toolkit or older Qt version to an up-todate Qt version Using both proprietary and our open-sourced tools In collaboration with the customer via code reviews, meetings delivering a ready to ship version of the complete source code

Thank you! KDAB Services Consulting Customer projects... KDAB Trainings QML for Embedded Linux Debugging & Profiling C++11 and C++14 Modern OpenGL Visit our booth for demos! Contact: kevin.funk@kdab.com