mailto Contact Us
Motif to Qt Migrations

Motif to Qt Migrations

Any UNIX C/C++ application originally developed in the 1990s would have almost certainly been built using the Motif GUI toolkit. Not only was it the best GUI toolkit of that decade, it was also specified in the IEEE 1003 standard as part of the definition of UNIX. Nearly a decade later, with these legacy applications still playing a major role in the daily operation of their businesses, engineering organizations are looking to modernize these applications and deploy them to non-UNIX platforms including Windows and MacOS. For such companies, the Trolltech Qt framework for C++ provides the best technical solution to cross platform nirvana. The challenge is that the port can be time consuming and difficult, requiring the skills of the company's best engineers. More importantly, while these engineers are porting the application to Qt, customer requests for enhancements are being ignored.

ICS, the industry's maintainer of Motif and experts in Qt, offers a Motif to Qt Porting Service that provides a solution to this dilemma by allowing organizations to both migrate and improve their applications in parallel! While their engineers continue using their market and application area knowledge to respond to customer requests, ICS will take their Motif code base and migrate it to use Qt. ICS has done this for many customers and has developed a process that minimizes the overhead on the organization's engineers and reduces the lost effort due to merging the code between the two development teams. In brief, the process is:

I. Source Code Review
Prior to providing a proposal, we review the application source code and assess the degree of difficulty of the port. This is the only way to determine the level of difficulty of the port. Almost all mature applications suffer in one form or another from many incremental changes that have broken the architectural separation between GUI and backend code. Furthermore, complex applications also use third party widgets such as tables and graphs that require additional coding to map to the Qt equivalent. To provide an estimate for the port, we always have to look at the source code.

II. Duplicate the Build Environment
The key to avoiding any interference with the application development team is to create our own build system at our facility. During this process, we work though various issues regarding future source code merges and the running of any existing regression tests. For most large applications, this is a surprisingly difficult task. There is usually much forgotten or undocumented. For many of our customers, the information we produce in creating the duplicate build environment is almost as valuable as the port itself because it provides greater flexibility in the future to merge the efforts of multiple, geographically dispersed, engineering teams.

III. Refresh Source Code
Creating a duplicate build environment can take 2-3 weeks. After we have completed the build environment, and prior to starting the port, we refresh the source code out of the client's source code control system.

IV. Refactor Existing Code
In about 25% of our ports, the source code needs to be restructured prior to beginning the port. Sometimes this is just a matter of moving sections of code around and separating the backend code from the GUI code. In other cases, it can require significantly more effort.

V. Duplicate Existing Dialogs with Qt Designer
We take screenshots of all the major dialogs in the client's application. Our group of Qt Designer experts uses these screenshots, along with a demo version of the application, as a specification to build a new set of screens. For projects with tight schedules, we often run this step in parallel with steps 2-4 above. At this point, some clients want to make minor changes in the user interface that will take advantage of the increased functionality and flexibility of Qt.

VI. Connect the GUI Code to the Backend Code
The next step is to connect the dialogs generated with Qt Designer to the existing backend code. We start this process from the top and work our way down. Areas of the code that are still Motif driven are encapsulated using the Qt Motif Extension. This allows us to maintain a run-able and functional application at all times. During this process, we bypass any complex Motif widgets using this extension too.

VII. Merge Source Code
At pre-agreed milestones, we merge the source code bases. After the first such merge, the application will be using Qt and should use Qt for all new updates.

VIII. Eliminate Any Complex Motif Widgets
The end of the process is to eliminate any complex Motif widgets and replace them with pure Qt equivalents. Complex Motif widgets tend to be the focal point of many applications so it is better to deal with them after everything else is stabilized.

IX. Run System Level Regression Tests
During the porting process we continue to run any unit tests you make available. In addition, when we are close to being done, we start running application system level tests too. We also run the original application in parallel to identify any differences between the two.

X. Onsite Delivery and Acceptance Tests
The final step is for our engineers to personally deliver the modified source code to the client's site, make any final source code merges, and ensure that the software builds in their environment. At this point, we also provide any Qt training or customer technology transfer training that is requested.

After this process, the client's Motif application will have a new Qt based GUI and will be positioned to leverage all the benefits of Qt. ICS' Motif to Qt Porting Services are ideal for the organization with an active development roadmap that just does not have the time or resources to stop everything and do a port. This service allows clients to keep their expertise focused on satisfying market requirements while we use our expertise to quickly and economically port their application from the past into the future.


 

ICS Portfolio

Qt Training Webcasts — from beginning to advanced topics

The latest webcast is:
"Exporting C++ Models to QML"


Ezust Book

Learning Center:


 

Contact Us | Quote Request | Privacy Policy | Terms of Service | Site Map | Trademarks | Other ICSs
© 1999-2012 Integrated Computer Solutions, Inc.