mageekblog - Mot-clé - SimpleTestLe blog personnel de Frédéric Hardy. Au menu, PHP, agilité, FreeBSD, cuisine et photographies.2021-12-02T08:20:54+01:00Frédéric Hardyurn:md5:26874ca5b8cd4cac8d08b0e68e64f63aDotclearPourquoi atoum est-il open-source ?urn:md5:cea9bc40e442f635196f2e822a44d5be2013-04-16T18:30:00+02:002013-04-16T19:39:48+02:00mageekguyatoumatoumFrançois Zaninottoopen-sourcephpPHPUnitSimpleTest<p><a href="https://github.com/fzaninotto">François Zaninotto</a> a donné lors du <a href="http://paris2013.live.symfony.com">Symfony Live 2013</a> une conférence qui a apparemment eu un impact fort sur <a href="http://www.mikaelrandy.fr/2013/04/11/retour-sur-le-symfonylive-2013-partie-3-seconde-journee/">certaines personnes</a> que je connais et qui y ont assisté.</p>
<p>C’est donc avec un grand intérêt que j’ai lu <a href="http://redotheweb.com/2013/04/11/pourquoi-symfony-est-il-open-source.html">son billet</a> intitulé « Pourquoi Symfony est-il (encore) open-source ? » qui reprend sous forme textuelle le propos qu’il a tenu lors de sa conférence.</p>
<p>En résumé, en se basant sur sa propre expérience, il y explique que le développeur qui libère son code réalise un acte politique puissant qui n’a rien à voir avec la morale et qui n’est pas désintéressé, car il crée de la valeur indépendamment d’un échange marchand, ce qui lui permet de tisser un lien social et de reprendre le contrôle afin d’avoir une influence sur l’avenir.</p>
<p>J’avoue avoir été dubitatif lors de ma première lecture.</p>
<p>Mais ayant moi-même libéré du code notamment dans le cadre <a href="http://www.atoum.org/atoum">d’atoum</a>, il m’a semblé pertinent de confronter son point de vue à ma propre expérience en toute honnêteté, ce qui n’a pas été très facile même si cela a été enrichissant, car cela m’a obligé à reconnaître que ma démarche était très loin d’être désintéressée.</p> <p>Les bases de ce qu’est <a href="http://www.atoum.org/atoum">atoum</a> aujourd’hui ont été écrites en 2005.</p>
<p>À l’époque, je venais de créer ma société avec quelques amis et j’avais besoin d’un framework de tests unitaires.</p>
<p>Or, ceux existant à l’époque, à savoir PHPUnit et SimpleTest, étaient écrits en PHP 4 et ne profitaient donc pas de la puissance de PHP 5 tout juste disponible et que j'utilisais pour mes développement.</p>
<p>J’ai donc commencé à coder mon propre outil en PHP 5 en utilisant notamment <a href="http://fr2.php.net/manual/en/class.reflection.php">l’introspection</a> et en mélangeant des concepts issus aussi bien de SimpleTest que de PHPUnit.</p>
<p>Puis, au fil des mois et des années, l’outil a évolué en fonction de mes besoins, de ceux de mes collègues et surtout en fonction de <a href="http://www.php.net">PHP</a>.</p>
<p>Il me servait en effet durant cette période de laboratoire pour expérimenter les nouvelles fonctionnalités du langage, et cela jusqu’en 2010.</p>
<p>Cette année a été très particulière.</p>
<p>Tout d’abord, <a href="http://blog.mageekbox.net/?post/2010/03/17/Repose-en-paix%2C-PHP-6">PHP 6 a été enterré</a> et j’ai alors commencé à faire <a href="http://blog.mageekbox.net/?post/2010/03/25/Mort-de-PHP6-10-jours">la chronique</a> du développement de PHP 5.4, ce qui m’a donné une certaine notoriété parmi la communauté des développeurs francophones.</p>
<p>Ensuite, PHP 5.3 était à l’époque, et <a href="http://blog.mageekbox.net/?post/2013/04/01/PHP-5.2-contient-une-bombe-logique">c’est malheureusement toujours le cas aujourd’hui</a>, très loin d’être la version du langage la plus utilisée.</p>
<p>De plus, le test était, tout comme aujourd’hui à mon grand regret, la dernière roue du carrosse dans le domaine du développement logiciel, pour ne pas dire la roue de secours ou même une option totalement facultative.</p>
<p>J’ajoute que SimpleTest était moribond et que PHPUnit était quasi l’unique option viable si l’on voulait écrire et exécuter des tests unitaires en <a href="http://www.php.net">PHP</a>.</p>
<p>Et à mes yeux, ce dernier était très loin d’être un outil très agréable à utiliser et il représentait donc un frein important à la mise en œuvre des tests en entreprise.</p>
<p>Or, j’avais sous la main du code moderne basé sur PHP 5.3 et qui rendait l’écriture des tests simple et intuitive et leur exécution très performante.</p>
<p>Enfin, j’étais à l’époque à la recherche d’un emploi.</p>
<p>Le fait que je devais libérer le code source d’<a href="http://www.atoum.org/atoum">atoum</a> s’est donc très rapidement imposé à moi.</p>
<p>En effet, le fait de proposer un outil de tests unitaires simple et pratique à utiliser requérant PHP 5.3 pour fonctionner pouvait encourager les développeurs à la fois à migrer vers PHP 5.3 et à écrire des tests.</p>
<p>Je pouvais de plus utiliser ma popularité naissante pour promouvoir mon outil et lui donner une visibilité suffisante pour atteindre une certaine masse critique et lui permettre d’avoir une influence significative sur la façon dont les développeurs travaillent.</p>
<p>J’obtenais également ainsi sans frais et très rapidement un portfolio très représentatif de mes compétences, ce qui est loin d’être inintéressant lorsqu’on est à la recherche d’un emploi.</p>
<p>Enfin, quelque part dans un coin de ma tête, j’avais l’espoir de pouvoir en vivre à plus ou moins long terme en mettant en œuvre les conseils de <a href="http://www.stevepavlina.com/articles/courage-to-live-consciously.htm">Steve Pavlina</a>, même si je ne connaissais absolument pas ses écrits à l'époque.</p>
<blockquote cite="http://fr.wikipedia.org/wiki/Dale_Carnegie"><p>Inaction breeds doubt and fear. Action breeds confidence and courage. If you want to conquer fear, do not sit home and think about it. Go out and get busy.</p>
</blockquote>
<p>Certes, une fois écrites noir sur blanc, mes motivations de l’époque semblent bien ambitieuses et égoïstes, mais cela ne fait que prouver les dires de <a href="https://github.com/fzaninotto">François</a> selon lesquels la morale n’a pas sa place dans cette démarche.</p>
<p>De plus, je voulais très clairement reprendre le contrôle en proposant une alternative à PHPUnit et surtout avoir une influence, ce qui peut s’apparenter à l’acte politique que dénonce <a href="https://github.com/fzaninotto">François</a>, même si je n’irais pas jusqu’à parler de Révolution comme il le fait.</p>
<p>J’ajoute que depuis cette époque, une communauté s’est progressivement créée autour d’<a href="http://www.atoum.org/atoum">atoum</a> et donc de moi et j’ai tissé des liens plus ou moins forts avec certains contributeurs alors même que je n’ai jamais rencontré physiquement la plupart d’entre eux.</p>
<p>Là encore, <a href="https://github.com/fzaninotto">François</a> a fait mouche dans son propos, car même s’il s’agit d’un effet de bord et non d’une motivation à l’origine, j’ai reçu de l’amitié en <a href="http://fr.wikipedia.org/wiki/Don_et_contre-don">contre-don</a>, en plus de temps et de soutien pour faire avancer le projet.</p>
<p>Enfin, j’ai contribué à créer de la valeur alors que la libération du code d’<a href="http://www.atoum.org/atoum">atoum</a> n’a donné lieu à aucune transaction marchande directe.</p>
<p>Il est en effet utilisé par des sociétés diverses et variées telles que <a href="http://tech.m6web.fr/integration-continue-avec-jenkins-et-atoum">M6 Web</a>, <a href="http://www.mozfr.org">Mozilla</a>, Orange, <a href="http://www.tea-ebook.com">Tea</a>, <a href="http://www.pmsipilot.com">PMSIpilot</a>, <a href="http://www.doyoubuzz.com/fr/">DoYouBuzz</a>, <a href="http://atipik.fr">Atipik</a>, <a href="http://verylastroom.com">VeryLastRoom</a> ou <a href="http://www.plemi.com">Plemi</a>, et si c’est le cas, c’est qu’elles ont jugé qu’atoum pouvait leur faire gagner de l’argent.</p>
<p>Il parait même que <a href="https://twitter.com/gdelamarre">certain</a>s donnent des formations sur <a href="http://www.atoum.org/atoum">atoum</a> ou <a href="https://twitter.com/ludofleury/status/309338528557461505">trouve un poste</a> grâce à lui.</p>
<p>J’ai même été le salarié de l’une d’elles, même si j’ignore totalement si <a href="http://www.atoum.org/atoum">atoum</a> a joué un rôle significatif dans mon recrutement.</p>
<p>Et aujourd’hui, quelles sont mes motivations ?</p>
<p>J’avoue qu’elles n’ont pas évolué d’un iota et j’espère poursuivre l’aventure encore longtemps, d’autant que j’ai le contrôle absolu pour le meilleur et pour le pire et que cela me permet d’évacuer une certaine tension induite par mon travail.</p>
<p>En effet, professionnellement, la plupart de mes actes me sont dictés par ma hiérarchie et des contraintes commerciales et économiques.</p>
<p>Et parfois, j’ai énormément de mal à l’accepter, car ce que l’on m’impose va à l’encontre des bonnes pratiques techniques et m’empêche donc de faire mon travail correctement, du moins de mon point de vue.</p>
<p>Cela provoque alors chez moi de l’énervement et du stress qui m’empêche de m’éclater réellement dans le cadre de mon travail.</p>
<p>Par contre, ce n’est pas le cas dans le cadre d’<a href="http://www.atoum.org/atoum">atoum</a> et ce projet est donc devenu rapidement un exutoire, car il me permet de travailler comme je l’entends sur des sujets qui me passionnent en suivant mes propres règles et contraintes.</p>
<p>En effet, s’il y a parfois des discussions houleuses parmi la communauté, ce ne sont pas des ordres imposés arbitrairement sans aucune réflexion technique sous-jacente, mais au contraire des débats constructifs et argumentés qui mènent toujours à une action positive.</p>
<p>Encore une fois, mon investissement, mon don pour paraphraser <a href="https://github.com/fzaninotto">François</a>, n’est donc pas désintéressé.</p>
<p>Je suis donc bien obligé de reconnaître que son analyse est finalement très pertinente, même si j'aurais aimé être plus altruiste dans ma démarche !</p>http://blog.mageekbox.net/?post/2013/04/16/Pourquoi-atoum-est-il-open-source#comment-formhttp://blog.mageekbox.net/?feed/atom/comments/419