Les projets un peu fou du logiciel libre, épisode 20 : l’épopée de Mono, l’implémentation libre de .Net

Nous sommes en 2002. À l’époque, Microsoft propose l’ensemble des outils .Net pour mettre en place une technologie multi-plateforme et faire la nique à Java. Bien qu’à l’origine uniquement développé pour ses OS, des développeurs du libre décident de créer un équivalent pour les distributions GNU/Linux, et Mono pointe le bout de son nez à la mi-2004.

Le projet souffre alors de critiques par rapport aux brevets logiciels de Microsoft sur .Net, mais cela n’empèche pas Novell et Xamarin de pousser à l’adoption du langage. Des outils sont créés à destination du grand public avec plus ou moins de succès.

De mémoire, il y a eu un indexeur et outils de recherches de fichiers, Beagle qui sera remplacé par Tracker. Le projet écrit en C# a vu sa dernière publication en janvier 2009… Un message dans une liste de publication confirma l’abandon un an plus tard.

Autre logiciel abandonné ? F-Spot, un outil de gestion de photo dont la dernière version date de 2010. Sans oublier le lecteur de musique Banshee dont le développement est en suspend depuis mars 2014…

On peut continuer la liste avec Gnome Do dont la dernière version date de novembre 2014… Son dérivé Docky semble être au point mort depuis 2015.

Un seul outil grand public semble survivre, c’est Tomboy, un outil de prise de notes… Du moins en apparence, sa dernière version date de juillet 2017. Une version dite Tomboy-NG est en cours de développement.

Il ne faudrait pas oublier Pinta, un outil de retouche photo à la Photofiltre, même si sa dernière version officielle date de mars 2015.

J’ai donc fait une vidéo pour montrer les quelques outils grand public développés en Mono et voir l’état des lieux en 2018.

Avec le rachat de Xamarin par Microsoft en 2016, on peut se dire que Mono a été tout sauf un succès, et on se demande bien pourquoi au final ! Mis à part Pinta, avec quel logiciel peut-on encore justifier l’existence de Mono ? Si vous avez des idées, je suis preneur !

16 réflexions sur « Les projets un peu fou du logiciel libre, épisode 20 : l’épopée de Mono, l’implémentation libre de .Net »

  1. Mono est toujours dans Débian , , mais d ‘ un autre coté Java à tellement changer depuis 1996 .. Mono est devenu une norme comme Javascript . il faut abandonner l ‘ idée que le libre est pour le grand public , il ne la jamais étez , hormis pour Android .

      1. Bonjour , c ‘est très bien de vouloir évangéliser   » le grand public  » , de crier sur tout les toits que le libre c ‘est génial  , je suis d ‘ accord , mais cela demande  de l ‘ apprentissage , de la discipline et une soif d ‘ apprendre . Le grand public n ‘ en  veux pas . La notion même de  » power user  »  à disparu . Seul s ‘ intéresse  à GNU /Linux , le pseudo rebelle lycéen joueur de djembé qui combotte avec la Marie Jeanne  .

        Le « grand public  » , ne veux pas apprendre . GNU /Linux s ‘ adresse aux geeks , c ‘est tout , il ne faut pas pleuré , c ‘est un fait .

    1. Attention à ne pas confondre le logiciel libre et open source. Même si les licences sont identiques (les licences utilisées par Mono sont à la fois open source et libres) les gens qui écrivent le code n’ont pas le même objectif. Un des principal objectif du logiciel libre est de permettre à l’utilisateur final d’avoir le contrôle des logiciels et de l’ordinateur qu’il utilise. Alors que le développeur open source n’y voit qu’un moyen pratique d’écrire du code de meilleure qualité, plus rapidement et d’attirer des contributeurs.

      Google et Microsoft écrivent du code open source et ne désirent pas que l’utilisateur final ait le contrôle des logiciels et du terminal qu’il utilise. Bien que le code du noyau Linux et d’Android soient open source, le noyau Linux fourni à l’utilisateur final est truffé de blobs binaires et le code source de la version modifiée d’Android, n’est pas disponible (la licence Apache 2 est une licence  permissive). L’utilisateur se retrouve donc sans aucun contrôle (au sens ou l’entend la FSF) sur son logiciel et son téléphone.

      Je pense qu’aujourd’hui la grosse majorité des développeurs écrivent du logiciel open source et ne se soucient guère du contrôle que l’utilisateur final pourra ou non avoir sur le logiciel qu’il utilise. Seules des organisations comme la FSF ou Debian écrivent encore du logiciel libre.

      L’avantage est que des logiciels écrits par des développeurs open source, comme Mono, peuvent-être être récupérés par des développeurs libres pour être intégrés dans Debian par exemple. En 2009 la FSF déconseillait de développer en C#, le danger étant que Microsoft puisse un jour brandir la menace des brevets logiciels sur les implémentations libres de C#. Cependant depuis 2016 Microsoft propose .Net Core sous licence MIT et Microsoft s’engage à ne pas faire valoir ses brevets sous certaines conditions (Microsoft Open Specification Promise), mais j’ignore si la position de la FSF sur C# a changé. Bien que le problème ne se pose peut-être plus, vu que C# n’est plus guère utilisé sous Linux.

      Même si C# n’est pas le langage le plus utilisé sous Linux, Mono reste tout de même un succès, puisqu’il est utilisé par le moteur de jeu Unity 3D, un des moteurs de jeu les plus utilisé à l’heure actuelle. Il existe certainement des milliers, voir des dizaines de milliers d’applications propriétaires sur l’App Store et Google Play utilisant Unity 3D et Mono. De plus disposer d’un langage supplémentaire sous Linux est une bonne chose, cela permet à certains développeurs Windows de porter leurs logiciels sous Linux, par exemple KeePass 2 (diffusé sous GPL v2) développé en C# est à la fois disponible sous Windows et Linux (et d’autres plateformes) alors que la première version écrite en C++ était disponible uniquement sous Windows. Il existe également OpenRA un remake open source Command & Conquer utilisant Mono sous Linux.

      Pour finir Fred, tu écris qu’en 2002 Microsoft propose l’ensemble des outils .Net pour mettre en place une technologie multi-plateforme et faire la nique à Java. Je ne crois pas qu’en 2002 .Net soit multi-plateforme, il faut attendre 2004 pour que Mono 1.0 fournisse un support multi-plateforme de .Net.

      1. Même si C# n’est pas le langage le plus utilisé sous Linux, Mono reste tout de même un succès, puisqu’il est utilisé par le moteur de jeu Unity 3D, un des moteurs de jeu les plus utilisé à l’heure actuelle. Il existe certainement des milliers, voir des dizaines de milliers d’applications propriétaires sur l’App Store et Google Play utilisant Unity 3D et Mono.

        Le coeur d’Unity3D est en C++, le scripting en C#.

        Il existe certainement des milliers, voir des dizaines de milliers d’applications propriétaires sur l’App Store et Google Play utilisant Unity 3D et Mono.

        Une liste à proposer, même ultra limitée ? 🙂

        Cependant depuis 2016 Microsoft propose .Net Core sous licence MIT et Microsoft s’engage à ne pas faire valoir ses brevets sous certaines conditions (Microsoft Open Specification Promise), mais j’ignore si la position de la FSF sur C# a changé. Bien que le problème ne se pose peut-être plus, vu que C# n’est plus guère utilisé sous Linux.

        Toujours la bonne vieille stratégie du Embrace, Extend, Extinguish de Microsoft en action…

        Pour finir Fred, tu écris qu’en 2002 Microsoft propose l’ensemble des outils .Net pour mettre en place une technologie multi-plateforme et faire la nique à Java. Je ne crois pas qu’en 2002 .Net soit multi-plateforme, il faut attendre 2004 pour que Mono 1.0 fournisse un support multi-plateforme de .Net.

        En 2002, pour MS, multiplateforme voulait dire plusieurs générations de Windows.

  2. Mono n’est clairement pas un échec … et justement le rachat de Xamarin prouve à quel point Mono faisait de l’ombre à .NET Core.

    Parce que bon .NET Core existe depuis déjà 2 ans, la 3ième version majeur est prévue pour l’année prochaine et je n’ai toujours pas croisé de projet intéressant qui l’utilise. On peut aussi analyser les dépôts de développement de Mono vs .NET Core (sur GitHub) et la comparaison est net, il y a près de trois fois moins d’activité sur le dépôt .NET Core que sur celui de Mono.

    On retrouve Mono assez facilement dans des applications commerciales, pas mal dans le monde du jeux vidéo, genre le moteur graphique Unity 3D embarque une vieille version de Mono depuis déjà plusieurs années pour permettre aux développeurs de développer des parties (ou même la totalité) de leurs jeux en C#. Et même on peut allez plus loin en regardant le moteur graphique opensource MonoGame, totalement écrit en Mono, que l’on peut retrouver dans des hits comme Stardew Valley, FEZ, TowerFall et aussi Bastion.

    Mono a encore de très beau jour devant lui 😉

      1. Il y a des langages plus adapté pour ce genre d’outils et aussi une question de mode.

        Le Java est dans le même bateau, on voit de moins en moins d’application desktop utilisant du Java, la mode aujourd’hui je pense que c’est plus du Electron / JavaScript, donc on va voir quelques petites pépites dans le genre de Etcher sur ces technos, jusqu’à la prochaine mode 😉

    1. je n’ai toujours pas croisé de projet intéressant qui l’utilise

      Tu cherche mal.

      Au hasard: extcore, avaloniaUI, avalonStudio, ect….

      .NET Core est de plus en plus utilisé depuis la version 2.0 et 2.1 puisque la plus part des API de .NET sont là.

      Mono ce distingue plus pour le mobile et les jeux. Si je devais faire une app windows ca serait sous .NET Core.

      Et si je voulais la faire multi-plateforme, j’utiliserais AvaloniaUI.

      Quant à ASP.NET Core, il n’y a aucun soucis entre win/lin/mac vu que j’en développe une.

      1. Tu cites des projets à orientation des développeurs, pas des utilisateurs finaux.

        Unity3D ? Un coeur en C++ avec du script possible en C#.

        J’ai cité des projets qui se destinait à une utilisation directe, du genre lecteur multimédia, gestion des photos, lanceur d’applications, et qui se sont tous planté face à la concurrence de logiciels de même type écrit dans des langages plus classiques.

        Ensuite, les modes, ça va et ça vient.

        1. Je cite cela car il faut attendre la 3.0 pour avoir un support complet de xaml sous windows dans .NET Core.

          Et donc voir arriver des app GUI windows only.

          Il est vrai que la mode actuelle et aux app electron. Mais c’est une mode. On en reviendra 😉

Les commentaires sont fermés.