Wild Idea: A PM clone using the Qt library

Warning: This is only an idea. It is not validated if it can be implemented or not.

Objective
Making an open source clone of the Presentation Manager DLLs by using the Qt resources already ported to OS/2-eCS.

Implementation
The idea will be to create a "fake" PM layer between PM Application and the real PM DLLs, so PM applications will ask for the PM functions to the fake layer first, and if it had not been cloned yet, they will go forward to the original close source PM DLL.

The objective is to have this "fake layer" as a base to clone PM in a progressive way and not doing it in one shot. So one day the "fake layer" will turn to be the "Cloned PM replacement" and the IBM PM DLLs can be phase out.



The idea is that when a PM application asks for a PM function, it will ask the Qt Fake PM layer first. If the function it is available there (already cloned), it will respond to the PM application. If the function it is not yet implemented (cloned), it will send the request to the original source of the PM DLL (provided by IBM OS/2).

The cloned PM functions will be using the Qt library/runtime as a way to do not reinvent the wheel and do not start for scratch.

Benefits

 * Using the Qt library may simplify the reuse of components already created instead of creating them by scratch.
 * The Qt library is a solid and proved open source library that has good adoption on the development of applications.

Pitfalls

 * Qt for OS/2 requires PM. There has to be special attention to which PM functions does the Qt port use on OS/2-eCS.
 * It requires good knowledge of both, PM functions and the Qt functions.
 * PM functions used by OS/2's Qt will need to be implemented from scratch.

Discussion

 * Q: What is the value that this approach offers?

With the lack of developer resources that OS/2-eCS has, we need to get an approach to clone close source components little by little, without creating big impacts, or forcing the developer to take huge development projects in one shot.

Creating a "fake PM" that will forward things to "IBM's PM", will allow us to clone PM in a slow pace according to the resources we have available.


 * Q: Circular Dependency: Qt for OS2-eCS dependents on PM components. What will happen when we reach a function that Qt asks back for PM?

Qt uses PM, but not "All PM functions". PM functions used by Qt need to be identified and those functions needs to be cloned without using Qt to avoid circular dependencies.


 * Q: Will it be interesting to use LibC library? Will it be interesting for the Fake Qt PM clone instead of using/calling some functions of the OS/2 API, will also use the open source LibC library?

This can be interesting since it will also help to support PM portability to other platforms. (which it is not the goal). It can be interesting any OS/2 C API (Close source) functions that can be replaced with GNU C Library (GCC) (open source) functions can be used when it is possible.