19 de junio de 2009

La insoportable levedad de Mono (I)

Un post sobre Mono ha vuelto a reavivar en el mundo del software libre la eterna polémica de siempre. Tiene Mono un no-se-qué de pretendiente carlista, de eterno sucesor a la corona.

A Mono le basta con ser lo que es -clon de C#/.NET- para justificar su existencia, sin embargo no es ningún secreto que sus creadores siempre quisieron que fuera la futura plataforma de desarrollo para Gnome. Pero sus pretensiones siempre han chocado frontalmente con una parte importante del resto de desarrolladores. Por si solo esto ya es un síntoma que esas pretensiones son una quimera, porque por muy razonable que sea su propuesta, sin el apoyo del resto de la comunidad no se va a ningún lado, y mucho menos si a la ausencia de apoyos se suma cierta oposición férrea.

Los Moneros, como primero de los argumentos, suelen decir que no debemos tener complejos en usar cosas buenas de Microsoft, que si .NET es bueno es estúpido no usarlo. Que se deseche el "reinventar la rueda". El problema de esta afirmación, dejando de lado el hecho indiscutible de que .NET viene a ser un clon de Java (tal vez algo mejorado, pero clon), es que quien ciertas personas del entorno de Mono parecen alabar casi sistemáticamente casi todo lo que venga de Microsoft, sea bueno o no. Sus blogs tienen, algunas veces, cierto parecido al material de marketing orientado a desarrolladores de la compañía. Esto por si solo no tiene nada de malo, las plataformas de desarrollo de Microsoft serán buenas o malas, pero se pueden usar y clonar bajo una licencia libre, faltaría más. No tiene nada de malo, muchas partes de KDE tambien son clones de ideas de Windows, ej el antiguo DCOP.

No, el problema no es clonar, ni usar ideas de Microsoft. El problema es clonar y tragarse todas las ideas de Microsoft, como, por ejemplo, tragarse el kool-aid de Silverlight como plataforma web del futuro y correr a clonarlo a toda prisa nada más presentado. Eso no es tan razonable para la comunidad del software libre, que ve en estas acciones una creciente dependencia tecnológica, y quien no es razonable consigo mismo no puede esperar que la gente lo sea con ellos. Como decía un comentarista de slashdot, parece más bien que esa gente "follows, not lead", o sea, que siguen la corriente, en vez de crear y dirigir la corriente ( y está pero que muy equivocado quien piense que Linux puede vencer a Windows siguiendo su corriente).

Pero es que liderar no significa renunciar a las buenas ideas, significa simplemente tener ideas propias y buenas, y no conformarse con las ideas de los demás. Un buen ejemplo: el lenguaje Vala. Con toda la cutrez y fealdad que puedan achacársele, creo que Vala tiene más de "lead" que Mono, porque en vez de copiar literalmente la idea de .NET, coge una idea -C#- y trata de aplicarla para las necesidades concretas de Gnome y de Linux, trata de tener ideas propias, ideas tal vez no bellas, pero si muy prácticas. Se trata de una criatura controlada por gnomeros -una importantísima ventaja que da mucha confianza a la gente-, tiene una magnífica compatibilidad -todo el código Vala puede reutilizarse en C mediante GObject, y por ende en el resto de lenguajes que tienen bindings con gnome-, y tambien tiene... (sorpréndanse) mejor rendimiento (de hecho parece ser que fue el rendimiento de mono lo que ha causado el nacimiento de Vala). En resumen, tratan de combinar lo mejor de todos los mundos, y parecen estar lográndolo.

Las otras razones que se suelen oir para defender a Gnome son bastante curiosas. Se alaban las virtudes de Mono como plataforma, pero se olvidan y relativizan las de otras. ¿Acaso no tiene Java muchas de las mismas ventajas que Mono? ¿Y qué decir de la crítica de velocidad a Python? Si el problema de Python es la velocidad, tambien es una opción acelerar python, como está haciendo Google. Y luego está lo de las patentes y asuntos legales, que Mono insiste en negar en que no son un problema, pero la realidad es que hay patentes (de aquellas referidas a C# Microsoft da permiso para usarlas más o menos libremente, las referidas a las librerias .NET no), Microsoft es Microsoft, y todos sabemos como son estas cosas: las patentes son absurdas y pueden crear problemas absurdos con sorprendente facilidad.

(continuará)

10 comentarios:

  1. Muy buen articulo, seguir esos caminos turbulentos puede llevarnos a sitios oscuros. Lamentablemente tenemos que ser desconfiados en estos aspectos, y con Micro$oft todavia más.
    No olvidemos todas las trabas y tretas que siempre estan armando para perjudicar el desarrollo libre.
    Ellos estan acostumbrados a su monopolio, y cuando se ponen la piel de cordero nosotros tenemos que ser los lobos y no caer en la trampa.

    ResponderEliminar
  2. Estoy de acuerdo contigo, pero sigo siendo de la opinión de que es una ayuda no para liderar ciertas corrientes dentro del software, sino para no descolgarse. Para liderar ya están otras muchas tecnologías que sí son referentes, pero nunca debemos descuidar el poder, que por desgracia, sigue teniendo Microsoft y sus tecnologías (buenas y malas) sobre el mundo del software en general.

    ResponderEliminar
  3. Un comentario más o menos tangencial a esto: en el mundo de Linux siempre se ha visto bien copiar las ideas de OSX pero no las de Windows. Para mucha gente de "la comunidad" todo lo de Windows es malo, y todo lo de OSX bueno, sin pararse a pensar ni lo uno ni lo otro.

    Si C# lo hubiera inventado Apple, no se estaría hablando tanto de este tema.

    ResponderEliminar
  4. Antes de utilizar Java o Mono me centraría en mejorar Python como comentas en tu artículo. Python ha estado ligada al software libre desde sus orígenes con un gran desarrollo por parte de su comunidad con muchisimas librerías, es más divertido y fácil de usar y no trae los problemas con compañías varias que pueda traer mono o java.

    ResponderEliminar
  5. mono me parece una excelente idea, el poder usar el codigo desde diferentes lenguajes, sin tener que hacer el famoso binding me parece una buena idea.

    mono es una maquina virtual sobre la que corre muchos lenguajes, ¿java? es una maquina virtual echa para un solo lenguaje, java

    ResponderEliminar
  6. Lo de las patentes si es una molestia. Invertir horas y horas de código para luego tener problemas no es a algo deseable.

    Hasta que no esté totalmente claro que patentes pueden ser usadas en contra y cuales no, habrá mucha gente que rechace mono.

    ResponderEliminar
  7. Anónimo6:58 a. m.

    .dll y .exe en mi GNU/Linux ??? me quedo con java

    ResponderEliminar
  8. Las cosas que hay que leer...

    ResponderEliminar
  9. Personalmente, creo que lo unico interesante de C# es poder combinar varios lenguajes.
    De resto, el hecho de hacer un clon como mono, de verdad que no le veo el chiste, y aun más usándolo en Gnome (ya imagino todo Gnome en C#, comiendo recursos como bestia... ).

    Yo apenas soy estudiante de Informática, y a lo mucho se programar en C/C++ (con intenciones de aprender java para no llevarme inesperados más adelante en la universidad =P ), y, aunque ya había escuchado hablar de Vala, no le había prestado mucha atención... y se ve interesante; seria genial que se vuelva una alternativa no tanto amarrada a gnome, sino que se extienda a otras plataformas (dígase, "el imperio" o.o ).

    Saludos!, y excelente Blog ;D

    ResponderEliminar
  10. Es un arma de doble filo ya que con eso implemetan carateristicas de programas soportados en microsoft , que esto genera que tengan compatibilidad en linux.
    De tal manera que los usuarios de windows se puedan pasar a linux

    ResponderEliminar