Qué es Mono y por qué puede ser peligroso

Mono es el nombre de un proyecto de código abierto iniciado por Ximian y actualmente impulsado por Novell (tras la adquisición de Ximian) para crear un grupo de herramientas libres, basadas en GNU/Linux y compatibles con .NET según lo especificado por el ECMA.¿Por qué es odiada por muchos usuarios de GNU/Linux?

¿Qué es Mono?

No, no tiene nada que ver con el Monkey Island. Mono es la implementación libre del CLI (Common Language Infraestructure) y C# (ambos creados por Microsoft), de acuerdo a las especificaciones enviadas a la ECMA para su estandarización. Esta implementación es de codigo fuente abierto (Open source).

Mono incluye el CLI, el cual contiene la máquina virtual que se encarga de cargar las clases, el compilador jit (Just-in-time) y el garbage collector; todo esto escrito desde cero de acuerdo a las especificaciones Ecma-334.

Mono también incluye un compilador de C#, el cual paradojicamente esta escrito en C# y al igual que el CLI, este compilador sigue las especificaciones Ecma-335.

Adicionalmente Mono cuenta con un catalogo de librerías compatibles con las librerías del .Net Framework, pero además cuenta con una serie de librerías no existentes en el .Net Framework de Microsoft; como el GTK# que permite crear interfaces gráficas nativas del toolkit GTK+, Mono.LDAP, Mono.Posix, etc.

Origen de Mono

Mono fue concebido por Miguel De Icaza, siendo el proyecto en aquel entonces patrocinado por su compañía Ximian; actualmente Novell es quien patrocina el proyecto Mono, ya que Novell adquirió a Ximian.

La motivación de crear Mono se debe a la búsqueda de herramientas que ayudaran a la creación rápida de aplicaciones en el entorno Linux.

Plataformas soportadas por Mono

Actualmente Mono se puede ejecutar en plataformas x86, PPC, SPARC y S390 en 32 bits; y x86-64 y SPARC en 64 bits; siendo posible crear y ejecutar aplicaciones en los sistemas operativos: Linux, Windows, OSX, BSD y Solaris.

¿Es mono compatible con el .Net Framework?

Uno de los objetivos de Mono es alcanzar un alto grado de compatibilidad con el API 1.1, aunque ya hay bastante trabajo de compatibilidad con el API 2.0 del .Net Framework.

Con esto se busca que un binario compilado en Windows con el .Net Framework pueda ejecutarse en alguna de las plataformas de Mono sin tener que recompilar el binario, y que a su vez pueda hacer uso de las librerías compatibles de Mono -Ej: System.Data, System.Xml, etc -.

Las librerías proporcionadas por Mono son 100% compatibles con su contraparte del .Net Framework. La última versión 2.6.1. incluye entre otras importantes funcionalidades:

  • El CLI
  • El compilador de C#
  • ADO.NET
  • ASP.NET
  • WebServices
  • System
  • WindowsForms

Siendo esta ultima – WindowsForms – la que requiere de mayor trabajo para ser completada en su totalidad. Aunque cabe destacar que el proyecto no contempla la creación de librerías compatibles para Enterprise Services.

¿Que tipo de aplicaciones puedo crear actualmente con Mono?

Bueno es posible crear aplicaciones de tipo Web y Webservices con el uso de modulo mod_mono que permite al servidor de Web Apache servir paginas de ASP.NET (aspx) y Servicios Web (asmx).

Es también posible crear aplicaciones que acceden a base de datos como Microsoft SQL, Oracle, Postgresql, etc.

Por el lado de aplicaciones de interfase gráfica, la sugerencia es utilizar GTK#, ya que el toolkit en el que este esta basado (GTK+), permite ejecutar aplicaciones gráficas en ambientes Linux, Windows y OSX sin cambios; esta sugerencia toma importancia, debido a que la implementación compatible con Windows Forms en Mono aun no esta completa.

¿Hay algún requerimiento para que mi aplicación sea compatible con Mono y el .Net Framework, es decir portable?

Realmente no hay ninguno en especifico, siempre y cuando sea una aplicación basada en el CLI; aunque si hay algunos puntos que se deben de tener en consideración:

  1. Linux distingue entre mayúsculas y minúsculas en los nombres de archivos y directorios; así es que necesario tener una consistencia con los nombres que utilicemos.
  2. El separador de rutas es diferente en Windows () que en Linux (/), por lo tanto se recomienda usar el API Path.DirectoryPathSeparator, para obtener en separador correcto al ejecutar la aplicación.
  3. Si se utilizan librerías no CLI (Ej: librería en C, C++ etc.), mediante p/Invoke, asegurarse que la librería existe en los diferentes ambientes donde se va a ejecutar la aplicación.
  4. No hacer uso de tecnologías que solo existan en un ambiente en particular (Ej: Registry en Windows o GConf en Linux -Gnome-); o bien proveer alguna solución que permita a la aplicación operar de forma correcta en el ambiente donde se ejecuta.
  5. Aplicaciones basadas en Windows Forms y que sean muy complejas pueden no funcionar de momento, debido a que Windows Forms en Mono no esta completo.

¿Qué herramientas de desarrollo existen en Mono?

Bueno es posible desde Windows desarrollar una aplicación utilizando el Visual Studio. En el lado de Linux existe MonoDevelop, un IDE basado en SharpDevelop.

MonoDevelop permite el manejo de proyectos, y colorear sintaxis, auto completar código, compilar y ejecutar la aplicación desde la misma IDE.
Mediante agregados (add-ins) se le ha ido extendiendo la funcionalidad para por ejemplo:

  • Conectarse a bases de datos desde el IDE
  • La inclusión de un debugger que permita al igual que el Visual Studio, ejecutar código linea por linea, y revisar valores de variables.

Hay trabajo actualmente para integrar un diseñador de formas, aunque este diseñador esta enfocado a crear formas para GTK# y no Windows Forms.

Aplicaciones hechas para Mono.

Hay una buena cantidad de aplicaciones desarrolladas para Linux en Mono, para darse una idea, aquí hay 2 listados con estas aplicaciones:

De estas aplicaciones de las destacadas son:

  • MonoDevelop: Es una IDE para programar en Linux programas para Mono. La IDE esta hecha en C#.
  • F-Spot: Programa para catalogar fotografías, además de poder hacer algunas modificaciones digitales a las fotos.
  • Beagle: Herramienta que indexa y busca información entre una serie diferentes tipos de documentos en Linux.
  • Tomboy: Programa para almacenar notas que se ligan mediante palabras claves.
  • Muine: Es un reproductor de audio basado en GStreamer.
  • PyMusique: Programa que provee de una interfase gráfica para acceder a comprar música con el servicio iTunes de Apple.
  • MonoUML: Es un editor para realizar diagramas con el estandar UML.
  • Gnome Do: Rápido y eficaz lanzador de aplicaciones.
  • Docky: Dock para tu escritorio.
  • Banshee: Reproductor multimedia basado en Gstreamer.

Mono y las licencias

Mono es la implementación de código fuente abierto del .Net Framework de Microsoft, basado en los estándares liberados a la ECMA; por ser una implementación basada en un producto de Microsoft, ha causado controversia el uso de Mono en Linux -entre los usuarios y desarrolladores de Linux -, el argumento es que Mono pueda infringir patentes de Microsoft, lo cual puede convertirse una demanda en contra de Mono.

De acuerdo con la pagina del proyecto Mono, mientras el CLI y el compilador de C# se apegue a los estándares aceptados por la ECMA, estas 2 piezas están seguras, con relación a las librerías especificas de Mono, estas no corren ningún riesgo; pero la implementación de las librerías relacionadas con ASP.NET, ADO.NET y Windows Forms son sensibles a infringir a alguna patente de Microsoft – aunque de momento no se tiene conocimiento de que así sea -; por tal motivo el proyecto Mono sugiere 3 opciones para este ultimo caso:

  • Reimplementar la funcionalidad – para evitar la patente -, tratando de mantener el API compatible.
  • Eliminar cosas que no puedan ser reimplementadas.
  • Buscar elementos que puedan nulificar la patente.

Según la Wikipedia, la implementación de Mono de esos componentes de .NET no sometidos a ECMA para su estandarización ha levantado algunas preocupaciones por la posible violación de patentes de software durante la vida del proyecto. En particular, la discusión se desarrolló por si Microsoft podría o no destruir al proyecto mono mediante demandas sobre las patentes violadas.

En la actualidad existe un vivo debate sobre la (in)conveniencia de aceptar y usar Mono en la comunidad de desarrolladores de GNU/Linux. El principal argumento en contra de Mono es que no está libre de patentes de software, y existe el riesgo de que Microsoft exija licencias para usar C# / CLI.

Por otra parte, el proyecto Gnome está desarrollando un lenguaje alternativo, Vala, creado específicamente para desarrollar aplicaciones para Gnome, pero libre de las potenciales amenazas de Microsoft.

Mi recomendación

Actualmente existen algunos programas realmente excelentes escritos en Mono. Sólo cabe pensar en F-Spot, Gnome Do o Docky. Pero, habiendo alternativas libres que no tienen todos estos problemas, yo prefiero no depender de Mono.
Sobre la reciente polémica decisión de Debian y Ubuntu de incluir a Mono en su instalación por defecto, a diferencia de Fedora que lo eliminó, sólo por incluir la popular aplicación Tomboy, escrita en C#, Richard Stallman tiene unas palabras de sabiduría que deberían inspirar a otras distribuciones.

Es peligroso depender en C#, así que debemos desalentar su uso.
El problema no es único de Mono, cualquier implementación libre de C# tendría el mismo problema. El peligro es que Microsoft probablemente está planeando forzar a todas las implementaciones libres de C# a quedarse al margen algún día usando (sus) patentes de software. Este es un peligro serio y solo los tontos lo ignorarían hasta el día en que realmente suceda. Necesitamos tomar precauciones para protegernos a nosotros mismos.
Debemos arreglar las cosas para depender en las implementaciones libres de C# tan poco como sea posible. En otras palabras, debemos desalentar a la gente de escribir programas en C#. Por lo tanto no debemos incluir implementaciones de C# en la instalación por defecto de las distribuciones de GNU/Linux, y debemos distribuir y recomendar aplicaciones no-C# en lugar de aplicaciones C# comparables cada vez que sea posible.

Desinstalar Mono

Quiero quitar mono de mi distribución Ubuntu (y así, ahorrar un montón de espacio que ocupan sus dependencias y que, en el caso de Ubuntu, están ahí nada más que para «dar soporte» a 2 aplicaciones instaladas por defecto: F-Spot y Tomboy). Si no utilizás ninguna de estas dos, desinstalalas desde Synaptic así como todos los paquetes que digan Mono o CLI.

Para desinstalar Mono en Ubuntu, también podés abrir el terminal y escribir:

sudo apt-get remove --purge mono-common libmono0 libgdiplus
sudo rm -rf /usr/lib/mono

Alternativas a Mono

Como vimos, en primer lugar, si sos programador, no programes en C#. Existen infinidad de otros lenguajes, incluso mejores. Además, Gnome recientemente lanzó un nuevo lenguaje con funcionalidades muy parecidas a Mono llamado Vala.
Acabo de borrar Mono y, con él, se borraron algunos de mis programas favoritos…qué programas alternativos existen para reemplazarlos:

Mas información

Para obtener mayor información del proyecto Mono, visitá el sitio web oficial en inglés, además de los monologue que es un agregador de los blogs de los desarrolladores de Mono; o bien en español en el sitio Mono Hispano, además de los blogs de la gente que mantiene este sitio.
No te olvides de dejar tus comentarios respecto de Mono… =)


Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

      Ariel dijo

    No creo que en un futuro Microsoft emplee sus patentes en contra de Mono, Monodevelop, Xamarine. Es mas, creo q estas herramientas le van a facilitar de alguna manera expandirse hacia otras plataformas que dia a dia estan reclamando su lugar de privilegio en el mundo del desarrollo de software en general. Creo que Mono esta haciendo un trabajo estupendo en portar C# y las tecnologias .NET a otras plataformas, lo cual hace que las mismas se enriquezcan de nuevas oportunidades tecnologicas en lo q a soft se refiere. Mono sabe lo que significan las patentes y seguramente este tomando todos los recaudos para no caer en infracciones. Por otro lado JAVA esta tomando su posicion de liderazgo con su plataforma JAVA EE6 que para mi gusto va mas alla que las capacidades que ofrece actualmente Visual Studio. Es por esta razon mas que nada que creo que a Microsoft le resultara conveniente la portabilidad de su C# a Linux, MacOSX, BSD, Solaris, Android, etc… Por otra parte, no estoy de acuerdo en tomar estas posturas un tanto fanaticas de decir NO a Microsoft en Linux o decir No a Linux en Microsoft, creo que la verdadera evolucion esta en la variedad y negarse a la veriedad es involucion.

      Usemos Linux dijo

    Al día de la fecha no ha cambiado nada. Si lo que te interesa es poder correr tus programas en diferentes sistemas, te recomiendo Java o python. Si te sentís cómodo con la sintaxis de c#, vala también es una buena alternativa.
    Abrazo! Pablo.

      pablo dijo

    Hola.

    No hace mucho decidí migrar de lenguaje y elegí C#, para poder usar el código y compilarlo para su uso en plataformas tanto Linux cómo en Windows.

    Ahora, viendo éste post me pregunto si hice bien (lo digo por el escrito de Richard Stallman).

    ¿Me podrías decir si al día de la fecha ha cambiado en algo esta situación?

    (ya se que éste post tiene al menos 2 años)

      Sergio dijo

    Como comentó el tocayo, no creo que a Microsoft le convenga limitar sus capacidades de expansión, es más, no vive de eso. Los veo incluso capaces de liberalizar el lenguaje, ya que hacen dinero de las implementaciónes, frameworks e IDEs.

    Empiezo a pensar que el señor Stallman hoy día está un poco mayor para estas cosas. Me ha divertido leer su cita y pensar, que mientras la comunidad tenía los ojos fijos en C#, Oracle puso su primera demanda contra Android, que aunque el primo pobre, no se debe olvidar que es Linux, por violación de patente por el uso de… JAVA!

    Mi opinión es que la comunidad Linux no se puede permitir, simplemente por orgullo, el cerrar sus ojos a alternativas y sus puertas a una gran cantidad de desarrolladores de calidad, esgrimiendo el lema de «adaptaros o daros media vuelta». En el aislamiento está la muerte, aunque sea lenta.

    No olvidemos que un lenguaje de programación es un concepto muy distinto al de una aplicación, es un bien universal. ¿Quién será capaz de censurar el Inglés argumentando que sea el idioma del capitalismo?

         Javier L dijo

      Hablan de MS como si no conocieran sus movimientos a nivel de mercadeo, o ya olvidaron el incidente del 99 cuando MS modifico parte de la plataforma JAVA para que el software escrito en su suite propia no funcionara en otro explorador que no fuera IE6, cuando el mundo se dio cuenta, llovieron demandas por todos lados, pero lo mas importante, mucho del software escrito debio ser reimplementado. MS es una empresa que quiere lucrarse por todos los medios. Al que esta en software libre no le conviene utilizar herramientas propietarias si hay tantas herramientas libres disponibles.

         jlboch dijo

      Sergio eres ingenuo al olvidar que los gringos no hacen nada absolutamente nada ni obras de caridad si antes no se aseguran que les va producir millones de dólares anque sea posteriormente a su acto,
      los gringos lo que mas aman en este mundo es a la drogas y a los dólares ( en ese orden)
      por eso han dominado el mundo y los mercados con su capitalismo : usando la ley del garrote y la ley de los dólares, el verdadero DIOS de los gringos son los dólares , aunque los hipócritas se rompan el pecho en los templos protestantes o en las iglesias catolicas

           Max AC. dijo

        Los Anti-Microsoft siempre abundarán por las supuestas prácticas monopólicas, y aunque es verdad que durante los años a demostrado Microsoft comportamientos no muy agradables para el usuario final no olvidemos que es una empresa de negocios y lo que siempre harán con sus productos son negocios. Pero el mundo ha cambiado, se ha globalizado, y Microsoft se negó en su momento a aceptarlo pero no le quedo de otra, la integración del standard Open-XML en el MSOffice lo demuestra, se ha visto incluso forzado de «compartir» código de su plataforma forzado por las reglas antimonopolio y lo tuvo que hacer, el Net Framework y sus lenguajes están registrados en el ECMA organismo Europeo cuyo objetivo es estandarizar las Tecnologías de la Información, para el C# le corresponde el ECMA-334, para el CLI (el cual implementa Mono) ECMA-335 y el C++/CLI es el ECMA-372, con esto se asegura que dichos lenguajes y plataformas quedan a disposición del público en general, por lo que Microsoft no obligará a nada en el futuro con respecto a esos lenguajes. El intento de los Anti-Microsoft por desalentar el uso del lenguaje C# es absurdo, es un juego tan sucio como los que denuncian por parte de Microsoft, la especificación del lenguaje esta abierta, existen otros lenguajes y en este mundo lo mejor es la competencia eso provoca mejoras en todos los ámbitos, el programador por su cuenta deberá descubrir los diferentes lenguajes y tecnologías y conocer sus características y el será el que decida por si mismo con cual se queda para llevar a cabo sus desarrollos.

      Usemos Linux dijo

    Buen aporte. Gracias!

      Adrian dijo

    Este Stalmann!! Vé conspiradores de Microsoft hasta debajo de su cama XD.

      sergio dijo

    Si tenemos en cuenta que Microsoft lo que pretende con .net es ganarle terreno a java creo que le viene demasiado bien que haya implementaciones en linux como para truncar sus posibilidades.

    mi opinión es que si a microsoft no le hubiese interesado esto no habría ayudado a crear esos estándares y habría protegido sus librerías .net para evitar (o al menos dificultar) su decompilado. Y no que vamos ya por la versión 4.0 si no me equivoco y todas sus librerías se decompilan sin problemas y siguen sin estar ofuscadas, con lo que mejoraría el rendimiento la arquitectura.

    También es cierto que Microsoft siempre ha cobrado hasta por la aplicación más tonta y ahora tiene en su repertorio, por ejemplo, versiones de visual studio para .net gratuítas completamente funcionales y sin restricciones por parte de la licencia y no es lo único (Truespace por ejemplo también se ha pasado a la acera de lo gratuito).

    Esta es una batalla entre Java y .Net y, como en todas las guerras, cualquier aliado es bienvenido.

    Y lo cierto es, nos guste o no, que vivimos en un mundo plagado de licencias… de hecho en algunos portales se destacan las patentes «infringidas» en una simple página Web y son cosas tan comunes que ni siquiera nos planteamos que pueda estar patentado algo tan sumamente simple. Las patentes están ahí y, si alguien quiere tirarte abajo un proyecto, es bastante posible que acabe encontrando alguna patente que se está infringiendo.

    Por si acaso no ha quedado claro no pretendo iniciar aquí un conflicto que persigue saber si es mejor Windows o Linux, son simplemente diferentes y cada uno tiene sus ventajas y sus inconvenientes, como todo. Pero eso ya es otra historia.

    Un saludo.

      e2fletcher dijo

    Con microsoft nunca se sabe.

      ken torrealba dijo

    Saludos,

    Hace algún tiempo, seguí un tutorial, capitulo 1, sobre Mono, y me pareció super fácil y mas natural que Java, me gusto eso último. Lamentablemente no pude conseguir los numero siguiente de la revista.

    Según tengo entendido C# es la evolución de J++
    Esa problemática implementación de Java que Microsoft que le costó una demanda por parte de Sun, el cual ganó Sun, ya que Microsoft tenia librerias (package) que solo podía ser ejecutados en Windows, lo cual era lo contrario al lema de Java «escribes una ves, ejecutas siempre y donde sea».

    Microsoft desecho J++ y diseño C#

    Ahora, los hechos son lo siguiente: Microsoft «dono» cierta parte de C# para que Mono fuese legal, así esas secciones no sufrirían futuras demandas, pero lo que Microsoft no ha donado si tiene muchas posibilidades que Microsoft demanda a quien lo use, este es así, porque ya antes ha pasado, con otros software, pero esto ocurriría si Mono comienza a robarle clientes, o si alguna compañía comienza a hacer dinero (mucho) con el soporte e implementación del lenguaje o se lo quiere atribuir como propio, mientras tanto solo lo verán evolucionar.

    Por ultimo cabe destacar que Miguel de Izcasa, tiene frustraciones por no poder trabajar para Microsoft, debido a su pasaporte…, esto lo hizo crear software compatible con Windows desde Linux, para que los de dieran cuenta «de lo que se perdieron»

      kuk dijo

    No me gusta esto 🙁

      Los desarrolladores dijo

    Creo que una de las razones de utilizar GNU/Linux es porque es de código abierto y si se comienza a utilizar software creado por Microsoft nos veríamos involucrados en una contradicción, además para que necesitas software de Microsoft cuando existe una gran comunidad en el mundo de código abierto para apoyarse unos con otros (el origen del código abierto) y así mejorar cualquier aplicación de código no abierto, no lo creen?

    Recordemos que inicialmente .NET no era libre y si lo liberó (la parte que liberó) fue debido a que los desarrolladores no la utilizaban por su limitada aplicación y con eso Microsoft estaba perdiendo presencia entre todos los desarrolladores.

    Si lo que queremos es que nuestras aplicaciones funcionen en diferentes plataformas, por qué no usar Java o Python. Las nuevas aplicaciones creadas por Xamarin para desarrollar para ios o android, solo es una forma de #monopolizar» bajo un lenguaje el desarrollo, pues como todo sabemos, siempre es mejor utilizar el lenguaje nativo.

    Respecto a Richard Stallman creo que es la persona con más experiencia sobre código abierto y debido a eso por lo menos debemos deternos a analizar un poco las problemáticas que ha enfrentado, ya que conocer la historia sirve para no cometer los mismos errores.

    Como toda persona, los desarrolladores tenemos pagar cuentas (comida, salud, etc), y por ende necesitamos obtener un beneficio económico por nuestro trabajo, pero tenemos diferentes formas de obtenerlo (por suerte), como donaciones, consultorías, desarrollos basados en código abierto, etc. Hay que hacer uso de nuestras habilidades e ingenio, pues este nuevo mundo «gira» de la forma que lo hace gracias cada uno de los desarrolladores que existen y hacen que todo funcione como debe funcionar. Desde mi punto de vista somos los cimientos de la nueva tecnología y la nueva sociedad y no las empresas.

    No lo creen???

      Adrián Fernández dijo

    No creo que M$ haga nada con respecto a catigar a quien viole las patentes de C#. No lo hizo antes, no lo hace hoy, entonces dificilmente lo haga en el corto plazo. Por otra parte, Stallman es conocido por su persistente paranoia contra lo que no es soft libre (hasta está disconforme con el núcleo de Linux), imaginándose desde hace 20 años, un mundo de desarrolladores perseguidos por M$.
    En fin. Monodevelop es una excelente herramienta para trabajar. Y si alguno tiene miedo de usar C# por lo ya visto, aún queda el Basic, que actualmente, es tan capaz como C# en la mayoría de los desarrollos.

      Daniel Noriega dijo

    Pues yo también estoy de acuerdo con algunos comentarios, soy Ing Electrónico pero ando siempre al tanto de las noticias de programación y siempre tratando de profundizar en aprender de lleno algún lenguaje. Lo que se me ha hecho realmente difícil es tratar de elegir que lenguaje aprender, manejo el c++ pero desconozco las APIs así que es casi que nada, por eso trato de ver en cual API enfocarme. Pero lo que quiero si o sí es la posibilidad de desarrollar código multiplataforma, y obviamente lo primero que destaca es JDK o .Net.

    Luego veo este post y sinceramente veo que hay demasiada paranoia. No creo que Microsoft vaya a demandar a mono, creo que al contrario, Microsoft obtiene ventaja para que su lenguaje gane terreno entre los programadores al convertirse en un luenguaje extensible a otras plataformas. Yo soy usuario Linux pero también soy usuario Windows y me encanta Linux, pero si hay una única cosa que no soporto de Linux es que buena parte de la comunidad sean orgullosos y obtusos y vivan peleando todos los días por boberías, insultando y menospreciando a quienes saben menos.

      Jose Manuel Alcaraz dijo

    Desde luego no te dediques a la adivinación… lo has clavado… .net es ahora open source… xD

      Alexis dijo

    ehhh como lo he dicho muchas veces… me cago en Richard Stallman… el expresa su opinión y los fanboys saltan como si su palabra fuera mandamiento sagrado… si bien MS puede hacer uso de sus patentes en el futuro, no es menos cierto que (por lo menos donde yo vivo) las plataformas predominantes a nivel empresarial son .NET y Java… por lo que aprender a manejar Mono terminaría por beneficiar una posible carrera de desarrollador; no es muy sano para el mundillo Linux el aplastar cualquier alternativa que difiera de los «ideales» del señor Stallman, personalmente uso Mono para experimentación y aprendizaje ( ya que ni amarrado instalo windows en mi pc, pero no puedo imponer eso en mi puesto de trabajo) y no me siento un pecador jajajaja saludos.

      JOU dijo

    A mi en realidad no me importa si C# es un peligro o si otro lenguaje es abierto O etc, mientras que se adapte a cualquier sistema operativo y sea rentable y me produzca dinero esta muy bien, actualmente soy programador en gambas Linux que usa el lenguaje Basic parecido al Visual Basic de Windows y si yo veo que me facilita la programación fácil, profesional y se expande a muchas plataformas bienvenido sera.

      Terrorín dijo

    Señores: desde que Microsoft ya compró Xamarin en este año 2016, Mono tiene mucho camino por delante. Dejense de fanatismos baratos y ponganse a trabajar en otras opciones de programación. .NET ya es portable oficialmente en plataformas no Windows desde el 2014 (con la creación de DotNet Foundation) y la implementación de .NET en ambientes no Windows ha ido creciendo poco a poco. Ya no solo se piensa en esas cosas de Internet Information Services o los servidores de Windows como antes, sino que hay que pensar en Apache Web Server/Nginx con .NET. En mi caso: he diseñado aplicaciones de ASP.NET MVC 4/5 en IIS y luego en Apache Web Server de Linux Ubuntu desde hace un año, y hasta ahora, no he tenido problemas con la ejecución de una aplicacion ASP.NET MVC en dos plataformas web distintas.

    Acá les dejo mi aportación, por si les interesa migrar aplicaciones ASP.NET MVC a Apache/Ubuntu:

    Parte 1:
    https://radioterrormexico.wordpress.com/2016/06/22/ejecutar-aplicaciones-asp-net-en-plataformas-no-windows-parte-13/

    Parte 2:
    https://radioterrormexico.wordpress.com/2016/06/23/ejecutar-aplicaciones-asp-net-linux-ubuntu-server-parte-23/

    Github de ejemplo:
    https://github.com/boraolim/MonoServe-2016

      Hector dijo

    Este debate tiene un fuerte tufillo político… jajajaaaa XD

      German A. COPERTINO dijo

    Con Java pasaría lo mismo, si a Oracle se le place hace que java sea de PAGO y de su propiedad y sonamos todos. Es muy subjetivo. Y no creo que una empresa ni linux mismo aliente este tipo de desarrollos si a futuro va a ser problematico para los usuarios.-

      Elvino Falta dijo

    Bueno en los tiempos de la globalizacion y desglobalizacion, es bueno recordar ciertas maniobras monopolicas de algunos
    o conductas para manipular, no por nada Novel adquiere Ximian, sino lean
    lo que ocurrio con Mysql/Sun Microsystm y despues Oracle chupandose a Sun y con ello a Mysql con el fin de hacer desaparecer
    tardo un poco Monty(creador de Mysql) en darse cuenta pero refloto su proyecto y dio luz a MariaDB y termino siendo un grano en el culo en Oracle
    pero con Mono puede ocurrir lo mismo.
    Soy programador Networking Multilenguaje Cobol, C, Java y Harbour, y en ese orden Bajo Aix, Linux y Windows
    hago Mix de aplicaciones por Socket, comunico aplicaciones entre diferentes lenguajes y distintas plataformas para un Banco

    Pienso Si el proyecto es grande es decir va incluir miles de lineas de codigo hay que ir por lo seguro para asegurar su crecimiento/modificacion y escalabilidad
    ahora si el codigo es poco, yo no tendria problemas en hacerlo bajo C#, si es bueno, potente y realmente resuelve los problemas para mi esta bien.
    Saludos

      smitty dijo

    .Net Core + C# = Future

      Jesu Arce dijo

    La nota iba bien hasta que apareció el «si eres programador, no uses C#»… en ese momento perdieron toda su credibildiad.

      Jafet Granados dijo

    En el 2020, ya se comprobó que no pasó nada de lo que se decía en este post. Microsoft creó .NET Core y lo hizo libre. Ahora con 3 plataformas con librerías base muy parecidas pero al final distintas (ya que se crearon desde cero), el siguiente paso era unificar las tres en una sola, y es justamente lo que se esta haciendo con .NET 5 ( ya sin la palabra «Core» ni «Framework») que como bien se dijo, es una nueva plataforma, pero ahora de código abierto, multiplataforma, y que puede utilizarse para desarrollar aplicaciones web, de escritorio, apps móviles, IoT, AI, Cloud, entre otras. Esta evolución se ha dado gracias a la gran cantidad de desarrolladores que han aportado gracias a que .NET es ahora de código abierto. Esto tenía que pasar porque al haber mayor cantidad de empresas y desarrolladores utilizando .NET de manera abierta, Microsoft abría la posibilidad de vender sus servicios (principalmente en la Nube), los cuales tampoco se limitan a usar .NET ni C#. Microsoft no es tonto, el cerrar su software y empezar con demandas era lo peligroso para ellos. Pero bueno, yo no estoy casado ni con .NET ni con otro lenguaje. Pero veo muy interesante lo que se esta haciendo en dicha comunidad. Al tener el soporte de una empresa grande la comunidad libre puede crecer aún más rápido, sobre todo porque existe la .NET Foundation que es la encargada de revisar los proyectos de código abierto existentes en .NET, lo que garantiza que exista un orden, procesos depurados provenientes del propio Microsoft para la revisión del dichos proyectos.