Je râle souvent en ce moment contre les gens qui réinventent la roue. Dernièrement, c’était pour les gens qui sortaient chaque semaine une nouvelle lib pour accéder à un dico avec la syntaxe dico.cle.cle.cle
.
Cela m’énerve doublement.
D’abord parce c’est de l’énergie perdue : le temps passé à développer cette nouvelle lib aurait pu être consacré à améliorer l’ancienne, la maintenir, la corriger, etc. C’est pas comme si on avait trop de bras dans le monde de l’open source.
Ensuite, parce que ça créé plein de confusion.
Dans un monde où il y a 40000 libs, l’utilisateur qui doit choisir ne sait que faire. Créer une énième solution lui ajoute un choix, qu’il doit évaluer. Ca divise aussi l’impact de la publicité qu’on peut faire à la ou les meilleurs solutions. Et on sait que faire connaître quelque chose est difficile.
Bref, réinventer la roue est un pur gachi.
Certes, pas pour l’auteur. Il a amélioré ses capacités techniques, il s’est peut être même amusé, et il a mis un coup de polish a son égo. Je le sais, moi aussi je le fais. J’aime ça.
Mais le monde du libre ne fonctionne que si on peut mettre son cul de côté de temps à autre. Déjà qu’on utilise gratos tout le boulot des autres, c’est le minimum de se sentir un peu concerné, non ?
Alors, évidement, je ne parle pas de recréer une lib pour le même usage, mais qui le fait différemment. Où alors un fork du fait de mésentente avec la direction précédente du projet. Il y a des raisons acceptables pour faire une autre roue.
Il y a néanmoins des cas évidents où ce n’est pas le cas.
Par exemple, j’avais pondu requests-twisted pour me faciliter la vie, n’ayant pas trouver quelque chose de similaire.
Ce matin, l’auteur de txrequest me notifie qu’il a lui aussi une lib qui fait pareil, mais un poil plus avancée, et me demande si je peux fermer mon projet et pointer vers le sien.
Je regarde son projet, je l’évalue. Effectivement, le sien est plus intéressant. Le mien n’apporte rien par rapport à lui. Et sa lib a clairement besoin de visibilité puisque je ne l’avais pas trouvée.
J’ai donc édité mon projet pour pointer vers son projet. Si j’ai des améliorations futures, je ferai un PR sur son repo.
La communauté, ce n’est pas 2 ou 3 gros exploits qui brillent. C’est la somme de milliers petites choses qui amène le mouvement dans la bonne direction.
Ca me fait penser au strip d’xkcd sur les standards :)
http://xkcd.com/927/
Merci pour nous et pour le Libre en général. ;-)
Tu parles de dictionnaires accessibles en “dico.cle.cle.cle”
En Python c’est le bordel en ce moment
https://github.com/dsc/bunch
Python 3 n’est pas supporté… le type ne prend pas les PR…
(est-il encore en vie ?)
Quand un paquet est distribué sur Pypi … je ne sais pas comment en (re)prendre la main
Sur Github il y a “juste” 27 forks !!!
Certains forks commencent à mettre en place de l’intégration continue… donc ça permet d’y voir un peu plus clair…
mais c’est pas gagné encore !
@sebastien:
à lire le nombre de forks ; on dirait que ce sont des dev qui veulent une copie “vite fait” avant que le projet ne disparaisse parce que, comme tu te demandes ,”est-il encore en vie”, alors plutot que perdre la lib ; on se la met à gauche pour plus tard.
@Sam:
Par contre je me demande si j’aurai le culot de mailer à Sam&Max pour leur dire que leur lib est moins bien foutue que la mienne. Par pudeur du coup je ferai mon fork dans mon coin. Et pour ne pas perdre “l’utilisateur” j’indiquerai que je me suis inspiré de la lib blablabla ; une version un peu plus complete que “Sam&Max”. Ensuite pour la visibilité, le nom est important twrequest vs twisted-request forcement … C’est le même principe que le nommage des variables, meme en t’éffaçant à son profit, c’est pas dit qu’il y gagne pour autant en “audiance”.
@Sébastien : il y a 12 libs qui font ça, une nouvelle sort tous les mois, certaines sont vieilles de plusieurs années. Bunch n’est pas la seul qu’on peut améliorer. La plupart des packages python dans leur setup.py on le param author_email qui permet de contater l’auteur. Après il y a toujours des cons, c’est certain.
Malheureusement quand on voit sur des sites comme reddit le nombre de personnes qui ne se donnent pas la peine de chercher et préfèrent poster un message “help, comment on fait un print avec cette techno ?”, on se dit que la visibilité est un des problèmes, mais que la feignantise en est un autre…
A part ça totalement d’accord, l’open source est justement fait pour ne pas réinventer la roue mais aller plus loin à partir de ce qui a déjà été fait.
Je suis entierement d’accord avec toi. Je pense que tout cela est un petit du au fait que lire le code ecrit par quelqu’un d’autre, le comprendre, tres peu de gens acceptent de fournir cet effort. Je ne parlerai meme pas des gens autour de moi ici qui ne savent meme pas c’est quoi un fork, un PR, un depot git. Enfin…
Good guy Sam.
Ca n’existe pas un annuaire des librairies les plus populaire pour un langage donné ? Un systeme fiable de rassemblement d’information ce genre de choses. C’est une idée idiote surement mais bon, en plus ca m’aiderait moi qui veux me mettre au python …
Ca existe pour les frameworks (https://www.djangopackages.com/) et il y a des listes basées sur le nombre de download (http://pypi-ranking.info/alltime) ou par activité sur github (https://github.com/trending?l=python). Mais rien de fantastique pour découvrir des libs. C’est pour ça qu’on a pondu ça : http://sametmax.com/tres-grand-listing-des-libs-tierce-partie-les-plus-utiles-en-python/. Mais c’est pas dynamique. Il manque clairement un outil.
Bel état d’esprit Sam!
Hé bien, c’est exemplaire de ta part, je pense que très peu de personnes feraient de même. Surtout quand on voit comment le type t’as demandé ça d’ailleurs…
Pour une liste de libs populaires, il y a aussi https://github.com/vinta/awesome-python
Super ta reaction!
le gars va droit au but, tu aurais pu mal le prendre.
En message non orale est toujours sujet à interpretation.
bravo!
Une telle philosophie serait-elle viable dans le monde de l’apprentissage ? Autrement, plutôt que d’écrire son propre tutoriel, contribuer à l’amélioration d’un existant sur le même sujet.
J’étais comme ça aussi avant. Le syndrome “not written by me”. Jusqu’à ce que je me rende compte que:
1) Je passais un temps monstre a réécrire des lib from scratch.
2) Pour le même temps, j’apprenais beaucoup plus en améliorant/factorisant le code de quelqu’un d’autre.
3) Le syndrome “not written by me” cache le vrai syndrome “lazy to learn its”.
Depuis, je me force a mettre mon nez dans le code. En Python c’est tellement simple que je prends souvent des notes sur les trucs que je trouve bizarre ou aberrant. J’apprends aussi a faire la distinction entre un code cramoisi du slip et un code propre et lisible (améliorant du même coup mon propre code dans le future).
@Vayel: oui, c’est précisément ce que fais stackoverflow d’ailleurs.
@Vayel, @Sam: pas tout à fait. stackoverflow fait des questions réponses par des tutoriels.