Estado del proyecto GNUstep

Hace aproximadamente dos meses inicio una discusión en la lista de GNUstep acerca de como atraer mas desarrolladores y usuarios al proyecto. Se discutió desde crear una distribución con un escritorio basado en GNUstep, un navegador web basado en GNUstep, soporte para swift, un nuevo tema para las apps, paquetes binarios para diferentes distribuciones y cambiar el host de los repositorios del proyecto, entre otras cosas. Como siempre, no es fácil ponerse de acuerdo con estas cosas. Pero esta claro que lo importante era buscar una forma de atraer mas desarrolladores y usuarios. Y como parece que siempre debe haber un problema, la tormenta comenzó cuando se sugirió mover el proyecto a GitHub, por ser esta una plataforma muy popular que permite la interacción entre todos los usuarios, lo que facilita dar a conocer un proyecto y recibir contribuciones. Inmediatamente saltaron las alertas de que GitHub no es una plataforma ética de acuerdo a los lineamientos de la FSF, lo que origino comentarios para crear un fork del proyecto y alejarse definitivamente del proyecto GNU y la FSF.

Como desarrollador de software libre entiendo que uno quiera tener mas desarrolladores y mas usuarios. Por que sino ¿que sentido tiene el trabajo que uno hace si nadie lo utiliza y pasa desapercibido? Pero también entiendo que el proyecto GNU no tiene como prioridad crear software popular, sino crear software “libre”. Aquí, por supuesto, hay dos mundos que chocan. Por un lado están los desarrolladores que quieren que su trabajo sea utilizado y reconocido. Y por el otro lado esta la FSF que tiene como prioridad que todo lo relacionado a uno de sus  paquetes de software sea libre, siendo algo secundario el hecho de si este es reconocido o utilizado. De hecho, si ustedes ven la lista completa de los paquetes GNU, se sorprenderán con la cantidad de paquetes desconocidos, que son poco utilizados o que simplemente no son utilizados. Y entonces surge la pregunta ¿que incentivo va a tener un desarrollador si su paquete no es reconocido o utilizado? Por supuesto, hay desarrolladores que escriben software libre por el ideal del software libre mismo, pero no todos los desarrolladores escriben por las mismas razones. Además la mayoría de estos desarrolladores comenzaron a colaborar antes de que existieran los criterios de repositorios éticos. Y si a esto le sumamos el hecho de que la FSF no le paga un solo centavo a los desarrolladores de paquetes GNU, entonces surgen algunas preguntas interesantes.

Si alguien que esta colaborando con el proyecto GNU resulta que hace uso de un servicio calificado de no ético por la FSF ¿quienes somos nosotros para juzgarlo si él esta regalando su trabajo al proyecto? Es cierto que la FSF no lo puede obligar a dejar de usar dicho servicio, pero el solo hecho de que se le señale de no ético es suficiente para crear problemas en la comunidad.

Creo que en todo esto el punto importante es la colaboración. Entendida como un grupo de personas que trabajan juntas para lograr un fin aun cuando existan diferencias entre ellos. Si al final de todo el paquete de software es liberado bajo una licencia libre y puede ser obtenido sin problema (por ejemplo en el servidor ftp de gnu) entonces ¿donde esta el problema?

En mi opinión la FSF debería mediar para crear un ambiente de armonía entre sus colaborados, en vez de señalar aquí o allá para crear divisiones. Para esto primero debe aceptar que no le será posible forzar a todos sus colaboradores a adoptar al 100% sus puntos de vista. Y aceptar también que muchos de ellos, que trabajan en el ámbito informático, se ganan la vida desarrollando software propietario y usando herramientas propietarias. Porque son pocos los afortunados que pueden ganarse la vida trabajando completamente con software libre.

Volviendo al caso de GitHub, si alguien no esta de acuerdo con este servicio, puede fácilmente proveer un mirror en otro host que cumpla con los criterios éticos y fin del problema. Lo malo de toda esta discusión en torno a GitHub y sobre un posible fork del proyecto, es que en lugar de atraer desarrolladores, algunos lo dejaron. Por lo menos uno ha dejado definitivamente el proyecto, pero estoy seguro de que hay otros que no se van a volver a aparecer. Y el que definitivamente dejo el proyecto, era el que mas conocía sobre el sistema de manejo de texto en GNUstep, lo que significa que los bugs que aun permanecen en dicho sistema estarán allí por un buen tiempo. Uno de esos busg es el que impide el manejo correcto de HTML en los visores de texto, lo que a su vez impide la creación de un navegador web.

Greg Casamento, el jefe de mantenimiento de GNUstep, publico una lista de tareas para el proyecto. Entre las que se encuentran: implementar un escritorio basado en GNUstep, un visor web, soporte para Wayland, cambiar el tema por defecto y soportar nuevas características de Objective-C. Todo esto requerirá, por supuesto, mas desarrolladores. Si este año que viene el proyecto no atrae mas desarrolladores y mas usuarios, no quiero imaginar lo que pueda pasar cuando, como todos los años, se de la misma discusión. Lo peor sería el practico abandono del proyecto, es decir,  que queden muy pocos desarrolladores y que no hayan mas usuarios. La otra alternativa, que no le gustaría a la FSF, sería crear un fork y alejarse definitivamente de GNU.

Por el momento no quiero pensar mas en todo esto, y esta es la razón de porque no había publicado nada hasta ahora. Como desarrollador quiero que mi trabajo sea reconocido y utilizado. Y no me agrada la idea de que me pongan trabas para alcanzar este objetivo cuando estoy regalando mi tiempo y mi esfuerzo.

Objective-C binding para GTK+

Hace meses se libero un paquete para poder utilizar el toolkit de Gtk+ desde Objective-C. La verdad es que no le había puesto mucha atención, ya que nunca he utilizado Gtk+. Pero después de revisar la página oficial (esta) y la wiki donde hay algunos ejemplos, decidí escribir una entrada para aquellos que por diversas razones estén interesados en utilizar Gtk+ desde Objective-C. No lo he probado, pero de acuerdo a las FAQ solo soporta Gtk+ 3.x.

GNUstep en Windows 10

Debido a que alguien reporto problemas con GNUstep en Windows 10, me di a la tarea de instalar una maquina virtual con este sistema operativo y comprobar posibles errores. Pero resulta que todo funciono bien, así que no se cual pudo ser la causa del problema reportado. Aquí les dejo una captura de Gorm en Windows 10. Sería bueno saber si alguien que este usando este sistema operativo ha tenido problemas o no con GNUstep.

Windows-10_Gorm

Un par de videos sobre Gemas y Emacs

He subido un par de videos (Sí, aquí en Guatemala decimos video, no vídeo. Y veo que esta aceptado por la RAE por mas que el corrector ortográfico me diga que esta mal.) que muestran la configuración y algunas características del editor Gemas. Así como la instalación y uso del paquete gs-emacs, el cual añade algunas características útiles al editor Emacs. Esto como preludio a otros videos que iré subiendo sobre programación con GNUstep y el uso de Gorm. Estos están alojados en goblinrefuge.com/mediagoblin (los enlaces de abajo) y también en YouTube. Clic en la imagen para ver el video correspondiente.

gemasIntro

gs-emacs

Instalador de GNUstep para Windows

Bueno, después de pensarlo decidí hacer un instalador de GNUstep para Windows. Así que ya lo pueden descargar aquí. Lo se, es bastante grande (308 Mb), pero no quise perder tiempo viendo que era necesario y que no. Así que lo empaquete todo. Este instalador incluye los paquetes básicos de GNUstep: make, base, gui y back, así como el framework renaissance. Además incluye las aplicaciones SystemPreferences, Gorm, Gemas y el editor Emacs. El instalador crea entradas para estas aplicaciones en el menú de Windows, así como para el shell de MinGW (msys). Si no tienen menú de aplicaciones (Windows 8), pues a dar doble clic sobre los ejecutables correspondientes. Y con esto tienen todo lo necesario para comenzar a programar con Objective-C usando GNUstep. Después de terminar la instalación, es necesario configurar el idioma. Así que abran el shell y ejecuten el siguiente comando:

defaults write NSGlobalDomain NSLanguages “(Spanish)”

También recomiendo ejecutar el corrector ortográfico para que este se configure. Ejecuten el comando:

/local/lib/GNUstep/Services/GSspell.service/GSspell.exe

Cuando termine la configuración presionen Ctrl+C.

Por supuesto, este instalador esta actualizado con muchas mejoras respecto al instalador disponible en la página oficial de GNUstep. Así que ¡Happy Hacking!

Corrector ortográfico y Drag & Drop en Windows

Bueno, en las últimas semanas estuve un poco ocupado tratando de hacer funcionar el corrector ortográfico en Windows, y finalmente lo logre. Las instrucciones para lograrlo, en inglés, ya están disponibles aquí. Posteriormente actualizare la entrada con las instrucciones en español. Aquí les dejo una captura:

windows-corrector

Por otro lado, el Drag & Drop (Arrastrar y soltar) funciona en Windows tanto con el backend winlib como con cairo. Aunque con cairo no se ve el objeto que se esta arrastrando, solamente un rectángulo negro. Sin embargo, como cairo es el backend recomendado, decidí buscar la solución a este problema. Este resulto ser un problema con el que ya me había encontrado antes y cuya solución es sencilla, aunque no del agrado de todos. Para resolverlo hay que hacer un pequeño cambio en el código, el cual publicare luego. Aquí les dejo una captura del Drag & Drop en Gorm:

windows-drag&drop

Me gustaría publicar un paquete de GNUstep para Windows, pero por el momento no tengo donde subirlo. Tal vez subirlo a algún servicio como Mega. Por simplicidad, estoy pensando en un paquete zip solo para descomprimir y configurar, y evitarme la complejidad de hacer un instalador. Todo esto lo hago con el fin de atraer mas usuarios a este grandioso entorno de desarrollo.