• # Re: Mono 0.24

    Posté par . En réponse à la dépêche Mono 0.24. Évalué à 3.

    Ah, en voilà une discussion bien intéressante, car à mon avis elle
    touche à des problèmes fondamentaux de l'informatique moderne et
    du logiciel libre : quel language(s) ? quel api(s) ? portabilité ?

    Tout d'abord, je pense que l'effort Mono est un cul de sac. J'ai lu
    récemment une interview (sorry, impossible à retrouver...) ou quelqu'un
    disait que la communauté du libre devrait moins passer de temps à
    clôner et plus à inventer. Je suis 100% d'accord avec ça.

    C'est vrai que parfois le "clônage" a du bon, surtout pour se mettre
    à niveau et rendre le libre "intéressant". Par exemple Open Office
    a en partie cloner Ms Office, mais maintenant chaque release de OO
    apporte son lot de nouveautés innovantes (source SGBD partout, export
    PDF...) et se démarque de plus en plus.

    Et notez que les logiciels vraiments connus, impressionants du libre
    sont des logiciels qui ne clônent pas, mais qui innovent. Mozzila
    par exemple, avec le tab browsing, le filtrage bayesien de spam.

    Alors quel est l'intérêt pour une communauté libre de clôner (ou
    d'implémenter, appellez ça comme vous voulez) une plateforme Microsoft ?
    Est-ce que l'effort ne serait pas mieux placé dans le développement
    de logiciels libres innovants et utiles ?

    Il a été dit que cela permettra d'effectuer des developpements
    portables plus facilement. Il existe déjà pour celà de (très) nombreuses
    solutions plus ou moins libre. Java bien sûr (je vais y revenir),
    mais aussi QT (oui je sais sous Windows c'est payant... mais si vous
    pouvez payer pour l'operating system et le compilateur, vous pouvez
    surement payer pour l'API, non ?), GTK, wxWindows, et j'en passe.

    De plus, il ne faut pas se leurer. Ca ne plaira pas à Microsoft de
    voir des applications faites pour .Net marcher aussi bien sous GNU/Linux
    que sous Windows. Et il fera son possible pour l'empêcher. Le dépôt
    des brevets sur l'API est là pour ça. Il peut aussi changer les APIs
    régulièrement de sortes que la communauté libre ne pourra pas suivre.

    Il a été dit que ça ne se passera pas comme ça, car :
    NET est un produit commercial, déjà en production sur certains sites, ms
    n'a donc plus la possibilité de changer du tout au tout...

    Et pourtant... IIS/ASP est un produit commercial, déjà en production sur
    de très nombreux sites, et MS ne se gène pas pour le mettre à la poubelle
    et annoncer à ses grands comptes officiellement que cette plateforme
    est remplacée par la .Net chose et ne sera plus supportée dès 2005.

    Mais revenons aux alternatives. Il a été dit beaucoup de choses sur
    Java, notemment "Java est promu par Sun et j'ai 10x plus confiance en
    Sun que Microsoft" ou "Java n'est pas propriétaire". Je ne suis pas
    d'accord. Pour moi, Sun est le "Microsoft de l'Unix". C'est certes moins
    visible car la position de monopole n'est pas là, mais le comportement
    s'en rapproche.

    Eh oui, il faut voir les choses en face, Java est propriétaire. Ok, la
    spécification est publique, mais l'implémentation ne l'est pas du tout.
    Alors peut être que de nombreux projets libres comblent le vide
    (GNU classpath, jikes, GCJ, ...) mais c'est tout comme Mono vis à vis
    de .Net, c'est de l'effort passé par la communauté libre pour implémenter
    (clôner, quoi) une plateforme propriétaire.

    Mais au final, qu'est que nous recherchons dans .Net, Java... c'est
    une combinaison de plusieurs choses : Langage, API, Outils qui nous
    permettent de développer des applications portables sur les trois
    plateformes principales (GNU/Linux sur divers matériels, MacOSX et
    MsWindows).

    Et là je rejoins les défenseurs de Java. Le langage est relativement
    propre (même s'il est très pauvre, malheureusement, mais ça s'améliore
    avec le temps, cf l'ajout d'une forme peu développée de généricité dans
    le 1.5), avec une des APIs les plus complètes à l'heure actuelle et
    à la portabilité très raisonnable (à condition de ne pas faire n'importe
    quoi).

    Mais Java a ses gros défauts. C'est un glouton de mémoire, c'est parfois
    très lent et surtout... ce n'est pas utilisé dans la "vraie vie" !! Ok,
    il y a beaucoup de projets Java sur SourceForge, mais il suffit de
    regarder ce que sont ces projets
    ça peut être
    un peu lent parfois, c'est propriétaire. Alors que faire d'autre ?

    Autres choix de langages. Il y a des "vrais" langages dans la nature,
    je veux dire des langages qui ont été réfléchis, fait pour faire
    du "gros" logiciel fiable. En comparaison (et ça a été dit), C, C++,
    Java, C# et autres ne sont que des "jouets". Je veux bien sûr parler
    de ADA95 et de EIFFEL (et peut être d'autres que je connais moins).
    Et la supériorité de ces langages est réelle. Ce n'est pas du "sucre
    syntaxique", mais bien une façon différente de penser l'informatique.

    Malheureusement, ADA95 souffre du manque de librairies dans beaucoup
    de domaines, quand à EIFFEL, sa communauté de développeurs tends vers
    le zero absolu (signe des temps, le livre de référence "Eiffel, The
    Language" est épuisé et introuvable, à part en occasion...).

    Alors à mon avis, la communauté du libre aurait bien besoin de
    se fédérer autour d'un environnement plustôt que de s'éparpiller sur
    de multiples projets (Mono étant un de plus dans la longue liste,
    et probablement le moins intéressant). Et même s'il y a les briques
    de base pour cet environnement (encore faudrait-t-il "choisir" parmis
    QT, GTK, wxWindows, GnuStep...), l'environnement complet n'est pas là
    (par exemple, une application GNOME ne sera pas bien intégrée sous
    Windows).

    En fait, il y a problement une erreur dans la façon de perçevoir
    le problème. On parle tous d'APIs et quelqu'un disait ici que porter
    .Net sous GNU/Linux doit être aussi rigolo que de porter fork() sous
    Windows. Mais ce que veut un développeur d'application ce n'est ni
    "fork()" ni "WM_PAINT", il veut une API simple pour lancer un autre
    process et une façon simple de peindre dans une fenêtre.

    L'environnement idéal devrait être plus "haut niveau" et dans bien
    des domaines QT et GTK sont bien placés de ce point de vue. Reste
    que ces outils sont basés sur des langages pas très joli-joli.
    Développer tout en C à notre époque équivaut quand même à faire table
    rase de 20 ans (au moins) de progrès informatique. Et développer
    en C++ impose un lot de contorsions, de problèmes de compilation,
    de lenteur de compilation et de bugs obscurs.

    Tout ça pour dire que les efforts passés dans Mono ou dotGNU seraient
    mieux placés dans le développement d'une plateforme de développement
    libre qui apporterait quelque chose d'équivalent à QT et GTK, portable
    et basé sur un langage digne de ce nom (ne me demandez pas lequel,
    je ne sais pas, mais en tout cas ce n'est ni Java ni C# ni C ni C++).
    Ah oui, il faudrait que cette plateforme soit "native" (i.e. *pas*
    basée sur une machine virtuelle) pour offrir les performances que
    l'on attends des logiciels "qui marchent".

    Un travail énorme, que personne n'a encore démarré, en partie à
    cause de la dispersion dans tous ces projets inutiles.

    Eric Nicolas
    http://www.nosica.net/(...)