Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license can be found in http://www.gnu.org/copyleft/fdl.tml.
Resumen
El presente art�culo resume los primeros meses de historia de Mono Hispano, una comunidad de desarrolladores de la plataforma Mono que ha captado en este tiempo una gran atenci�n, un grupo amplio de personas y una actividad destacable.
Junto con la presentaci�n de Mono Hispano, se describir� de forma sucinta la plataforma Mono para comprender la importancia de la misma como la integraci�n de m�ltiples tecnolog�as bajo un parag�as com�n.
Tabla de contenidos
Mono Hispano es un grupo de personas con un inter�s com�n por la plataforma Mono y unidas por una lengua com�n, el espa�ol.
El nacimiento de Mono Hispano como es habitual, surgi� dentro de una comunidad ya establecida, GNOME Hispano, y tras detectarse el inter�s de varias personas por Mono. El nacimiento parti� las listas de correo, incluso podemos ver que correo fue el que lanz� la idea original de la creaci�n de Mono Hispano. Tras un primer art�culo de como comenzar a utilizar Mono en GNU/Linux, una vez que dej� de depender de Windows, r�pidamente un grupo de personas que ya estaban interesadas en Mono se comenzaron a coordinar para el lanzamiento de Mono Hispano y el 20 de julio de 2002, se envi� a la lista de GNOME Hispano la propuesta de la creaci�n de Mono Hispano con una serie de objetivos iniciales.
Dos d�as despu�s ya se hab�a creado la lista de distribuci�n de Mono Hispano y a la semana vi� la luz el web de Mono Hispano y comezaron a aparecer en la web gran cantidad de nuevos contenidos, especialmente tutoriales de iniciaci�n en C#, NUnit, Gtk# o XSP.
En el mismo Julio, lleg� a la lista la propuesta para el gran primer proyecto de Mono Hispano, MonORB, el desarrollo de un ORB CORBA 3.0 en C# e integrado con la plataforma Mono. Un proyecto muy ambicioso que sin duda, llevar� un largo peri�do de maduraci�n pero que parece muy bien encaminado.
Y tambi�n en este mismo mes, naci� el canal #mono-hispano dentro de la red de IRC del proyecto GNOME, irc.gnome.org, y se imparti� la primera charla sobre una clase de Mono.
En la actualidad, la lista de correo de Mono Hispano cuenta ya con m�s de 90 personas y poco a poco se va convirtiendo en uno de los grupos m�s importantes de Mono y .NET, formando a una comunidad que va madurando y de la cual seguro que en el futuro cercano, surgir�n muchos de los desarrolladores de la una de las grandes bazas del software libre en el futuro, la plataforma de desarrollo de aplicaciones Mono.
Al ser Mono una implementaci�n de partes de la plataforma .NET de Microsoft, es un proyecto que ha acercado mucho dos comunidades de desarrolladores y usuarios hasta ahora muy separadas: GNU/Linux y Unix en general y Windows. Por ello, el grupo de personas que participan en Mono Hispano es muy heterog�neo.
Dentro del grupo hay desarrolladores que actualmente est�n trabajando en la plataforma de Mono y que aportan una gran experiencia. Hay personas que estaban aprendiendo C# y .NET en Windows, y que han encontrado dentro de Mono Hispano una comunidad en la que intercambiar experiencias.
Pero sin duda, el grupo m�s numeroso es el de desarrolladores y usuarios de GNU/Linux que tienen inter�s por esta nueva plataforma y que no quieren perder la oportunidad de estar entre el grupo de cabeza a la hora de disfrutar de sus posibilidades, que en la actualidad ya son muy interesantes.
Dada esta heterogeneidad, es seguro que si est�s leyendo este art�culo, podr�s entrar a forma parte de Mono Hispano, donde encontrar�s una rica experiencia y un lugar en el que participar de forma activa en uno de los proyectos m�s apasionantes que existen ahora mismo en la Red.
La lista de correo es el punto de entrada y los archivos de la lista, los conocimientos acumulados en los meses de funcionamiento del grupo.
Como toda comunidad que surge en la Red, una serie de motivaciones han llevado a la creaci�n de la misma. En el caso de Mono Hispano, la principal motivaci�n es clara: aprender la plataforma Mono. Esto lleva consigo el aprendizaje de un nuevo lenguaje de programaci�n, C#, de nuevas herramientas como nUnit, nAnt o nDoc entre otras, de nuevos conceptos de integraci�n entre lenguajes y plataformas, y en general, de un cambio importante a la hora de desarrollar software, en especial de desarrollar software libre.
Para hacer realidad este objetivo, se lanzaron una serie de puntos en el correo que anunci� la fundaci�n de Mono Hispano. Entre ellos los m�s destacados son:
Dar a conocer que es mono como proyecto libre de .NET a la comunidad hispano-hablante.
Conocer C# y asi como otros lenguajes de programaci�n incorporados a .NET
Estudiar a fondo GTK#
Transformar aplicaciones de GNOME a GTK#
Desarrollo de aplicaciones en GTK#
Conocer esta nueva arquitectura, Mono
Ayudar a implementar las partes restantes de Mono, principalmente clases y herramientas
Sin duda, una lista a�n poco madura aunque muestra las intenciones con bastante exactitud. En la actualidad se han detectado otros objetivos importantes a llevar a cabo, entre los cuales destacamos uno:
Apoyo a proyectos que surgan relacionados con Mono
Es enorme el trabajo que a�n queda por hacer en Mono para que llegue a ser un equivalente libre a la plataforma .NET de Microsoft por lo que las labores a llevar a cabo son muy amplias y nunca se tienen suficientes recursos. Por lo tanto, y antes de que sigamos, s�, te necesitamos :). Las tareas que se esta�n llevando actualmente a cabo dentro de Mono Hispano las pasamos a detallar a continuaci�n, aunque seguro que para cuando lea este art�culo, ser�n muchas m�s.
Las tecnolog�as que rodean a Mono, aunque muy similares a Java, tienen sus propias caracter�sticas. Existen una gran cantidad de nuevas herramientas a aprender, asi como lenguajes, por lo que nos hemos fijado como uno de los principales objetivos en Mono Hispano, desvelar todas las partes que podamos de Mono de forma que el acercamiento a la plataforma sea lo menos complicado posible, rebajando la curva de aprendizaje todo lo que podamos. Los tutoriales que ya se encuentran en la actualidad dentro del sitio web (http://mono.es.gnome.org), aunque en muchos de ellos a�n se est� trabajando, son:
Mono en GNU/Linux: Manual de instalaci�n y uso de Mono en GNU/Linux
Preguntas de Uso Frecuente sobre Mono: Traducci�n de la FAQ de Mono
Tutorial de C#: Tutorial para empezar a conocer C#
Tutorial de NUnit: Tutorial para aprender pruebas unitarias con NUnit
Tutorial de XSP (Ximian ASP.NET): Tutorial de XSP
Tutorial de .NET Remoting: Tutorial de .NET Remoting
Tutorial de Gtk#: Ejemplo b�sico de desarrollo de una aplicaci�n usando la API Gtk#
La web de Mono Hispano es actualizada de forma constante para reflejar los cambios dentro del entorno. Nuevos tutoriales, proyectos, recursos, listas de distribuci�n ... la labor es continua. Pero se dispone de un potente sistema de publicaci�n basado en XML y PHP que permite, de forma sencilla, mantener el sitio Web.
El mantenimiento y ampliaci�n del web de Mono Hispano es fundamental, al ser la cara m�s vista del grupo, por lo que siempre son necesarios recursos que ayuden a mantener todo en perfecto estado.
Dentro de la plataforma Mono, una de las partes m�s extensas que hay que llaver a cabo son la implementaci�n de los cientos de clases de C# que un desarrollador de .NET espera tener disponibles dentro del entorno de desarrollo.
Y para asegurar la calidad de las mismas, se est�n creando pruebas unitarias para todas, de forma que en todo momento se pueda comprobar el estado de las clases, si se pasan las pruebas existentes, si se introducen cambios problem�ticos o si el comportamiento de la clase es el esperado.
El desarrollo de estas pruebas unitarias exige el conocer la clase que se quiere probar a fondo y luego, desarrollar en C# las pruebas de la clase que aseguren su correcto funcionamiento. Sin duda, un buen camino para comenzar con el aprendizaje de las clases de Mono y la programaci�n en C#.
Como ya comentamos en el apartado anterior, son cientos las clases que a�n se est�n desarrollando en Mono y siempre se necesitan nuevas aportaciones para acelerar el desarrollo. El implementar clases de Mono no requiere m�s que conocer las tecnolog�as asociadas a la clase que estamos implementando y el lenguaje C#. Hay clases de lo m�s variadas, por lo que todo el mundo encontrar� ese tipo de desarrollos que siempre le han gustado.
Una de las carencias actuales de Mono es un sistema de generaci�n de documentaci�n de clases flexible y potente. Se est� trabajando ya en ello, en concreto en el desarrollo de una aplicaci�n ASP.NET que muestre la documentaci�n de las clases.
En Mono Hispano estamos intentando ayudar en esta labor estudiando la disponibilidad actual de herramientas, el sistema de documentaci�n javadoc e intentando integrar todo en una herramienta.
En Mono Hispano, ha dado la casualidad de disponer entre sus miembros de personas con amplios conocimientos de CORBA por lo que, en cuanto se lanz� la idea de implementar un ORB de CORBA 3.0 en C# utilizando Mono, la idea cuaj� de forma inmediata. Es un proyecto ambicioso y extenso, y por el camino se espera ir dando ya resultados, como la implementaci�n de las clases de Remoting de Mono.
.NET pretende ser multilenguaje, es decir, al cumplir la especificaci�n de ECMA, lo que se quiere conseguir es la infraestructura de un lenguaje com�n (CLI) el cual tiene que tener un sistema de tipos com�n (CTS), una especificaci�n del lenguaje com�n (CLS) y un sistema de ejecuci�n virtual conocido como VES o CLR.
Con ello lo que se quiere conseguir es adaptar a este CLI multitud de lenguajes, como por ejemplo C++ a managed C++, Java a J#, VisualBasic a VB.net, as� como un gran n�mero de lenguajes, adoptando un mismo tipo de datos (CTS) y un mismo modelo de ejecuci�n (CLR). Para ello han de seguirse las especificaciones que vienen reflejadas en ECMA.
Una de las caracter�sticas del c�digo en .NET es que es administrado, no es necesario que el programador se preocupe de la memoria asignada ni de liberarla, eso ya es propio del recolector de basura (GC). Otra de las caracter�sticas es que a�n as� puede operar con c�digo unsafe (inseguro) y poder hacer asignaci�n de memoria y liberaci�n a trav�s de la interfaz Dispose al igual que operar con c�digo heredado (legacy) bien mediante llamadas PInvoke a otras tecnolog�as, de igual forma a como lo hace .NET para comunicarse con el modelo COM.
Tanto de COM como DCOM, �nicamente mencionar que el modelo .NET viene a solucionar algunas de las carencias que traia, tanto en complejidad como que ahora va a contar adem�s de un modelo distribuido con un modelo multilenguaje.
En el caso de CORBA, ambas tecnolog�as son dos marcos de trabajo tanto multiplataforma como multilenguaje. En cuanto a .NET abarca un amplio abanico de aspectos no tratados en CORBA, como puede ser ASP.NET y Winforms. En cuanto a la parte de remoting ambas son muy parecidas, los objetos son solicitados y bien se encarga de toda la localizaci�n el ORB mediante unos mecanismos que no hace falta mencionar al igual que a trav�s de sumideros, intermediarios (proxies) y canales como lo hace la parte de remoting anteriormente explicada. Ambas son muy similares al ser est�ndares abiertos (OMB y ECMA) aunque en cierta parte lo que es .NET no cuenta con un modelo multiplataforma puesto que unicamente est� presente en la plataforma tipo windows, en ese caso podr�amos decir que Mono si es multiplataforma al poder ser usado tanto en sistemas *NIX (GNU/Linux, OpenBSD, FreeBSD..) como en sistemas windows, s�lo recordar que todo el toolkit de GTK# est� integrada con la plataforma windows.
Despu�s de introducir el concepto de componentes al igual que algunos modelos (CCM, EJB, ..) veremos que tenemos el concepto de contexto en .NET que es el mismo, al igual que se hace plantear la necesidad de AOP (Programaci�n Orientada a Aspectos) a�n no implementada, por ello ya en .GNU se est� pensando si introducirlo a C# o programar un nuevo lenguaje con sus a�adidos conocido como CAT o C@.
Con la necesidad de la conexi�n a bases de datos surge una implementaci�n en .NET conocida como ADO.NET que pretende la comunicaci�n con bases de datos a un alto nivel de abstracci�n. Va a permitir la manipulaci�n de bases de datos, agregando, insertando, borrando o modificando registros viniendo a ser muy familiar con lo que era libgda que es la librer�a de conexi�n a base de datos conocida en GNOME como gnome-db �nicamente que con todas las ventajas de .NET al ser un modelo multilenguaje totalmente distribuido.
Para ello, los de mono est�n implementando ADO.NET a partir de muchas de las caracter�sticas de libgda portando esta biblioteca a C#, consiguiendo la manipulaci�n de bases de datos como ORACLE, PostgreSQL, MySQL, SQLLite entre otras, al igual como OLEDB entre otros proveedores. Esto permite la conectividad a las bases de datos de una forma sencilla utilizando una clase para la conexi�n pertinente en la que se le pasa el proveedor, usuario, contrase�a y la ubicaci�n de la base de datos con la que queremos conectar. Conforme vayan apareciendo nuevos proveedores se ir�n implementando nuevas clases en libgda y aumentar� el n�mero de tipos diferentes de bases de datos a las que podremos conectarnos.
Unicamente comentar que al igual que la lectura y manipulaci�n de una base de datos tendremos otras caracter�sticas como la creaci�n y ejecuci�n de procedimientos almacenados, al igual que la manipulaci�n de bases de datos desconectadas conocidas como DataSets.
La idea detr�s de ASP.NET es la misma que exist�a con ASP (Active Server Pages): hacer sencilla la programaci�n dentro del servidor web. En las p�ginas ASP, muy similares en idea a PHP, se pod�a incorporar junto al HTML, c�digo de acceso a BD, de acceso a librer�as para control de sesiones web y otras funcionalidades muy �tiles a la hora de desarrollar aplicaciones web.
La principal referencia de ASP.NET la tenemos en http://www.asp.net/, un portal de Microsoft donde se nos describe la tecnolog�a y sus ventajas. Junto con los motivos para utilizar ASP.NET, tenemos m�s de 900 ejemplos que nos pueden ayudar a conocer el entorno de forma r�pida, junto con tutoriales m�s detallados para conocer con detalle ciertos aspectos de la plataforma.
La cantidad de art�culos, libros y portales dedicados a ASP.NET es bastante importante lo que muestra que ya es una tecnolog�a que poco a poco se va implantando. Al ser XSP una implementaci�n de ASP.NET, podemos reaprovechar todos estos recursos en nuestra plataforma Mono. El trabajar codo con codo con la plataforma de Microsoft tiene sus ventajas ;-)
Pero, respondamos a la pregunta de esta secci�n: ASP.NET es una plataforma que se integra con IIS (en nuestro caso ser� por ejemplo con Apache) y que permite que se accedan a p�ginas con extensi�n "aspx" las cuales pueden tener junto al HTML, c�digo en diferentes lenguajes de programaci�n, aunque s�lo se debe de utilizar uno por p�gina.
Para el lector familizarizado con PHP, Zope o J2EE, la idea es la misma: facilitar el desarrollo de aplicaciones con interfaz web. Para ello es com�n montar una infraestructura de librer�as y servidores detr�s del servidor web. El servidor web recibe la petici�n y si es de una p�gina activa, terminada en ".aspx", le pasa la petici�n a la arquitectura ASP.NET.
En el caso de XSP y Mono, cuando Apache vea que se pide una p�gina ".aspx", le pasar� la petici�n al m�dulo XSP el cual con la ayuda de Mono, servir� la petici�n, entregar� los resultados a Apache y este se los entregar� al cliente.
S�lo cabe destacar de XSP como plataforma totalmente libre desarrollada por mono, una arquitectura para el desarrollo de aplicaciones web destacada por los controles (elementos de interfaz de usuario y de validaci�n) y los formularios web, adem�s de poder utilizar c�digo en otros lenguajes de la plataforma .NET al ser totalmente una arquitectura multilenguaje que nos permite tanto hacer nuestras p�ginas web en C#, J#, VB.NET, managed C y otros muchos lenguajes adaptados a la arquitectura .NET y los que en un futuro se adapten a las especificaciones de la CLS.
Otro proyecto de los de mono-hispano es la de implementar un ORB siguiendo el estandar de la OMG para mono totalmente escrito en C#. Por el momento se est� trabajando en un compilador IDL y en la parte de IIOP que es la parte de la comunicaci�n entre objetos a trav�s de la implementaci�n existente de remoting en mono. Debido de ello, se necesita la parte de Remoting por canales TCP, trabajo que actualmente tambi�n se est� desarrollando y esperamos que pronto sea realidad, al igual que lo que a largo plazo llegar� a ser un ORB para mono.
Al igual que mono, tenemos otra arquitectura que est� desarrollando su propio repertorio de clases, al igual que su propio compilador a CIL como su propio int�rprete de CIL. A�n no se dispone de un JIT como en la plataforma mono o .NET, por lo que el encargado de interpretar el c�digo en CIL lo hace un interprete como puede serlo mint en mono.
La idea del proyecto es muy parecida a la de mono, intentan implementar la arquitectura .NET pero de manera que sea dentro del software libre. Utilizan la licencia GPL para su BCL como para el compilador y el int�rprete y tambi�n en un futuro quieren intentar solventar algunas carencias que tiene C# como puede ser la herencia m�ltiple, privada, la AOP (programaci�n orientadas a aspectos) y otros temas de inter�s haciendo otro lenguaje a�adido de C# que ser� conocido como C@ (pronunciado CAT) si finalmente se desarrolla.
Para la parte de programaci�n gr�fica tenemos dos toolkits maravillosos que est�n siendo totalmente adaptados a mono, conocidas como GTK# y QTc#, al igual que WindowForms. As� que con el tiempo muchas aplicaciones tanto para GNOME como KDE, como las utilizadas por estos toolkits podr�n ir siendo portadas a lo que es Mono. Quien sabe, quiz�s alg�n d�a tengamos totalmente nuestro escritorio para mono y pasemos a utilizar GNOME#, el tiempo lo dir� todo.
Otros servicios que tiene mono, es XML, tratamiento de hilos, reflection, tratamiento de cifrado con un amplio repertorio de algoritmos criptogr�ficos (RSA, SHA, DES, AES, MD5..) al igual que muchos otros que ireis conociendo conforme vayais conociendo esta fant�stica arquitectura.