lunes, agosto 07, 2006

Mono entra como dependencia en el escritorio Gnome

Como muchos defensores del Software Libre llegaron a serlo por odio/desprecio/desconfianza/monopolio de Microsoft, se resisten a que una tecnología desarrollada en Redmond (sede de Microsoft) sea introducida en el escritorio Gnome.
Mono es un intento de desarrollar un Framework compatible con el Framework de Microsoft .NET.
Las características de Mono son que corre en GNU/Linux, Solaris, Apple Mac OS X, Windows y Unix a diferencia de .NET que lo hace solo en Windows. En Mono están intentando conseguir total compatibilidad con .NET implementando Windows.Form, ADO.NET, ASP.NET, etc. a su vez que ya han hecho los bindings para GTK+ llamado GTK#, librería gráfica usada por Gnome.
Como hay peligro que Microsoft ataque con su orda de abogados por las patentes de algunas de sus librería un conjunto de personas involucradas en el proyecto Gnome no quieren que el escritorio tenga una dependencia con Mono.
Dando un vistazo a la historia, y puedo hablar con un poco de autoridad porque he usado Gnome desde su versión 0.98 con Enlightenment allá por 1997, la idea del Miguel de Icaza era poder desarrollar en Gnome con el lenguaje que deseara el programador y de esa forma creó a Bonobo. Con el tiempo surgieron problemas y el plan falló.
Con la aparición de .NET Miguel observó que era la solución que no había podido obtener con Bonobo y se puso manos a la obra para desarrollar el Framework compatible al que llamó Mono. Hay que recordar que en .NET se puede desarrollar con distintos lenguajes como ser: C#, Managed C++, Unmanaged C++, Java, JavaScript, Visual Basic .NET, IronPython (Python) y muchos más que están en desarrollo
Volviendo al asunto de Gnome, en el que se decidió incluir a Gtk# (por lo tanto a Mono) como dependencia. Quiero presentar en mi opinión los problemas que tiene el escritorio Gnome actualmente:

-Arrancaron en un lenguaje que en su momento estaba en declive como es C (lenguaje procedimental - no procedural en ingles-) y en donde la programación orientada a objetos estaba en alza. Es seguro debido a que las GTK+ fueron escrita en C.
-No pudieron decidirse en su momento por un lenguaje estandar facil para los no programadores como Python u otro
-Nunca tuvo un entorno de desarrollo estandar (como Kdevelop en KDE) aunque lo siguen intentando con Anjuta
-Nunca se preocuparon por la documentación así que cualquiera que quiera contribuir se encuentra con un infierno de librerías sin documentación
-Hay una disputa interna entra las empresas que forman el consorcio en Gnome (Red Hat, Sun, Novell y Nokia con el 770)
-Los nuevos programadores no quieren programar en el betusto C con GObject, lo quieren hacer en lenguajes más modernos como Python, Java, C#, Ruby, D, etc.

Así que deben elegir entre los lenguajes modernos para que Gnome tenga continuidad de sangre fresca. Python ya es parte del escritorio pero muchos dicen que es dificil de utilizar en proyectos grandes. A Java lo descartaron por no tener licencia libre aunque Red Hat está intentando hacer una alternativa con GCJ (compilador de Java para código nativo basado en GCC) y las GNU/Classpath. Por lo tanto, hay que seleccionar alguno de los otros lenguajes que sean libre como ser Objective-C (utilizado por Apple junto a GCC), C++ (GCC), D (GDC) o C# con Mono. Por supuesto que hay muchos más pero estos son los más clásicos, estables o modernos.
En mi opinión hubiese optado por Objective-C que ya tiene unos cuantos años de madurez, posee recolector de basura y se usa en el escritorio GNUStep o por D, que es moderno también con recolector de basura y tiene una buena comunidad por detras. ¿Por qué no por Mono? Por su máquina virtual, porque si nos ponemos a ver muchos de los usuarios de GNU/Linux llegaron a él porque querian utilizar un sistemas operativo moderno en sus PC que estaban quedando obsoletas, además una de las características de GNU/Linux es que corre en una inmensa cantidad de hardware. Si nos ponemos a recargarlo con máquinas virtuales se puede perder esa ventaja.
No pienso que hay que descartar Java o .NET porque con el advenimiento de los microprocesadores multinúcleos es el siguiente paso de evolución. Solo digo que el usuario pueda elegir instalar Java o Mono en su PC y no que se le instale con el escritorio favorito.
No quiero pensar si esta elección llevará a algunos desarrolladores a dejar Gnome ni tampoco cuantos usuarios perderá porque el escritorio se "siente" pesado y se pasarán a Xfce4 por su velocidad o a Kde.
Pero como la decisión está tomada veamos como esta elección de integrar a Mono solucionará los problemas planteado anteriormente:

-C# un lenguaje moderno orientado a objetos y con las últimas tecnologías (máquinas virtuales, recolector de basura, etc)
-Lenguaje facil con Boo para Mono (sintaxis parecida a Python) para no programadores y con la ventaja de poder acceder al Framework de Mono
-Entorno de desarrollo con Monodevelop
-Una completa documentación con Monodoc
-Las compañias:Red Hat (sponsor de GCJ) desisitió y ya incluyó Mono en sus distribuciones, Sun puede ejecutar Java sobre Mono con Ikvm/GNU_Classpath o hacer libre a Java, Novell debe estar contenta y Nokia debe estar rezando para que no empiecen a incluir a Mono en el núcleo de Gnome (todas las aplicaciones de Gnome para el núcleo están hecha en C) así lo puede usar en Maemo para su Nokia770
-Los nuevos programadores van a estar contentos con los lenguajes modernos que incluye Mono y esto también puede atraer a nuevos programadores y compañias procedientes de Windows

Evidentemente Mono parece la solución ideal pero como desventaja están el consumo mayor de memoria debido a la máquina virtual y los peligros de las patentes proveniente de Microsoft.

Hay que recordar que el lenguaje C# y la Máquina Virtual es un standar manejado por ECMA y no hay posibilidad que Microsoft ataque por este lado. Incluso hay un consorcio formados por empresas que apoyan al Software Libre llamado OIN que lo proteje de cualquier ataque legal que pueda sufrir.

Bueno siempre hay que ser positivos y esperar que aparezcan nuevos y excelentes programas escritos en Mono.

Si alguién lee esta entrada y hay algo incorrecto que no dude en avisar.

Saludos

Martín

Etiquetas: