As Linux grows in popularity, more applications need to be ported to it. There still aren't many productivity applications available, and the novice user experience with Linux isn't the friendliest. So where are the apps? Unix apps may not be designed to ease portability, and moving Windows apps to Linux remains challenging. Geoffrey Noer presented the issues and solutions in moving apps from other platforms to Linux.
Noer interspersed his discussion with design tips for portability: When designing apps that port easily, focus on the design. If it doesn't port cleanly, the goal should be to make it portable, meaning, more modular in architecture. Don't tie your application to technologies you don't even want. Change variables one at a time.
There are also thread library issues. Proprietary third-party libraries may hinder portability, so if you can, you should design some of those elements out. GUI libraries often fall into this category.
Your choice of tools will affect portability: C++ compilers differ in standards conformance, so you need to use portable tools. The GNU compiler is a good one -- gcc can generate code for practically every processor and platform, which is of course why Cygnus's GNU software is as portable as it is. Noer showed some sample configure script fragments, built by GNU Configure, that recognize idiosyncracies of a particular platform at run time.
On the other hand, why not use a tool from Cygnus that automates portability? The Cygwin tools are ports of GNU development tools and utilities for Windows 95, 98, and NT. They function by using the Cygwin library, which provides a UNIX-like API on top of the Win32 API. Noer also discussed other portability libraries and VMWare, which allows you to run separate operating systems inside the one of choice.
Noer then introduced Gavriel State, who discussed Corel's experience and strategy for porting office applications to Linux. Corel uses WINE (Wine Is Not an Emulator) to port its office suite to Linux. WINE is a free Win32 API implementation for Unix and X, with a PE binary loader on x86 (the Windows binary loader, rather than ELF). "Don't believe everything you read on Slashdot," State warned. WINE does not require Windows because it is an alternative implementation, consisting of 100% Microsoft-free code, but it can optionally use native system DLLs if they are available. State discussed some of the myths surrounding WINE, such as the common perception that software built on WINE libraries is inherently slower, and pleaded tolerance because it's still in alpha.
To be accepted fully as a desktop operating system, Linux must have a variety of commercial applications for users to choose from. At least portability tools speed up that process and create a new market for commercial application space.
About the Author
Mana Tominaga works for Fawcette Technical Publications, where she covers Windows developer tools for the print magazines JavaPro, Enterprise Development, and Visual Basic Programmers Journal, and online for http://www.devx.com.