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.
# Re: Mono 0.24
Posté par enicolas . En réponse à la dépêche Mono 0.24. Évalué à 3.
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/(...)