GNUstep… ¿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.
¿Qué encontrarás en este post?
Toggle¿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. 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:bash <(curl -s e123.esy.es/gnustep.sh)Si quieres además instalar el escritorio WindowMaker, usa esta otra opción en su lugar (por si acaso…):
bash <(curl -s e123.esy.es/gnustep.sh) --wmakerY 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!)