Un intérêt du Logiciel Libre : la réutilisation du code
J'ai créé, pendant les vacances, une série d'outils liés à DOAP, The DOAPy Family (ou, plus court, les "doapies"). J'ai réutilisé, pour la présentation, la CSS de bonjourlesmouettes. J'ai également créé une bibliothèque de fonctions pour créer des documents RDF XML (qui sont en fait des wrappers des fonctions DOM de PHP). Je suis en train de créer un nouvel outil, MAYB-e, lié toujours à RDF, mais cette fois-ci à FOAF. C'est donc tout naturellement que j'ai réutilisé la CSS de bonjourlesmouettes.org (pour le développement tout au moins), et ma librairie de fonctions RDF/XML (que j'ai un peu améliorée au passage).
On peut voir dans ces quelques exemples l'intérêt de la réutilisation du code "en interne" : ne pas perdre du temps à redévelopper les mêmes choses, à réinventer sans cesse la roue. Bien sûr, j'avais quelques besoins spécifiques avec MAYB-e, mais comme ils étaient principalement liés à la présentation (notamment le positionnement à droite du logo), j'ai utilisé le principe de base des CSS : feuilles de style en cascade : j'ai défini dans une CSS spécifique à MAYB-e le style h1#top img à float: right.
Mais ce n'est pas tout. Dans les 2 cas, j'ai utilisé la classe IzForm, créée par bballizlife, pour les formulaires (super pratique). Et, esprit du libre faisant, je lui ai proposé deux - trois améliorations pour sa classe (notamment un attribut de style manquant, qui m'a forcé à "hacker" de manière peu pratique sa classe, parce qu'il était en vacances :). Cette classe étant sous licence BSD-like, j'ai pu la réutiliser dans mes projets (libres eux aussi, mais la BSD ne l'oblige pas) sans problèmes.
Ainsi, toute la communauté progresse grâce à elle-même : de petits bouts en petits bouts, par accrétion, on arrive à quelque chose de vraiment complet. Un autre exemple, plus lié à "accrétion" qu'à "vraiment complet", mon agrégateur de feeds RSS : je l'ai créé à partir de deux classes PEAR : XML_RSS et Cache_Lite. J'ai adapté la première (sous licence PHP 2.0) de manière à la rendre indépendante de PEAR (elle avait des appels à XML_Parser et PEAR_Error), en reprenant un vieux bout de code de RDFPic Extended pour lui faire utiliser le parseur XML de PHP. J'ai également "emballé" Cache_Lite dans Cache_Lite_Basic, qui permet un accès plus rapide aux fonctions de Cache_Lite.
Ces deux derniers exemples montrent que l'on n'est pas "bloqué" avec tel ou tel système lorsque l'on réutilise le travail des autres ; des licences telles que la GNU / GPL permettent de modifier ce travail. Le cas s'est produit de manière plus qu'évidente avec les doapies, où j'ai utilisé une partie de RAP (seulement une partie, car RAP est très complet mais aussi très lourd
de manière peu conventionnelle (en bref, en ne passant pas par l'interface fournie).
De plus, dans la majorité des cas, s'applique une des constantes du LL : there's more than one way to do it
(il y a plus d'une manière de faire cela) : la classe qui permet de faire des requêtes HTTP de PEAR (HTTP_Request) ne me convenait pas, j'ai pris celle d'Incutio ! Si le sujet n'est pas trop pointu, il existe bien souvent au moins deux possibilités... Le meilleur exemple étant le choix d'un CMS.
Deux dernières choses importantes à propos du LL : un jour, quelqu'un vous proposera de traduire bénévolement votre application en japonais. Ce jour-là, j'ai été heureux de voir que mes applications intéressaient des gens ;). Et n'oubliez surtout pas : partagez vos créations ! et rédigez un DOAP au passage 
[PS] : C'est mon post numéro 100 !!!
