(This page uses style sheets.)
Once a list of applications has been drawn up it can be grouped into the following categories:
Some applications, for instance Office, Lotus SmartSuite, WordPerfect, Framemaker, Quark Express and Photoshop, have equivalents which run natively under OSS, including OpenOffice.org, Gnumeric, Evolution and The GIMP. In this case the OSS product needs to be tested to ensure it provides the necessary functionality.
Some applications, such as Adobe's Acrobat Reader, have a version which runs natively under OSS. If there is no OSS alternative to the application then all that is required is to ensure that all the required features are implemented in the proprietary version. If there is an OSS alternative and a partial migration is acceptable, then a choice has to be made based on the features offered by the proprietary and OSS applications.
Another approach is to run the applications on a server and transport the display to the desktop; this is the thin client approach. Products like Windows Terminal Server, Citrix and Graphon allow applications to run on a server running Windows in a multi-user way. This means that an application written to run on the desktop in a single user mode may have to be altered to run under these products. This will not be possible without source code, and third party vendors may not be willing to help.
The most sophisticated of these products, Citrix, has its own line protocol, “ICA”, which is extremely good, particularly with low bandwidth connections. It can run a server farm with load balancing and has other useful facilities. There are free ICA clients which run under GNU/Linux.
All these products rely on proprietary closed source software and Citrix in particular is expensive. It requires a Windows server licence, a Citrix licence and a Windows Terminal Server licence if a non-Windows client is used. In addition, Client Access Licenses will be needed for each desktop using the software. The Citrix licence is based on concurrent users, so this approach can be cost effective if there are many users who need access to an application but where concurrent access is low. There are documented case studies at http://www.citrix.com/press/news/profiles/ which show that the savings of having thin client “disposable” desktops are sufficient to justify moving the applications to a server. Citrix also has products to allow Unix applications to be transported in the same way over ICA and displayed on a thin client desktop.
Windows Terminal Server provides similar functionality to Citrix except that it uses its own protocol, RDP. The GNU/Linux client for RDP, Rdesktop is good, but is still considered beta code by some. RDP used to be very inefficient in comparison to ICA but the difference is now small if not negligible. Citrix has a number of features like load balancing which make it the better choice for large scale installations where the extra cost can be justified.
Both Citrix and Windows Terminal Server can introduce latency into the application if the servers are not sized correctly and the network is not sufficiently fast.
Tarantella (http://www.tarantella.com/) sits on a server between the desktop and the application servers. It aggregates output from Citrix on Windows and other applications running on Unix and IBM mainframes, and sends the result to a browser on the desktop. It uses its own proprietary line protocol, AIP, which is apparently reasonable at low bandwidths. However, it increases latency because it sits between the user and the application and therefore slows down the connection between the two.
As mentioned above, CodeWeavers now produce a server version of their CrossOver Office product. This works by having the client securely connect to the central server and have an X session displayed back to it. This means that the communication to the central server is encrypted and compressed but also requires sufficient bandwidth to support it as it is based on X. No tests of the bandwidth requirement have been made but it is likely to be greater than for ICA (Citrix) or AIP (Tarantella).
VNC is an OSS product developed by AT&T which is designed to display a user session running on another machine. It consists of a server and client which are both available for Windows, Unix and GNU/Linux. VNC allows applications to be run in one environment and the display to be run in another. It uses its own open protocol, RFB, over TCP/IP, which is not as efficient as either ICA (Citrix) or AIP (Tarantella) and so needs high network bandwidths (such as 100Mb/s) to work well. Unfortunately the Windows VNC server is also not as efficient as the Unix version and can require more processing power than one would expect. VNC can be very useful for occasional systems administration use, allowing control of a desktop to be taken by a central person. In these circumstances, high latency could be acceptable.
If none of the above provides a way to run the application or a substitute then it may be possible to run it natively, but with its normal operating environment being emulated on top of an OSS operating system. A good discussion of the issues relating to this approach can be found at http://www.linuxmednews.com/linuxmednews/967526746/index_html. All of these techniques have licence implications because they may involve running multiple copies of the proprietary application and/or operating system.
This section is most likely to apply to Windows applications but because the techniques can apply to other Scenarios they are discussed here rather than in Chapter 14.
There are two types of emulation:
Products like VMware and Win4lin provide hardware emulation. They allow a normal PC operating system to run as a user-level application by mimicking Intel PC hardware in software interfaces and thereby providing a virtual machine. This allows a legacy operating system and its applications to be run on top of an OSS platform.
VMware is not strictly an emulator – it allows most instructions to pass straight through to the processor, which means it will only run on an x86 architecture machine. It is the most complete offering but it is proprietary and can consume a lot of machine resources.
Win4lin is similar to VMware, and is also a proprietary product, but is less expensive. It can be a good solution in simple cases – for example just running office applications. It is a component of the Lindows product which is being sold on low cost hardware to home users. (Because it apparently does not use unprivileged user accounts to maintain security, Lindows itself should not be recommended for Administrations without careful consideration of the security implications.)
Because the hardware emulation approach requires full licences for the proprietary operating system and application, together with the cost of the emulator, it should be viewed as a way of running a small number of legacy applications which are difficult to migrate.
There are VMware and Win4lin server products which can reduce licensing costs if the proprietary software allows concurrent rather than potential user licensing.
There are OSS applications which will fully emulate an Intel IA-32 environment, for instance Bochs, but they are probably not ready for Administration use yet.
Software emulation allows programs written for a proprietary environment to run directly on the OSS operating system. Any system calls made by them are mapped onto the equivalent OSS system interface. This means that a copy of the proprietary operating system is no longer necessary.
Wine allows applications written for Windows to run on GNU/Linux by providing software emulation. Wine is described in detail in Appendix B. The major problem Wine has to solve is the large number of Windows system calls (including bugs) that it has to support.
OSS Wine code is available from http://www.winehq.org/ or from CodeWeavers at http://www.codeweavers.com/technology/wine/download.php.
CodeWeavers produce two proprietary products, CrossOver Office and CrossOver Plugin, which are based on Wine and designed to support specific Windows applications. Although the products are proprietary, code modifications are periodically contributed back to the OSS version of Wine.
CrossOver Office is designed to allow applications such as Office and Lotus Notes to run natively on GNU/Linux. There are some outstanding issues but the product is in active development. However, this approach may be appropriate for certain users depending on their requirements. CrossOver Office is now also available as a server product which means that it doesn't need to be fully installed on the desktop and can provide similar functionality to Citrix.
CrossOver Plugin is designed to allow browser plugins that normally only run on Windows to run in Netscape, Mozilla and Galeon on GNU/Linux. This product has been available for longer than CrossOver Office and works very well.
Using these techniques removes the cost of the Windows operating system licence but not the application licence. The application licence needs to be scrutinised to make sure it doesn't forbid running the application without Windows. This restriction is used in some new Microsoft applications as a lock-in tactic, although legal enforcement is questionable.
For applications written in-house or on behalf of the Administration and for which source code is available, the software can be ported to run on an OSS platform. In general, the problem of porting source code in any language is not compilation but the code's usage of system libraries including both the graphical environment and operating system. This can mean a significant amount of manual intervention to migrate the code. In addition, any assumptions about the underlying environment, such as file naming, will make it necessary to either change the source code or replicate the environment, regardless of the language used.
Java. If Java software has been written according to the Java specification then the program should run without any problems. However, if any proprietary extensions have been used then the code will have to be changed to use standard modules instead.
Visual Basic. A proprietary product called DeLux (http://www.deluxsoftware.com/) can be used to convert Visual Basic code to Kylix (see item 4 below) and can be run under GNU/Linux natively. netproject have not been able to test this product. Microsoft's development tools can convert Visual Basic code to .NET and produce CIL code. The Mono OSS project allows this code to be run under GNU/Linux. Mono is currently being developed very rapidly and any given application may or may not work depending on the way it interacts with libraries such as the screen display.
C#. This is increasingly supported under GNU/Linux, and Ximian have produced a compiler as part of the Mono project, adding C# bindings to crucial components of the Gnome Desktop. The Mono project includes an interpreter that allows CIL code produced by proprietary development tools to be run on GNU/Linux unchanged. The Mono project and the use of the .NET development framework is a very lively area of OSS at the moment and the position changes very rapidly.
Pascal and Delphi. Pascal as a free-standing language is little used these days, but it is the essential coding component of Borland's Delphi rapid development tool. Borland have a native GNU/Linux equivalent of Delphi that goes by the name of Kylix. Kylix 2 and Delphi 6 are stated to use compatible code syntax and have identical support environments.
C and C++. Programs written to ANSI standards should recompile and run as long as the underlying system libraries used are compatible. For instance programs written specifically for Windows will not in general compile and run correctly under GNU/Linux due to the very different set of calls to both the operating system and run-time libraries such as the windowing system. This mismatch can often be dealt with by compiling the code with Winelib, a part of the Wine project.