Mono: Mi primer post técnico

Hola a todos (si es que hay alguien por ahí), soy yo de nuevo. Esta vez quiero escribir mi primer post técnico, el motivo? bueno, algún día quiero llegar a ser un gran consultor de tecnología cuando termine mi carrera y si quiero desarrollar mis habilidades, creo que debo empezar en algún punto. Así que he decidido investigar sobre algunos proyectos de Software en Internet. 

En esta ocasión, me decidí por el Proyecto Mono, la implementación libre de .NET (si, la plataforma de desarrollo de Microsoft). Gracias a este proyecto un programador puede compilar y ejecutar código escrito en C# desde Windows en ambientes Unix (genial! no te parece?). Sin embargo, debo decir que Mono es más que un “clon libre” de .NET, quiero decir, los chicos detrás de este proyecto están trabajando en características que no están incluidas en .NET; por ejemplo, soporte para lenguajes de programación libres como python y ruby entre otros (la lista de lenguajes soportados es bastante amplia). En otras palabras, Mono es .NET y mucho más🙂

Escogí Mono para empezar, porque me pareció un proyecto de software libre (Mono se encuentra cubierto por el conjunto de licencias: GPL, LGPL y MIT. Todo open source!) muy ambicioso y digo esto porque el grupo de chicos que lo conforma está compitiendo contra el equipo de desarrollo  de Microsoft. Para nada un reto sencillo, si tienes en cuenta que Microsoft es una de las compañías de software más poderosas alrededor del mundo. Si Microsoft publica una nueva API para .NET, entonces los programadores detrás del proyecto Mono empiezan a desarrollar una propuesta libre de dicha API. Tal vez esto no ocurra con todos los componentes, pero al menos si con la mayoría. No tengo referencia de excepciones de este tipo, pero agradezco retroalimentación ;) 

Buscando por pistas, estuve visitando algunos canales de IRC en Internet y entonces, vaya sorpresa!, encontré a  Miguel de Icaza en línea. No lo podía creer, es decir, este chico es el líder del proyecto Mono y claro, la cabeza del proyecto GNOME en sus inicios. Si, él es un GeeK legendario y para ser honesto, algún día espero ser tan famoso como él. Lo grandioso de Internet es que puedes acercarte a personas que tal vez nunca vayas a conocer en el mundo real. Por un momento, pensé que no podría hablar con él, pero por el contrario, me respondió algunas preguntas y fue muy amable, lo que me tiene muy motivado a escribir este post🙂

Le pregunté por algunos temas interesantes para hablar sobre Mono y él me sugirió Moonlight y PLINQ. Así que, hace una semana comencé mi investigación sobre estas librerías y esto fue lo que encontré:

Acerca de Moonlight: Esta es una propuesta libre del proyecto Microsoft Silverlight. Pero, ¿De qué se trata esto último? bueno, en mis propias palabras, es la respuesta de Microsoft a Flash, la plataforma de desarrollo para contenido multimedia de Adobe. En las palabras de Microsoft: “La próxima generación de experiencias multimediales basadas en .NET y aplicaciones interactivas enriquecidas para la Web”.

Pero, ¿De qué se trata todo esto? IMHO, de dos grandes compañías luchando por conquistar un mercado bastante lucrativo (el de la producción de aplicaciones multimedia), pero aún más importante, dos interesantes plataformas de desarrollo con recursos realmente libres y abiertos para desarrolladores. ¿De ambas partes? Si! gracias a Mono podemos tener acceso a Moonlight y por inercia a toda la tecnología Silverlight.

De otro lado y gracias a Adobe, ahora podemos jugar con las especificaciones del formato SWF y ser parte del Proyecto Open Screen para desarrollar cualquier clase de reproductores y aplicaciones multimedia sin ningún tipo de barrera legal (el siempre enredado asunto de las licencias y las patentes). Creo que es una época bastante interesante la que se vive en este campo de batalla tecnológico, no te parece? y la comunidad de Software Libre está cosechando generosos frutos como resultado de este duelo de gigantes. No me cabe la menor duda.

Bueno, ahora hablemos un poco más acerca de Moonlight: cuando pienso en el potencial de esta librería en el desarrollo de aplicaciones multimedia para Internet, debo decir que me parece increíble. Sólo tienes que darle un vistazo a la sección de Screenshots en la página de Mono, para encontrar una gran variedad de aplicaciones usando esta tecnología, y todo corriendo desde Firefox, lo cual significa que funciona bajo estándares y no como otras propuestas dependientes y exclusivas de Internet Explorer.

La verdad es que nunca imaginé librerías legalmente libres con la capacidad de procesar archivos XAML desde Linux y en este punto, debo decir que me sorprende la forma en que el mercado puede cambiar las estrategias de negocios de compañías como Microsoft. Me pregunto si la tendencia Open Source ha sido un factor de influencia en todo esto. No me atrevo a opinar (y tú?).

Para finalizar este punto, quisiera citar las metas del proyecto Moonlight: 

  • Ejecutar aplicaciones Silverlight desde Linux.
  • Proveer un Kit de Desarrollo para aplicaciones Silverlight.
  • Reusar el motor de Silverlight implementado para aplicaciones de escritorio.

Como puedes leer, estos chicos quieren hacer la tarea _completa_. Teniendo en cuenta que son programadores experimentados y que tienen el apoyo económico de Novell como respaldo, creo que lo van a lograr; sólo es cuestión de tiempo. Ya he jugado un par de veces con Mono, pero necesito más tiempo para entender y jugar con Moonlight (voy a hacerlo, lo prometo!).

Acerca de PLINQ: Cuando comencé a leer al respecto, debo decir que me sorprendió mucho su concepto base: sacar provecho de los procesadores multi-core usando una librería. La idea principal consiste en acceder a estructuras de datos desde un diverso tipo de orígenes (bases de datos, archivos xml, lo que quieras). Sólo una condición es requerida: todo debe ser un objeto, o al menos, los datos deben ser encapsulados para poder hacer parte del juego.

El punto más interesante que encontré acerca de esta API fue LINQ (Language Integrated Query), el conjunto de instrucciones definido para acceder a los datos; es algo parecido a SQL (a propósito, estoy aprendiendo al respecto en mi clase de bases de datos) pero un poco más genérico. Me sorprendió mucho porque nunca imaginé utilizar un concepto similar a una “consulta” como si fuera parte de la sintaxis de un lenguaje de programación. Para mí, esto luce algo exótico pero interesante, debo confesarlo. Mira a lo que me refiero:

var q = from x in data where (x.f-- > 0) select x;

Una vez escuché a mi profesor decir: “Los lenguajes de programación evolucionan” y siento que este es uno de esos casos. Quiero decir: sentencias similares a SQL como parte de las instrucciones de un lenguaje? Nunca antes vi algo similar a esto, aunque la verdad, aún no domino muchos lenguajes de programación (Conoces algún caso similar a este?).

La teoría alrededor de PLINQ me resulta bastante interesante, debo admitirlo; sólo me quedan dudas acerca del rendimiento. PLINQ luce poderoso en términos de acceso a datos, y supuestamente optimiza el uso de los núcleos del procesador, pero aún no he hecho una prueba formal. La pregunta es: ¿Qué tan eficiente es? Estuve buscando experiencias previas en Internet pero sólo encontré un post en un foro (no hubo suerte esta vez… tu sabes algo al respecto?).

De todas maneras, debo decir que PLINQ me parece una propuesta bastante interesante, un nuevo concepto, bueno, al menos para mí, quiero decir, me parece que esta tecnología está enfocada a aprovechar el hardware del futuro y apuesto que seguirá evolucionando, por lo que creo que los resultados en algún momento (cerca o lejos) serán asombrosos.

Muy bien, eso es todo por ahora… muy corto, cierto?😦 Creo que debo tratar de ser más técnico la próxima vez, pero no es una tarea fácil para mí. Algunas personas dicen que los jóvenes pierden el enfoque muy fácilmente, pero yo creo que hay una razón para ello. Simplemente estamos descubriendo el mundo de los adultos, así que es muy fácil sorprenderse con cada nuevo detalle: negocios, compañías, Internet, desarrollo de software, lo que tu quieras. El panorama completo es deslumbrante para mí y eso me hace feliz, porque siento que sólo significa una cosa: Tengo mucho que aprender.

A propósito, hoy fue lanzado Mono 2.0. Mi post coincidió con una publicación de Mono! Genial!😛

Hora de hacer mis deberes (de nuevo :S) Nos vemos luego!

Tags: ,

2 Responses to “Mono: Mi primer post técnico”

  1. gurzaf Says:

    Jeje, ta bueno el post, y también cibertito.com, acepte el reto geek y como que me fue bien para ser el primer intento😛 (80 de 100).
    Espero con mas tiempo pasarme por aquí y seguir leyendo suertexxxxx

  2. cibertito Says:

    Hola, gracias por dejar tus comentarios en mi blog y espero que vuelvas pronto. Por lo visto, eres muy bueno con los retos, tal vez algún día me enseñes algunos trucos😛

    Buena suerte amigo!

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: