LogoGNUstep

GNUstep: Como Cocoa pero sin manzanas por @espectalll123

GNU… ¿qué?

Cocoa. Nuestro amado paquete de APIs, una de las mejores plataformas de programación disponibles, ese framework tan glorioso que podría considerarse el Santo Grial del software, el cual a Steve Jobs había emanado perfección y en el que luego este Señor dejó su sangre plasmada en la Historia. Son sus peculiares engranajes los que mueven la compleja y bella máquina que son los dispositivos Apple, transformando grandes ideas en potencia a geniales aplicaciones en acto, que así pues mueven al conjunto de la sociedad. Y es que realmente, Cocoa es una pieza muy especial de nuestro mundo, un edén de ceros y unos para los poetas del código fuente.

Pero no es perfecto. La verdad, son muy pocos los fallos que caracterizan a Cocoa, pero importantes. Se me ocurren estos: no es multiplataforma, así que olvídate de usarlo fuera de los iAparatos (aunque de alguna manera iTunes va en Windows). Y es software propietario, así que si Apple la pifia de una manera o de otra, o sencillamente ves tus derechos pisoteados, te tienes que aguantar (muchos seréis los que pensáis que esto da igual… lectores discordantes, ¡yo os invoco en los comentarios!). En resumen, es maravilloso hasta cierto punto.

Existe, sorprendentemente, solución. Gracias a un tipo barbudo, una comunidad apabullante y años de esmero y martillazos a CPUs, un tal Paul Kunz el proyecto GNU dio a luz a lo que es conocido hoy día como GNUstep. Se trata, literalmente, de un clon de Cocoa. Hoy día es compatible con la mayoría de las APIs hasta OS X 10.5 (¡está incluso CoreAnimation!), y buscando ahora alcanzar compatibilidad con 10.6. Ofrece todo su potencial en Windows, (GNU)Linux, Solaris, BSD e incluso Android (bueno, al menos antes, pero técnicamente sigue siendo posible). Y por supuesto, como buen trocito de GNU, se trata de software libre con copyleft bajo LGPL, listo para ser trasteado gratuitamente por quien quiera. ¿Qué más pedir?

Podemos, por tanto, usar GNUstep para escribir aplicaciones en Objective-C (o Java o Ruby), que aprovechan el modelo de programación orientada a objetos al máximo, y luego tenerlos disponibles donde sea sin más dificultad que compilar.

De hecho, un gran porcentaje de los SMS de pago que circulan por el Reino Unido los gestiona una aplicación web…hecha con Objective C y GNUstep!

Y encima gracias a avances como LLVM, Objective-C 2.0 y el recolector de basura (GC, Garbage Collector), nuestras aplicaciones podrán además disfrutar de un rendimiento capaz de dejar en ridículo a todo software de .NET. GNUstep, en resumen, es felicidad.

¿Por dónde empiezo?

Esta es la parte que suele detener a los que se atreven a meterse por la selva del Cocoa libre. Es cierto que GNUstep no es un paquete de sofware 100% maduro y difundido, pero no es imposible investigar y probar. Aquí os doy unos pasos para comenzar.

Lo primero es lo primero: probarlo de primera mano y crear un «hola mundo». Iba a recomendaros la distribución de GNU/Linux GNUstep Live CD, pero resulta que viene sin el software de programación. En cualquier caso, sirve para ver si os interesa su tradicional interfaz: WindowMaker, que básicamente es una copia del de NeXTSTEP (ya sabéis, esa joyita tan preciosa que dio lugar a los NS<inserte-cosa-aquí>). Podéis usarlo ya sea en una máquina virtual o en hardware real. Lo único que hay que saber es que es necesario dar clic derecho para mostrar la lista de aplicaciones, y que en las aplicaciones GNUstep, los menús pull-down aparecen en sus propias ventanas. Es raro.

GNUstep Live CD en acción

Si te dispones a trabajar en serio con GNUstep, por Dios, ¡no en esa ISO! La alternativa más lógica, puesto que no existe realmente ningún «sistema GNUstep», es instalar una distro (GNU)Linux que nos deje ponerle las librerías y aplicaciones de Objective-C por encima. Mi recomendación personal es Antergos, ya que es ligera, muy rápida y siempre viene con software actualizado. Además, es española, ¡yay!

Una vez instalado Antergos (da igual el escritorio que escojáis), basta con ejecutar este comando como root para poder instalar GNUstep y algunas aplicaciones básicas:

Si quieres además instalar el escritorio WindowMaker, usa esta otra opción en su lugar (por si acaso…):

Y bueno, hay otro paso adicional. Ejecutar SystemPreferences tras instalar, pero no como root sino como usuario estándar. Eso es todo.

Crear un primer programa es tremendamente sencillo. Busca la aplicación ProjectCenter y genera un proyecto de aplicación nuevo. Debería llamarte la atención su parecido con las primeras versiones de Xcode. Ve a Interfaces y abre el archivo con extensión .gorm. Se te aparece entonces el editor, que es exactamente igual que Interface Builder. A partir de aquí crear un «Hola mundo» no consiste en más que añadir un UILabel, guardar y compilar. Fácil, ¿verdad?

A estas alturas, deberías saberte manejar más o menos si entiendes bien Objective-C y Cocoa (¡sí, en serio!). Si, sin emabrgo, todavía necesitas ayuda, este libro puede serte de ayuda (el mérito es de Germán Arias, thanks!)

¿Es GNUstep así de feo siempre?

Primero, no es feo. Lo que ocurre es que su diseño per se no es llamativo. Únicamente busca cumplir las especificaciones OPENSTEP.

Segundo, ¡claro que no! Aunque la personalización no es uno de los objetivos principales del proyecto, posee muchas opciones para ser adaptado para los gustos personales, pudiendo incluso encargarse de la administración de ventanas y cambiando así hasta la barra de título. Y aunque si bien no existen más de 5 temas (¡vaya!), existe la opción para usar cualquiera de GTK+ o de Windows (depende del sistema que uses, claro). Y el par que hay no está mal.

Para que veáis las posibilidades, he aquí mi escritorio, usando GNUstep como gestor de ventanas, GWorkspace como escritorio/dock y el tema Narcissus:

¡GNUstep mola!Conclusión

Pues eso: Cocoa sin manzanas. GNUstep no es más que el poder de OS X y iOS fuera del dominio de Apple, y eso es algo bueno sin lugar a dudas. Las posibilidades que nos brinda son muy obvias, basándonos en lo que se ha ido creando con Objective-C desde los años 90, pero además hay que tener en cuenta que es software libre, y que por tanto se abren todavía más puertas pendientes de explorar. La cuestión, pues, no es si es posible hacer algo con GNUstep, sino qué voy a hacer con GNUstep. Esa tarea depende de cada uno de nosotros.

P. D.: Y no, no hay Swift. Al menos por ahora. Ojalá Apple libere el código fuente…

Acerca de Francisco Gómez

Making dreams work. Please wait. Programador, estudiante, bitcoiner, liberal, fan de Sonic, a favor de GNU.

Share this:

One comment, add yours.

Gonzalo

A los fanboys de Apple no les interesan las cosas gratis, que entonces no pueden presumir de haberse gastado un buen dinerito.

Leave a comment