# Presentation Manager de OS/2

Presentation Manager (PM) es la interfaz gráfica de usuario (GUI) que IBM y Microsoft presentaron en la versión 1.1 de su sistema operativo OS/2 en 1988.

## Historia

En aquel momento, las dos compañías estaban colaborando en las siguientes versiones de OS/2. Estaban preparando la versión 2.0 para el procesador Intel 386 y Microsoft también comenzó a desarrollar OS/2 3.0 que se pretendía que fuese una versión portable, no ligada a los procesadores Intel.
Presentation Manager fue apodado Winthorn y desarrollado inicialmente en IBM Hursley Labs en UK (con importantes aportaciones desde Redmond). Fue un cruce entre Microsoft Windows y el sistema gráfico de mainframes de IBM, (GDDM). Como Windows, era basado en mensajes y muchos de los mensajes eran idénticos. Pero había un buen número de diferencias significativas.
La diferencia más importante era el sistema de coordenadas. Mientras que en Windows la coordenada 0,0 estaba situada en la esquina superior izquierda, en PM estaba en la esquina inferior derecha. Otra diferencia era que todas las operaciones de dibujo se enviaban al Device Context (DC) en Windows. PM también usaba DCs pero había un nivel añadido de abstracción llamado Presentation Space (PS). OS/2 también tenía funciones de dibujo más potentes en su Interfaz de Programación Gráfica (GPI). Algunos de los conceptos de su GPI se incorporaron posteriormente a Windows NT. El modelo de programación de OS/2 se pensaba que era más limpio, ya que no había necesidad de exportar explícitamente el procedimiento window, sin WinMain, sin funciones no estándar ni epílogos.

### Separación de caminos

Una de las razones más citadas para la división fue la divergencia de las APIs entre PM y Windows, que fue probablemente dirigido por IBM. Inicialmente, PM estaba basado en el código del IGU de Windows, y a menudo tenía desarrollos realizados por adelantado, como el soporte para fuentes proporcionales (que sólo aparecieron en Windows en 1990). Una de las divergencias se refería a la posición de la coordenada (0,0), que estaba en la parte superior izquierda en Windows y en la parte inferior izquierda (como en las coordenadas cartesianas) en PM. En la práctica es imposible recompilar un programa de IGU para ejecutarse en el otro sistema, en algún momento se prometió crear un conversor de código fuente automático. Las dos compañías estaban esperando que en algún momento los usuarios migrarían a OS/2. Una situación parecida ocurrió en la década de los 90 con los clientes utilizando el "viejo" Windows, aunque Microsoft prefería que se cambiaran a Windows NT.
En 1990, la versión 3.0 de Windows comenzó a venderse realmente, y Microsoft comenzó a perder interés en OS/2, especialmente debido a que el interés del mercado en OS/2 siempre fue mucho menor que en Windows.
Las compañías separaron sus caminos, e IBM dirigió todo el desarrollo posterior. Microsoft se llevó con el OS/2 3.0, que renombró como Windows NT, así, este hereda ciertas características de PM, manteniendo, sin embargo, casi una estricta compatibilidad de código fuente con Windows. IBM continuó desarrollando PM. En las siguientes versiones de OS/2, se usó como una base para la interfaz orientada a objetos Workplace Shell, un precursor del Explorador de Windows. En las últimas versiones, IBM ha encargado a SciTech Software la escritura de los drivers gráficos para la mayoría de las tarjetas que no soportan OS/2 oficialmente. Hay una gran integración de la capa gráfica con el sistema, pero aún es posible ejecutar ciertas partes de OS/2 desde una consola de texto o ventana de X Window.

## Detalles técnicos

PM sigue las convenciones de interfaz de Common User Access. También admite acordes de ratón para copiar y pegar texto.
Un problema importante fue el de la cola de entrada simple: una aplicación que falla puede bloquear la ejecución de los mensajes de la interfaz de usuario, provocando la paralización de la interfaz gráfica. Este problema ha sido resuelto en Windows NT, donde una aplicación sólo se convierte en un rectángulo muerto en la pantalla, en versiones posteriores es posible mover la ventana u ocultarla. En OS/2 se solucionó en un FixPack, usando un temporizador para determinar cuándo una aplicación no estaba respondiendo a los eventos.