Troll MySQL sur NeoKraft
11/04/2006 19:40:55
Tout a commencé ici : MySQL out sur le blog de NeoKraft, « grand manitou » de Dotclear, qui se trouve être le moteur de blog que vous voyez ici fonctionner sous vos yeux ébahis.
Je vais essayer de retracer un petit peu l’histoire. Notez bien que n’ayant pas pu regarder les réactions hier soir après 21h30 environ, il y a eu probablement un gros morceau dont je n’ai pas eu connaissance (car, vous l’avez probablement remarqué, le texte original du billet et les commentaires ont mystérieusement disparu).
Le texte original de ce billet traitait, en gros, des mésaventures de NeoKraft avec le SGBDR qui lui fait horreur, je veux bien sûr parler de MySQL (qui semble être sa bête noire depuis qu’il a découvert le sacro-saint PostgreSQL). Pour résumer, l’auteur venait de découvrir (ou plutôt devrais-je dire d’affronter) le système de gestion des jeux de caractères et d’interclassement de MySQL, qui je dois l’avouer est assez original et donc assez difficile à appréhender, du moins au début.
NeoKraft, loin de se livrer à une étude approfondie du fonctionnement et des possibilités de MySQL en la matière, s’est simplement amusé à faire joujou avec les différentes options côté client (SET NAMES notamment), visiblement sans avoir pris le temps de consulter de manière méthodique la documentation correspondante. Et comme ça ne marche pas, il pleure sur son blog sa rage envers MySQL et surtout sa franche gratitude envers son « concurrent » PostgreSQL : au moins lui, il ne posera jamais de problèmes, vu qu’il ne gère pas la gestion des charsets à la connexion, ni de manière atomique sur les tables ou les colonnes : ça c’est du progrès. Mais NeoKraft était bien trop occupé à manipuler iconv à l’artisanale sur les tables pour y comprendre quelque chose.
Autrement dit : je ne me casse pas la tête pour comprendre comment ça fonctionne, si ça marche pas, j’utilise un autre SGBDR qui, lui ne posera pas de questions. Ca ne vous rappelle rien ? Moi si : l’argumentaire de ceux qui s’acharnent à refuser les normes du W3C sous prétexte que ça ne s’apprend pas en 5 min. On retrouve ici exactement la même mentalité.
Mais continuons donc notre histoire : face à cet assaut de désinformation, d’autant plus grave qu’il a été perpétré sur un blog assez connu et de grande audience, je ne pouvais rester indifférent. J’ai donc laissé un long commentaire expliquant pourquoi il s’y prennait mal. Je le concède : la première phrase de ce commentaire était de nature légèrement dévalorisante (en gros, je l’accusais de n’avoir passé que 3 minutes et 38 secondes à essayer de comprendre ce qu’il faisait), mais il m’a été difficile de la refouler, ce commentaire ayant été écrit sur le « hot » (je tiens à préciser que tout le reste du commentaire était tout à fait calme, bien que abrupt).
Il n’a pu opposer à ce commentaire qu’une réponse qui laissait clairement transparaître le fait qu’il n’avait visiblement pas plus cherché à comprendre mes explications qu’il n’a cherché à comprendre ses erreurs. J’ai alors répété la partie visiblement incomprise de mon argumentaire dans un deuxième commentaire. C’est à ce moment là que je suis allé me coucher. Je ne peux donc pas vous dire quel déchaînement a suivi mes interventions. Il semblerait qu’il y ait eu une bataille des pour (1, 2) et des contre (voir le blog concerné).
Je regrette donc de n’avoir pu participer au coeur de la bataille, il y a probablement eu de gros morceaux (ou alors je me trompe totalement, et seuls mes deux commentaires ont suffit à NeoKraft pour capituler).
Tout cela est a relier au curieux modèle de développement « semi-libre » de DotClear (à savoir ne pas rendre public le CVS des versions de Dotclear en cours de développement), qui me fait furieusement penser à une opportunité pour NeoKraft de se voir attribuer la gloire des nouvelles versions (tandis que si le développement était réellement public, il n’aurait probablement pas eu une telle part du gâteau qu’est la popularité).
En conclusion, je serais curieux de voir quelle quantité d’insultes notre cher Neo déverserait face à un éventuel fork de DotClear. Quelqu’un pour tenter l’expérience ?
NOTE : Il semblerait qu’il y ait un léger problème sur mon blog qui empêche tout le monde de poster un commentaire. Je suis dessus. Si vous souhaitez réagir urgemment, vous pouvez envoyer votre commentaire à e-t172@e-t172 dot net. Au passage, notez qu’un commentaire d’Olivier (alias NeoKraft) a malheureusement été mangé par mon anti-spam Spamplemousse (toutes mes excuses). Il a été mis en ligne.
NOTE 2 : le problème est résolu (en fait, 90% des commentaires passaient subitement à la trappe de l’anti-spam). Le débat continue.
Guyhom a répondu le 11/04/2006 à 22:18 #
En fait, je dois t’avouer que je n’était ni pour ni contrece que vous abordiez qui me paraissait intéressant mais que je ne maitrisais pas. J’ai même lancé une blague pourrie qui n’avait rien à voir pour détendre l’atmosphère (ce que j’ai du complètement foirer en fait).
Ce qui m’a pris la tête c’est qu’après des sautes d’humeur régulières, Olivier a décidé à la suite de votre prise de bec de couper les commentaires ; ça je pense que personne n’en voulait et je sais toujours pas pourquoi il a fait ça. Ca n’a pas duré de toute façon.
Cela dit, s’il me semble que tu semblais avoir raison sur le SGBD, je ne pense pas terejoindre dans ton avis du développement "caché". Après tout ça, ça lui appartient.
Je constate juste (et ce n’est pas la première fois) qu’Olivier a souvent ses humeurs et ses fiertés qui peuvent êtrelassantes et qui ne servent pas (bien au contraire) DotClear. C’est surtout ça que je trouve dommage…
e-t172 a répondu le 12/04/2006 à 12:18 #
"Après tout ça, ça lui appartient."
Pas si c’est sous licence Libre.
Guyhom a répondu le 12/04/2006 à 12:42 #
Je ne connais pas les règles ou les habitudes de ce qui se fait pour les développements libres ; si tu as des infos, je suis preneur. Hésite pas à m’en dire plus par mail… Mais n’y a-t-il pas confusion entre "open source" et "licence libre" ?
e-t172 a répondu le 12/04/2006 à 13:17 #
www.dotclear.net/license….
"DotClear est un logiciel libre distribué gratuitement selon les termes de la GNU General Public License."
Il s’agit de la GPL, c’est à dire de la définition la plus communément admise du "libre". Cette licence implique que le code source de Dotclear n’appartient à personne et que personne ne peut donc exercer un quelconque contrôle dessus. A partir du moment où du code source est délibérément intégré dans DotClear par un contributeur, ce dernier en pert automatiquement la propriété (il n’appartient alors plus à personne, ni au contributeur, ni à NeoKraft, ni à l’équipe de DotClear dans son ensemble) : il est libre.
Ce que je voulais dire dans mon billet, c’est que l’équipe de DotClear, visiblement dirigée par NeoKraft (bien que je ne connaisse pas vraiment leur manière de travailler), ne développe pas leurs versions à venir en public, mais en privé dans l’équipe de développement. Au contraire, la majorité des projets libres tels que par exemple Apache, MySQL, PHP, etc. développent la version suivante de leurs produits sur un CVS public, où tout le monde peut consulter le code source en temps réel de son développement.
Par exemple, e-t172.net fonctionne avec la version 6.0 de PHP : elle n’est pas encore sortie, mais son développement est public (voir snaps.php.net/ ). Toutes les nuits et de manière automatique, mon serveur recompile PHP pour intégrer les modifications du code source des dernières 24 heures. L’avantage pour moi est que comme ce serveur me sert aussi d’environnement de développement, je peux ainsi m’assurer que les scripts que je développe aujourd’hui seront compatibles avec la prochaine version de PHP.
DotClear, lui, ne rend pas public le CVS de la branche en cours de développement : cela signifie que personne ne peut contribuer à la prochaine version de DotClear si cette personne ne fait pas partie de l’équipe de développement. Et par "contribuer", je ne veux pas dire modifier le code (modifications qui sont de toute façon en général limitées à une liste précise de contributeurs pour éviter le vandalisme ou les modifications unilatérales), mais par exemple repérer les bugs pour les signaler ou suggérer des améliorations sur telle ou telle fonctionnalité ou tel ou tel morceau du code source.
Ainsi, beaucoup de projets incitent leurs utilisateurs à utiliser les versions de développement si ils le peuvent afin de rapporter les bugs. De cette manière l’équipe de développement pourra s’assurer que leur code a été testé dans le plus de situations possibles et sortir une version finale plus stable, car plus testée.
En refusant cette aide supplémentaire, probablement pour s’attribuer plus de gloire et/ou de popularité, NeoKraft ne fait que compliquer la tâche de l’équipe de développement.
Olivier a répondu le 12/04/2006 à 14:21 #
Je vais essayer de reposter ce commentaire que tu as visiblement bien courageusement ignoré hier soir vers 22h.
J’ai un nom, je m’appelle Olivier, mais libre à toi de m’appeler comme tu le souhaites. Je n’aime pas MySQL depuis bien avant de connaître PostgreSQL, sois rassuré sur ce point. Et je continuerai de trouver absurde de laisser au client le choix de son charset à n’importe quel moment de la connexion (c’est comme si on lui permettait de changer la taille des champs d’une table à la volée.)
Nous ne parlerons pas des standards, concernant un moteur qui s’en moque comme de sa dernière chemise. Ah tiens, mais où est la tables information_schema qui est pourtant bien définie dans la section 21.2 du standard ?
Contrairement à ce que tu aimerais croire, tu n’es pas à l’origine d’un long troll et je n’ai pas fermé les commentaires par ta faute, c’eût été te faire un honneur que tu ne mérites visiblement pas.
No comment à propos du développement "semi-ouvert". Je suis très curieux de savoir de quelle part du gateau je me taille. Celle d’avoir rencontré de nouveaux amis ? Si tu savais à quelle point je me moque de ma "gloire" personnelle. Si ce genre de considération m’importait, je n’aurais pas envoyé valser Free, j’aurai répondu présent à tout un tas de demandes d’acteurs d’importance à la morale douteuse.
Et puis, dire ça le jour où je remercie à plusieurs reprises une des rares personnes qui a fait un audit et envoyé les correctifs est pour le moins déplacé.
Tu ne m’en voudras pas, j’ai viré ton trackback, les procès d’intention et attaques diverses n’ayant aucun fondement ne m’interressent plus.
Tristan a répondu le 12/04/2006 à 17:26 #
Je suis un utilisateur de DotClear de la première heure, en plus d’être un ami d’Olivier Meunier. Quelques petites précisions :
1 - Olivier, en tant qu’auteur de DotClear, en est propriétaire. C’est inaliénable. Il se trouve qu’il autorise les gens à l’utiliser et le modifier & co, sous lience GPL. Mais il peut, s’il le souhaite, rendre DotClear propriétaire, car c’est lui qui l’a écrit. Donc oui, Doclear lui appartient. (Les versions publiées sous GPL restertont sous GPL, cela va sans dire).
2 - les développeurs peuvent développer le logiciel comme bon leur semble. C’est une question de gout, de préference, de méthode. Il n’y a qu’une seule obligation : a partir du moment où ils diffusent une version à quelqu’un d’extérieur, il doivent fournir le code source. (comme c’est du PHP + HTML + CSS + JS), c’est une évidence.
3 - Les procès d’intention du genre "c’est un développement fermé pour pouvoir s’attribuer plus de gloire", c’est bien mal connaitre Olivier. A mon sens, s’il travaille comme cela, c’est parce que la méthode lui convient, et c’est tout. Une toute petite équipe est beaucoup plus efficace *en proportion* qu’une grande équipe. C’est une des grandes leçons du développement logiciel. A lire sur le sujet : "The mythical Man/month", un classique du genre.
e-t172 a répondu le 12/04/2006 à 17:43 #
Bonjour Tristan,
"Olivier, en tant qu’auteur de DotClear, en est propriétaire. C’est inaliénable."
En effet, je me suis mal exprimé : DotClear (le projet) lui appartient, pas son code source (du moins les versions placées en GPL, je ne parle pas des versions en cours de développement qui ne sont pas encore sous GPL). Et oui, je suis d’accord, rien n’empêche à Olivier de placer ses éventuelles futures contributions à DotClear propriétaires (en rendant DotClear lui même propriétaire). C’est son droit.
"A mon sens, s’il travaille comme cela, c’est parce que la méthode lui convient, et c’est tout. Une toute petite équipe est beaucoup plus efficace *en proportion* qu’une grande équipe."
Je le dis et je le répète : je ne souhaite pas qu’Olivier rende le développement des futures versions de Dotclear public (au sens "contribuer" du terme). Je me demandais juste pourquoi le développement de ces futures versions ne serait pas publié en temps réel, à l’instar d’autres projets, afin notamment d’offrir un niveau de test et de contrôle supérieur.
Je suis tout à fait d’accord sur le fait qu’une grande équipe peut être moins efficace qu’une petite en ce qui concerne le * développement * du code source en lui même. Mais en ce qui concerne le test et le débogage, plus il y a de monde qui teste, mieux c’est.
e-t172 a répondu le 12/04/2006 à 18:48 #
Je tiens à présenter mes plus plates excuses à Olivier : son commentaire (voir plus haut) n’a pas été publié immédiatement, vu que curieusement, Spamplemousse l’a considéré comme du spam (je jure que c’est vrai :p ). Il a donc fallu qu’il attende la visite de ma liste d’attente de modération.
Répondons-y :
"Et je continuerai de trouver absurde de laisser au client le choix de son charset à n’importe quel moment de la connexion (c’est comme si on lui permettait de changer la taille des champs d’une table à la volée.)"
Tu n’as donc toujours pas compris. Soit tu le fais exprès, soit tu… bon, je ne considèrerai que cette possibilité (qui est, soit dit en passant, la plus probable).
"Nous ne parlerons pas des standards, concernant un moteur qui s’en moque comme de sa dernière chemise. Ah tiens, mais où est la tables information_schema qui est pourtant bien définie dans la section 21.2 du standard ?"
Et ça, je l’invente peut-être : storage.e-t172.net/inform…
Et puis personnellement, le SQL standard, ça ne m’intéresse pas plus que ça. J’utilise une couche d’abstraction dans mes développements qui permet d’isoler complètement la source des données que j’utilise, donc ce n’est pas un problème pour moi. Après, je comprends parfaitement que tu ne sois pas du même avis. Question de point de vue.
"No comment à propos du développement "semi-ouvert". Je suis très curieux de savoir de quelle part du gateau je me taille. Celle d’avoir rencontré de nouveaux amis ? Si tu savais à quelle point je me moque de ma "gloire" personnelle. Si ce genre de considération m’importait, je n’aurais pas envoyé valser Free, j’aurai répondu présent à tout un tas de demandes d’acteurs d’importance à la morale douteuse.
Et puis, dire ça le jour où je remercie à plusieurs reprises une des rares personnes qui a fait un audit et envoyé les correctifs est pour le moins déplacé.
Tu ne m’en voudras pas, j’ai viré ton trackback, les procès d’intention et attaques diverses n’ayant aucun fondement ne m’interressent plus."
C’est le genre de réponse que j’attendais, je te remercie. Me voilà rassuré. Mais cette histoire du "semi-libre", que tu n’as toujours pas justifié, n’était qu’un détail de mes critiques.
Olivier a répondu le 12/04/2006 à 22:10 #
Désolé pour la méprise, j’ai cru à un délit de sale gueule. Concernant MySQL, si au lieu d’attaquer bêtement et mettre mes compétences en doute (elles sont moyennes, je ne suis pas plus malin qu’un autre) tu as une solution pour exporter un contenu utf-8 mis dans une base latin1 (enfin pas vraiment c’est là que ça se complique) et que l’export soit réellement de l’utf-8, je suis preneur et même prêt à reconnaître être un âne avec MySQL, je viens d’un monde peuplé d’oracles et d’éléphants, qui m’ont toujours permis de dormir sur mes deux oreilles.
Petite précision de taille concernant le code et sa propriété. Peu importe la licence, en France il existe un code de la propriété intellectuelle qui surpasse la GPL et me rend propriétaire de mon travail. Que je choissise de permettre à chacun d’en jouir à sa guise selon les limites de la dite GPL ne change rien à l’affaire. Quant au dev, Tristan l’a dit lui même, ce n’est pas spécialement ouvert pour l’instant pour au moins une raison : c’est ma manière de bosser, je m’enferme et quand j’ai un truc potable je l’ouvre aux regards extérieurs, avec le risque assumé d’avoir fait des erreurs. Une autre raison serra éclaircie un peu plus tard.
Le problème concernant spamplemousse est résolu dans dc2 et on va peut-être faire un portage parce que c’est agaçant.
e-t172 a répondu le 12/04/2006 à 22:51 #
"Concernant MySQL, si au lieu d’attaquer bêtement et mettre mes compétences en doute (elles sont moyennes, je ne suis pas plus malin qu’un autre) tu as une solution pour exporter un contenu utf-8 mis dans une base latin1 (enfin pas vraiment c’est là que ça se complique) et que l’export soit réellement de l’utf-8, je suis preneur et même prêt à reconnaître être un âne avec MySQL, je viens d’un monde peuplé d’oracles et d’éléphants, qui m’ont toujours permis de dormir sur mes deux oreilles."
Avec joie. Après 30 secondes de recherche à la sueur de ma peau : dev.mysql.com/doc/refman/…
Regarde bien le second paragraphe :
" If you want to change the table default character set and all character columns (CHAR, VARCHAR, TEXT) to a new character set, use a statement like this:
ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
Warning: The preceding operation converts column values between the character sets. This is not what you want if you have a column in one character set (like latin1) but the stored values actually use some other, incompatible character set (like utf8). In this case, you have to do the following for each such column:
ALTER TABLE t1 CHANGE c1 c1 BLOB;
ALTER TABLE t1 CHANGE c1 c1 TEXT CHARACTER SET utf8;
The reason this works is that there is no conversion when you convert to or from BLOB columns. "
Si tu as d’autres problèmes ou questions, je me ferai une joie de t’aider.
xave a répondu le 14/04/2006 à 11:41 #
on dirait que c’est dur à comprendre en plus :
Dotclear est sous gpl. les sources sont publiques. le développement est public.
Dotclear2, une autre application, n’est *pas* sous GPL. Pour le moment en tous cas.
Maus yapas, ça done envie. Si le seul moyen pour qu’on arrête de nous casser les couilles avec des "Ouiiiiiin, vous respectez pas la philosophie de la GPL !" c’est de trouver une autre license, on va finir par y réfléchir.
Kozlika a répondu le 14/04/2006 à 11:58 #
En ce qui concerne non-publication dès maintenant des sources, un autre codeur en a donné les raisons au sujet de son propre projet. Ici : www.vossey.com/dossier/pa… La dernière question et sa réponse. Tu le connais peut-être ?
e-t172 a répondu le 14/04/2006 à 18:02 #
"on dirait que c’est dur à comprendre en plus :
Dotclear est sous gpl. les sources sont publiques. le développement est public.
Dotclear2, une autre application, n’est *pas* sous GPL. Pour le moment en tous cas."
Je sais. C’est d’ailleurs pour cela que je ne dis pas que ça ne respecte pas la GPL, vu qu’en effet les versions en cours de développement ne sont pas en GPL. Je dis juste qu’en ne plaçant pas ces versions de développement en GPL, Olivier ralentit son propre projet.
"En ce qui concerne non-publication dès maintenant des sources, un autre codeur en a donné les raisons au sujet de son propre projet. Ici : www.vossey.com/dossier/pa… La dernière question et sa réponse. Tu le connais peut-être ?"
Ce n’est absolument pas comparable. Il y a une grosse différence entre un projet à relativement faible audience qui n’est même pas encore officiellement annoncé et un logiciel hyper-connu, hyper-utilisé et très réputé. Dans le premier cas, l’auteur doit faire le choix de se lancer ou pas. Dans le second cas, soit il s’adapte à la nouvelle situation, soit il passe la main, soit il jette l’éponge.
Et puis relis bien mes arguments : "les rendre publiques demande du temps pour corriger les bugs signalés, effectuer la maintenance, gérer les versions". Olivier effectue déjà ce travail. Publier les sources de développement lui permettrait (peut-être ?) d’être plus efficace.
Guyhom a répondu le 16/04/2006 à 23:23 #
En tout cas, merci à vous tous pour vos échanges : je me coucherai moins con ce soir concernant les licences. Ca m’aura éclairé sur tout ce qui s’était passé récemment.