lego-wheel.jpg Je passe pas mal de temps à programmer en ce moment, soit pour ajouter des trucs à mes projets existants, soit pour faire une petite fonction basique qui existe souvent déjà sur le net, mais que j’ai quand même envie de refaire.

Pourquoi tout refaire, et pas reprendre ce qui existe déjà ?

Parce que ce qui existe déjà, pourtant parfois très bien, n’est pas toujours ce qui nous convient le mieux. J’aime faire les choses à ma façon : au moins je suis sûr que ça sera fait comme je veux, et souvent correctement. Je n’aime pas utiliser quelque chose que je ne comprend pas (particulièrement en programmation) : j’ai parfois repris des bibliothèques ou des morceaux de codes qui existaient, puis souvent balancé à la corbeille et fini par refaire tout ça à partir de zéro.

Récemment j’ai testé l’agrégateur RSS Leed, d’Idleman, et c’est un programme merveilleux qui fonctionne très bien. Ce n’est pas le seul agrégateur RSS en PHP qui existe (il y a aussi TT-Rss ou RSS-Lounge, pour les plus connus), mais ayant pour projet de faire moi aussi un agrégateur RSS je suis assez mitigé entre adapter un projet existant (Leed sûrement) et construire le mien à partir de zéro.

Refaire quelque chose au lieu de reprendre ce qui existe, c’est donc faire quelque chose autrement pour arriver au même résultat. Aujourd’hui il existe des dizaines de
CMS, des dizaines de navigateurs, des centaines de distro Linux : chacun y trouvera celui qu’il veut utiliser, et sinon il peut en créer un s’il veut.

Le but n’est pas d’avoir un nouveau « concurrent » : les logiciels sont tous gratuits et libres, le mot « concurrent » n’a aucun sens. Non, le but c’est de donner plus de choix à l’utilisateur et une plus grande satisfaction ou contrôle à l’auteur de l’application.

Savoir coder quand on utilise un ordinateur et vouloir à son tour créer des choses, c’est la liberté. La liberté de faire comme on le sent, comme on veut. La liberté de ne pas se sentir obligé d’accepter ce qu’on nous propose, voire qu’on nous impose, dans certains cas… Coder et vouloir construire ses propres logiciels, c’est vouloir écrire après avoir appris à lire, et parfois lire ne suffit plus (même principe pour les remix de musique, parodies de films, caricatures : la réalité existante n’est plus suffisante et on veut l’améliorer.

En dehors de ça, je remarque — vous sûrement aussi — qu’un produit existant, quel qu’il soit, n’est jamais parfait. On y voit toujours des améliorations possibles. Parfois, on a envie de complètement refondre le produit et imaginer quelque chose de complètement neuf.

Passer du temps à imaginer et à concevoir le fonctionnement d’un produit, c’est toujours plus enrichissant que de prendre un produit similaire parmi ce qui existe déjà : ça permet de voir comment ça marche, quels sont les problèmes et leurs solutions, comment ne pas refaire les erreurs du passé.

image de Profound Whatever

41 commentaires

gravatar
qwerty a dit :

Et puis, sans compter une adaptation à un besoin. J'ai codé mon CMS, NewsHTML (excuse moi ce lien, je fais du placement de marque :p), parce que Blogotext ne me convenais pas ! C'est ainsi la différence entre le logiciel propriétaire et libre. L'un est du prêt à porter, et l'autre est du sur mesure. Et bien sûr souvent un meilleur rapport qualité prix.


Il semble que la perfection soit atteinte non quand il n'y a plus rien à ajouter, mais quand il n'y a plus rien à retrancher.

Antoine de Saint-Exupéry
Blogotext est donc pas un concurrent, mais en quelque sorte une "muse" pour moi, auquel je reprend les idées intéressantes, en laissant de coté ce qui ne me plait moins.

gravatar
sil a dit :

Les hébergements LAMP sont généralement très limites en ce qui concerne les taches planifiées ou persistantes. Je ne sais pas s'il existe une technologie qui pallie à ce problème et qui n'a pas la complexité d'un VPS.

gravatar
Sbgodin a dit :

@qwerty NewsHTML n'autorise pas les travaux dérivés. Pourquoi ?!

Déjà qu'interdire l'utilisation commerciale, comme Blogotext, rend le programme non-libre, pourquoi choisir une licence non libre ? Vraie question.

gravatar
Luc a dit :

Je passe toujours un temps fou à me demander si je vais coder moi-même ou si je vais utiliser un truc existant ! C'est chaud comme question, et très contextuel. Et chronophage !

J'ai testé une API super sympa y'a quelques semaines, mais avec des défauts. Je regarde la dernière mise à jour : 2010. Combien de fois suis-je tombé sur des trucs supers, codés rapidement et pas maintenu. Que faire ? Corriger, recommencer ?

A l'inverse, les grosses API connues où les mises à jours sont tellement brutales que ça sent le "deprecated" tous les 3 mois. Que faire ? Rester sur les anciennes versions ? Adapter ? Recoder ?

Sans parler des effets de mode...

Et sans parler du plaisir de coder soi même un truc :)

gravatar
Meewan a dit :

Tu oublis de mentionner un gros avantage (en tut cas pour moi)de réinventer la roue : la pédagogie. Je travail sur des re-implémentations de trucs connu ou le logiciel est utiliser par tout le monde et d'une qualité très supérieur a tout ce que je pourrais faire pour le seul fait de comprendre comment fonctionne tel protocole ou tel système.

gravatar
Gordon a dit :

C’est à double tranchant.

Évidemment, il n’est pas souhaitable de tout centraliser, et ne favoriser qu’un choix unique n’est pas ce qu’enseigne le Libre.
De la même façon, il est parfaitement louable de chercher à faire soi-même les choses pour apprendre comment elles fonctionnent.

Ceci dit, il ne faut pas pour autant dénigrer le travail de la communauté, et des autres développeurs : un des avantages du logiciel libre est la collaboration. Si, parce qu’un logiciel ou une bibliothèque ne te convient pas, tu en fais une autre au lieu d’améliorer la première, tu perds peut-être l’opportunité d’avoir un logiciel deux fois meilleur. N’oublions pas que ton propre projet ne sera pas dénué de défauts. Et si, au lieu de les corriger, tes utilisateurs préfèrent en faire un nouveau dans leur coin ? On obtiendra une myriade de projets peu aboutis, sans qu’un soit réellement bon.

gravatar
Guenhwyvar a dit :

Totalement H.S., mais si t'as un affichage personnalisé des erreurs 403 et 404, il marche pas :


Forbidden
You don't have permission to access /img/ on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

gravatar
Julien et Nel a dit :

Je suis assez souvent contre les libs, framework ou autre. Certes, ceci me permettrait d'éviter de tout recoder et de perdre du temps. Cependant, si on n'a pas forcément besoin de tous les fonctions ou on arrive pas à comprendre le code pour le modifier, l'alléger ou l'améliorer etc. En ce qui me concerne, je faisais des forks : c'était plus dans un esprit créatif. Par exemple : je prenais un jeu de guerre spacial comme xnova et je le transforme en jeux de lapin. Un autre exemple, j'utilisais un jeu à la style worms et j'en faisais un jeu où des pacmans se foutent sur la tronche. Le problème bien souvent, c'est qu'on bidouille le machin et on essaye de le modifier comme on peut. Cependant, le code d'un autre est souvent d'une logique qui est différente de la notre. On essaye de modifier son code, mais on reste bloquer et on finit par laisser tomber. C'est comme ça que j'ai commencé à coder "UAG CMS" pour ma part, j'avais voulu à la base reprendre Blogotext v1 et j'ai rapidement abandonné l'idée. Pourquoi ? Parce qu'on se dit merde, je ne comprends rien à son code et je n'y arriverais pas. La meilleure des choses à faire pour moi, c'est de partir de rien. La meilleure façon de comprendre un code est de le faire soit même. Ainsi on sait où chaque chose est, on peut faire ce qu'on veut (modifier, supprimer, ajouter des trucs dans le script), on sait comment ce foutu code marche (enfin des fois, ça marche bien et on se rend compte que finalement que ça ne devrait pas marcher). Il est important de ne pas vouloir réinventer la roue, mais il est importer aussi de savoir comment marche une roue, comment on fabrique celle-ci et ce que c'est une roue en gros. Si la personne se suffit de la roue et ne cherche pas à la réinventer à sa manière, la personne utilisera bêtement cette roue et sera bien enmerder si un jour il doit en faire une lui même ou comprendre son fonctionnement.

Doit-on réinventer la roue ? Mais on devrait tous devoir le faire par curiosité, c'est mon simple avis.

gravatar
Hoy a dit :

@qwerty : C'est en prod votre newsHtml ? Sincérement je n'espère pas : XSS & SQLi a gogo ;o

gravatar
Bronco a dit :

Je suis bien comme toi ! Outre le fait qu'on apprend à coder en codant, je déteste aussi utiliser un truc que je ne comprends pas...
Et il y a le plaisir à coder, à partir de rien pour concevoir et mener à bien un truc qui fonctionne...
Je plussoie Luc à ce sujet aussi ;)
C'est typique de la mentalité de bricoleur: on ne cesse jamais de se demander comment fonctionnent les trucs, comment résoudre un problème, comment améliorer... Et quelle fierté quand on a fini ce à quoi on a passé des heures et qu'on se dit: j'ai réussi !
Comme le dit toutefois SebSauvage en substance sur son shaarli: la réinvention est productive pédagogiquement, mais ce n'est pas forcément une optimisation des ressources de développement en team ^^

gravatar
Julien et Nel a dit :

@Bronco :

En effet la logique sera différente si on fait un travail seul à 100 % ou si c'est un travail d'équipe (ou d'un autre).

La logique de réinventer la roue est adapter, si on fait le truc seul ... sinon c'est un beau et immense bordel.

On peut réinventer la roue à plusieurs, mais il faut qu'il y est qu'une seule personne qui dirige le code.

gravatar
Julien et Nel a dit :

@Sbgodin :

Et pourquoi se limiter à une seule vision du libre ? Si on veut autoriser la modification d'un script, mais interdire une utilisation commerciale, le projet ne reste t-il pas libre d'être modifier ? Une petite partie des libristes deviennent aussi ridicule que la logique de fermeture des personnes qui sont pour le propriétaire. La vision libre de RMS et de ses potes n'est pas libre, la liberté c'est encore de vouloir faire ce qu'on veut et comme on veut. En quoi un truc serait plus libre qu'un autre, parce qu'une minorité on définit leur concept de libre ... je trouve ça pour ma part ridicule. Si un gars veut partager librement son travail, mais aussi y combiner une logique du gratuit ... là tu as des as des gens qui vont venir le faire chier en lui disant que gratuit et libre est incompatible. Si le gars veut partager librement son produit, mais interdire sa modification ou sa commercialisation, ce n'est pas son problème. Le libre comme certains le conçoivent n'est pas libre, mais aussi fermé que le propriétaire.

gravatar
Le Hollandais Volant a dit :

@Luc : parfois, certains projets/codes n’ont plus besoin d’être maintenus, s’ils sont finis, après tout…
Perso j’ai repris Blogotext fin 2009/début2010. Le code n’avait plus changé depuis 2006…

@Gordon : oui, ce n’est pas faux.
Mais parfois certains projets sont si énormes qu’il est bien plus simple de refaire un truc. Quand je parle de Leed dans l’article, c’est exactement ça avec ses ancêtres : TT-RSS et RSS-Lounge. Le dernier fait 12 Mo. Leed en fait même pas 1.

Je ne dénigre pas le travail de la communauté non plus, mais pour moi il y a une limite à partir de laquelle une lib/prog est intégrable tel quel ou pas. Mon plus bel exemple est là : http://lehollandaisvolant.net/?d=2012/07/25/18/35/32-script-denvoi-de-fichiers-minimaliste-dragndrop-pure-js
Je cherchais un code pour du drag'n'drop de fichiers. Il existait déjà un soft (encore d’Idlman), mais trop lourd pour moi. J’ai préféré reprendre une lib basique de quelques Ko et l’intégrer dans Blogotext dans une page que j’ai reconstruite tout autour.

@Guenhwyvar : oui, je sais, ça marche pas ce truc. Pourtant j’ai tout viré dans mon .htaccess, et ça persiste rester… Je ne sais pas d’où ça vient :/.


@Julien et Nel :


Il est important de ne pas vouloir réinventer la roue, mais il est importer aussi de savoir comment marche une roue, comment on fabrique celle-ci et ce que c'est une roue en gros.



+1

J’ai souvent débuté des scripts (comme Linx), sans jamais les finir. Je me suis amusé à les faire, à créer un truc qui marche, mais après je n’ai plus eu de plaisir à le maintenir : ça marchait, il me suffisait. J’avais réussis mon pari de faire quelque chose que je voulais, voilà, c’est tout.
Et après y’a Shaarli qui est sorti, beaucoup plus complet et puissant, raison de plus d’arrêter.
Mais ça n’a pas été une perte de temps : c’était mon premier projet où j’ai commencé à partir de rien du tout, et j’ai appris à utiliser SQLite dessus. SQLite qui m’a ensuite servi dans Blogotext.

@Bronco : pour une entreprise, c’est sûr que si tout le monde faisait une "roue" de son côté, ça serais pas top… Mais à l’école, on doit bien commencer par faire une roue pour faire la voiture ensuite.
Il faut donc séparer l’apprentissage et la production : une fois qu’on sait correctement écrire un programme, on a beaucoup moins de mal à lire les projets des autres, et donc à se greffer dessus.
Je n’ai eu presque aucun mal à retoucher VerdaProxy pour l’améliorer et pondre OranjeProxy, qui n’est toujours pas parfait, mais bon.

@Julien et Nel : je n’ai jamais vraiment bossé sur un projet à plusieurs. J’ai déjà soumis des patchs à des projets des autres, repris des projets, analysé, mais jamais bossé ensemble. Je fais tout ça pour moi même, non de façon professionnel, ce qui explique peut-être tout ça.
Ceci dit, la première chose que je fais quand je reprend un projet, c’est refaire toute l’indentation à ma façon :D.

@Julien et Nel : on doit pouvoir être libre de faire dans le proprio je trouve aussi.
Je n’aime pas la licence GPL : elle interdit des choses, comme le fait de vouloir garder pour soi ses propre améliorations ! Aucun de mes projets ne sont sous GPL. Je préfère utiliser la licence WTFPL. C’est peut-être une licence bidon, humoristique, mais perso elle dit bien ce qu’elle dit : rule 0 : do WTF you want to with this program.
Pour les créateurs de la licence, c’est peut-être du "je m’en fout" mais perso je le vois comme une licence la plus ouverte, libre, permissive possible.

gravatar
Sbgodin a dit :

@Julien et Nel :

Et pourquoi se limiter à une seule vision du libre ?
Il n'y en a pas qu'une seule. Nous sommes donc d'accord.

Si on veut autoriser la modification d'un script, mais interdire une utilisation commerciale, le projet ne reste t-il pas libre d'être modifier ?
Je suis d'accord. C'est pour ça que je contribue à Blogotext. Je reste libre de diverger le code, de le publier. Les patchs remontent à Timo. C'est moins bien que parfait, mais ça marche.

Une petite partie des libristes deviennent aussi ridicule (...)
Merci de ne pas verser dans l'attaque personnelle ou de généraliser à partir d'un cas particulier qu'on ne maîtrise pas.

Si un gars veut partager librement son travail, mais aussi y combiner une logique du gratuit
Là, je suis encore d'accord. On met la licence qu'on veut. Il reste à voir si c'est bien adapté aux usages. Blogotext me convient, malgré la clause NonComercial, parce que toutes façons il vise un usage personnel. Par contre, les projets avec un NonDerivative : non. Autant pour une œuvre d'art, je peux comprendre. Ça flirte avec les droits patrimoniaux, genre ne pas dénaturer une œuvre. Autant pour un programme, c'est délétère. Comment contribuer à un projet ND ? Ça veut dire que si j'utilise/publie le programme je dois d'abord filer mes modifications au mainteneur, attendre une parution pour ensuite pouvoir les utiliser ? Ayant choisit Blogotext, je serai mal si je devais attendre que Timo fasse ses parutions. Je suis bien mieux à faire mon chemin, lui balancer mes patchs (et une vue imprenable sur le source) et bénéficier de son travail à la prochaine parution. Impossible à faire avec Leed, qui est en NonDerivative.

Effectivement, on peut contacter l'auteur pour avoir la permission. Et on espère qu'il sera de bonne humeur. Mais il se passe quoi si l'auteur est injoignable ?

là tu as des as des gens qui vont venir le faire chier en lui disant que gratuit et libre est incompatible
Il faut leur dire que c'est faux. Ce sont deux notions orthogonales.

Si le gars veut partager librement son produit, mais interdire sa modification ou sa commercialisation, ce n'est pas son problème.
Je ne comprends pas. Comment partager librement tout en interdisant les modifications (la redistribution) ou sa commercialisation (faire du pognon) ?

Le libre comme certains le conçoivent n'est pas libre, mais aussi fermé que le propriétaire.
Tu peux préciser ?

gravatar
Julien et Nel a dit :

@Sbgodin :

Comment contribuer à un projet ND ?

Personnellement, je n'ai jamais utilisé le ND quand j'utilisais les CC. Dans ce cas de figure, je pense que la personne souhaite juste adhérer à une politique de partage. Je pense que même une licence CC BY-NC-ND serait mieux qu'une fermeture totale. Le simple fait d'autoriser le partage légalement, c'est déjà bien. C'est déjà mieux qu'un "tous droits réservés" qui lui indique que le partage n'est pas autorisé. Ça permet d'adapter la notion de piratage à partage ... je pense que c'est déjà un pas.

Je ne comprends pas. Comment partager librement tout en interdisant les modifications (la redistribution) ou sa commercialisation (faire du pognon) ?

Dans cette logique, on autorise uniquement de partager le produit. En gros, l'auteur ne désire pas qu'il y est des travaux dérivés et que son produit reste gratuit. Il ne pourra de toute manière pas vraiment empêcher les modifications, mais il indique juste dans ce cas là qu'il préfère que le projet reste sur une seule branche. Pour ma part, ce n'est pas ma vision. Mais chacun peut laisser tel ou tel droits qu'il désire laisser aux personnes, la CC conviendra souvent à beaucoup de personnes. Même si pour ma part, je n'utilise pas la CC ... mais une petite licence maison "LLDGP1" qui ressemble moyennement à la "CC-BY-NC" .

Tu peux préciser ?

Ce que je reproche à certains libristes et bien souvent à ceux qui utilisent la GPL ou les fans de RMS, c'est leur fermeture d'esprit. Ces personnes ont souvent une fermeture, se considère comme l'élite du libre et comme la définition du libre. Pour moi, le libre est de laisser au développeur le choix d'offrir tel ou tel liberté. En gros pour moi, les licences de libres diffusions et les licences libres, c'est des licences libres dans les deux cas. J'ai par exemple essayer de proposer mon script sur Framasoft et j'utilisais à l'époque une licence CC-BY-NC. Cependant quand je vois les articles de Framablog qui juge que la CC BY NC n'est pas libre, car elle utilise le NC ... on comprend rapidement que les libristes extrémistes sont assez chiant, car si on veut combiner libre et gratuit, alors ceci ne sera pas possible. En gros, on arrive à une politique de fermeture où la personne doit avoir la même définition du libre pour que son projet soit considérer libre.

gravatar
Sbgodin a dit :

@Julien et Nel :

Comment contribuer à un projet ND ?
(...)

Cool :-) On est d'accord là-dessus.

Ce que je reproche à certains libristes et bien souvent à ceux qui utilisent la GPL ou les fans de RMS, c'est leur fermeture d'esprit. Ces personnes ont souvent une fermeture, se considère comme l'élite du libre et comme la définition du libre.
Historiquement, c'est bien par là que le Libre a commencé. Je me souviens de l'époque des freeware/shareware. Il fallait se méfier des freeware par défaut, on ne savait pas ce qui s'y cachait. Depuis, les gentils développeurs (loyaux envers l'utilisateur) sont passés sur des licences permissives -- libres y compris. Du coup, les trucs propriétaires qui restent sont assez systématiquement des pièges à cons.

Pour moi, le libre est de laisser au développeur le choix d'offrir tel ou tel liberté. (...)
C'est là que ça coince, côté définition ! La GPL restreint les droits du développeur (de garder pour soi, en gros) au profit de l'utilisateur. Au contraire, la BSD fait la réciproque : tout pour le développeur.

Cependant quand je vois les articles de Framablog qui juge que la CC BY NC n'est pas libre, car elle utilise le NC
Selon la définition GPL-ienne du libre, la clause NonCommercial fait que ce n'est pas libre. La NC restreint la liberté d'utilisation.

on comprend rapidement que les libristes extrémistes sont assez chiant, car si on veut combiner libre et gratuit, alors ceci ne sera pas possible.
Je ne comprends pas. Par exemple Blogotext a la NC, héritée du projet d'avant. Mais il pourrait ne pas l'avoir, et même être en GPLv3+. C'est gratuit. Et ce serait libre. Bon, là tout de suite, c'est gratuit et pas libre (façon FSF).

En gros, on arrive à une politique de fermeture où la personne doit avoir la même définition du libre pour que son projet soit considérer libre.
Le cadre juridique définissant logiciel libre ne permet pas l'approximation. Ensuite, il faut voir en quoi c'est gênant que le projet ne soit pas considéré libre par des gens qu'on n'aime pas. Pour la fermeture, effectivement c'est un pré-requis du libre. Sans cette fermeture, le monde des logiciels retourne à la fable du renard libre dans le poulailler libre.

gravatar
Goldfish a dit :

Juste une remarque, parce qu'il me semble, ou du moins ai-je l'impression que je suis plutôt aux antipodes de ce qui a été concernant cette méthodologie consistant à partir from scratch.

Pour avoir fait beaucoup de développement web (personnel, pour une entreprise, ou pour des projets communautaires). Je peux simplement dire qu'un framework aide vraiment beaucoup et sur plusieurs aspects que l'on a n'a pas en partant de zéro.
D'abord un framework propose souvent des bibliothèques de fonctions vraiment pratique (par exemple les paginateurs) mais c'est aussi des méthodes d'architectures de fonctionnement relativement évoluées surtout concernant le développement web. Utiliser une architecture MVC fait gagner beaucoup de temps. C'est aussi un gage de sécurité, les données POST et GET sont souvent automatiquement sécurisées. Un ORM déjà implémenté est lui aussi un gain de temps conséquent sur pour ce qui concerne les requêtes simples.
Deuxièmement, l'application produite est aussi plus facilement maintenable par soi ou par d'autres puisque reposant sur un socle d'idées commun et largement documenté.
Évidemment, il peut y avoir des limitations dû à une méconnaissance du framework ou une limitation qu'il est souvent possible de dépasser parfois peut-être en créant un nouveau module certes. Mais le gain adjacent est conséquent.

Pour donner une idée, j'ai du récemment créer un logiciel de gestion de stocks de produits référencés par catégories. Et bien avec un framework web django cela m'a uniquement pris deux heures de mon temps (temps sur lequel j'ai pris au moins la moitié à lire de la doc), alors que si j'étais parti de zéro, j'en aurais sûrement eu pour plus d'une journée pour un résultat pas forcément des plus heureux.

Tu parles aussi de l'aspect qu'on apprend en refaisant les choses, mais la chose est aussi vraie lorsqu'on utilise les choses. On se pose en effet des questions sur comment en interne cela se passe (notamment pourquoi cela produit tel résultat et pas un autre). Et puis par moment il faut aussi s'avouer que le fonctionnement d'un certain module n'est pas forcément intéressant on s'intéresse juste au fait qu'il fonctionne et qu'il produise le résultat voulu.

Enfin, développer des applications par soi-même n'est pas forcément pas toujours heureux, il est possible qu'une faille de sécurité qu'on avait pas aperçu s'y glisse, ou qu'un bogue s'y cache. Bref, se reposer sur des choses déjà existantes est souvent gage d'un développement plus rapide et plus sécuritaire.

gravatar
Le Hollandais Volant a dit :

@Goldfish : ouais, mais bon : tu dis toi même que tu peux coder normalement en plus de savoir te servir d’un framework.
C’est comme l’utilisation d’un WYSIWYG pour le HTML : on peut toujours utiliser un logiciel WYSIWG, mais c’est bien pratique de savoir coder aussi. Pratique, sinon même indispensable.

Mon article se base sur ça aussi, d’un côté (en dehors des préférences de chacun) : les connaissances de bases sont nécessaires pour pouvoir faire choses plus grandes, loin des bases.

Perso je ne me sert pas de framework ni de WYSIWYG, juste un éditeur de texte de base. Mais c’est surtout une habitude, et pour le moment ça me va…


Et puis par moment il faut aussi s'avouer que le fonctionnement d'un certain module n'est pas forcément intéressant on s'intéresse juste au fait qu'il fonctionne et qu'il produise le résultat voulu.


Pas pour moi perso. J’ai toujours cette curiosité et cette envie de savoir.
Après, si on des années de métier derrière ou si c’est la 500e lib qu’on utilise dans le projet, ok, je comprend, mais j’en suis pas encore là. (par contre, la doc, elle est toujours là :)).

gravatar
Guenhwyvar a dit :

Partir de zéro, c'est bien la première fois. Je l'ai fait pour mon site, j'ai changé d'avis plusieurs fois, j'ai passé des heures à coder des trucs que finalement j'ai décidé de refaire au dernier moment, je me suis planté plein de fois, j'ai parfois fait des trucs immondes parce que je voyais pas comment faire autrement, etc. J'ai pris des « mauvaises » habitudes, aussi : j'ai des fonctions utilisant global dans tous les sens, j'ai très souvent du mélange PHP et HTML (pour avoir un formulaire et son traitement sur la même page, par exemple)… Et ça me gêne pas. Pire, j'aime faire comme ça, et je trouve ça bien plus pratique. J'arrive pas à comprendre l'architecture MVC. Je vois à peu près l'idée théorique, mais en pratique ça m'échappe totalement, ça m'embrouille plus qu'autre chose. Alors je m'en sers pas. Et c'est ça la différence principale : quand je code un truc, j'ai pas de contraintes. Si j'ai pas envie de faire quelque chose aujourd'hui, je le ferai demain. Ou la semaine prochaine. Ou dans un mois. Y'a pas que la finalité qui est importante, y'a la manière dont je le fais. Faut que ça me plaise (ce qui n'empêche pas les prises de tête, évidemment ^^)
C'est forcément complètement différent d'un projet professionnel ou semi-professionnel, qui doit être fait le plus rapidement possible (le temps, c'est de l'argent !), de manière la plus optimisée et la moins personnelle possible (que n'importe qui derrière puisse relire, comprendre et modifier)… Donc frameworks, donc design patterns, etc.

Alors forcément, j'ai beaucoup de trucs pas terribles, le travail sur les images par exemple, notamment la génération d'un aperçu à partir d'une image : j'en ai à deux endroits, avec quelques détails qui changent, et à chaque fois, c'est codé en dur. Grosse duplication de code. Et je vais devoir rajouter une troisième variante sous peu. Il va être temps de repenser complètement le système si je veux éviter de refaire un gros copier-coller. C'est sûr, ça aurait été tellement plus simple et beaucoup plus pratique d'utiliser une classe publique gérant ça dès le début (j'ai pas d'exemple en tête, mais ça doit sûrement se trouver très facilement). Mais tellement moins intéressant. Ça aurait été bien plus rapide, aussi, mais c'est pas grave : j'ai tout mon temps.

gravatar
Le Hollandais Volant a dit :

@Guenhwyvar : marrant : pour blogotext, la prochaine MAJ aura l’interface entre PHP et SQL complètement refait.
Les fonctions de tri ont été refaites.
Pourquoi ? Parce que je voulais essayer soit l’un soit l’autre, et mon choix de l’époque ne me convenait plus : pas assez souple, peu élégant et compliqué à mettre à jour.

gravatar
Goldfish a dit :


Perso je ne me sert pas de framework ni de WYSIWYG, juste un éditeur de texte de base. Mais c’est surtout une habitude, et pour le moment ça me va…



Hum, là tu dois confondre IDE et framework. Pour le développement, je suis un peu plus brute niveau éditeur. J'utilise vim (en console linux) qui permet de modifier vraiment très rapidement mon code, c'est un éditeur de texte basé principalement sur une gamme de raccourcis assez conséquente (je dois à peine en connaître 5%). Il a une coloration syntaxique assez magnifique. Le point pour lequel je le trouve vraiment fantastique c'est surtout la possibilité d'avoir 6 fichiers affichés en même temps en scindant verticalement et horizontalement l'affichage (sérieusement ça sert à quoi d'avoir des fichiers qui dépassent 80 colonnes à part se tuer les yeux ?).

Justement le point principal d'un framework c'est de fournir des moyens pour éviter de dupliquer son code. Il est vrai qu'il y a un petit temps d'apprentissage qui se dépasse vite avec un bon tutoriel. Mais les gains au final sont vraiment très appréciables. Et je ne parle pas uniquement pour des projets professionnels ou semi-pro, même pour des trucs perso je préfère l'utiliser.

Mélanger PHP et HTML ? Maintenant je te dirais beurk, enfin dans une certaine proportion. Auparavant je faisais ça quand j'avais pas connaissances ni des frameworks ni des templates/parsers. Les includes à répétitions en php ça me tue (surtout quand tu sais pas d'où proviennes les variables).

Enfin, je commence à comprendre à quel point php est très loin d'être un langage d'avenir. Malheureusement il sera pas déprécié avant longtemps du fait de sa grande popularité.
Pourquoi pas un langage d'avenir ? Trop verbeux, beaucoup trop de fonctions dans le domaine local. Par défaut pas de compilation des fichiers donc plus lent.

gravatar
Julien et Nel a dit :

@Goldfish :

Pour l'éditeur de code, j'utilisais Gedit ou Sublime sur linux. Sur Windows, j'utilise Notepad ++ pour coder.

En ce qui me concerne, je sais qu'un framework permet d'avoir un code meilleur. Mais je connais de nombreuses personnes qui utilisent des frameworks et qui se retrouvent bloquer, car elles n'ont pas apprit à se débrouiller en dehors d'un code déjà fabriquer. Il suffit qu'il y est une petite chose qui ne soit pas documenté ou fournit avec le framework pour que la personne ne sache plus quoi faire. Je pense qu'il faut savoir faire des erreurs pour éviter de les faire ou apprendre, sinon on ne connait que la logique qu'on veut bien nous donner. Et puis trop de projet utilise les mêmes trucs ...

Un exemple : Voir du Bootstrap partout, c'est assez chiant ... si tout le monde utilise les mêmes trucs, où est l'originalité de leur produit ? Si tout le monde fait la même chose avec les mêmes libs, les mêmes frameworks ... où est cette beauté qui fait la différence dans les projets ? Avec cette logique de vouloir développer avec les mêmes trucs ou que pour les mêmes trucs, on se retrouve avec des codeurs qui ne cherche plus à faire de la différence. Et c'est ainsi que Webkit est entrain de foutre en l'air "Presto" parce que les gens veulent tous utiliser Webkit.

En même temps, on mélange forcément de l'html et du php. Après, il est plus propre de mettre le code html dans un echo en Php.

Je pense que le fait que le code ne peut pas être compiler que c'est une force pour ma part. Ceci permet de partager plus facilement son code et ça évite d'avoir du code qu'on ne peut pas analyser directement. En gros, le php permet de favorise une logique de partage, enfin c'est juste mon avis. Après, c'est un des langages que j'ai compris le plus facilement.

gravatar
Goldfish a dit :


Pour l'éditeur de code, j'utilisais Gedit ou Sublime sur linux. Sur Windows, j'utilise Notepad ++ pour coder.



Notepadd++, bon choix, mais trop lent à mon goût pour certaines opérations. Un des intérêts de vim, c'est quand tu veux supprimer jusqu'à tel caractère, si tu veux déplacer une ligne, 2 ou 3 suffit de trois touches pour arriver à ces fins. C'est bien simple quand je code, j'utilise plus ma souris (et c'est un gain de temps appréciable).


Il suffit qu'il y est une petite chose qui ne soit pas documenté ou fournit avec le framework pour que la personne ne sache plus quoi faire.[/code]
Sur les projets bien documentés et bien construits ce devrait pas être un souci. Les moteurs de recherches peuvent aider ainsi que les communautés.

Je suis d'accord sur le bootstrap. Le but c'est pas justement de faire les mêmes choses, aucun intérêt, mais au contraire de gagner en rapidité de développement. Peut-être qu'en même temps je suis à l'extrême à vouloir développer 4-5 projets web en même temps (et pas des moindres), mais le but au bout d'un moment c'est quand même d'être efficace. Et quand au bout d'un moment tu te rends compte que tu écris la même chose, le même système, que tu commences à dupliquer ton code tu sens qu'il y a un souci quelque part. Pour te dire dès que je copie/colle du code, j'ai l'impression de trahir quelque chose et, automatiquement je sais que ça va être une cause d'erreur, que dès que je vais vouloir modifier quelque chose ça va boguer.

Et puis bon bootstrap pour moi c'est qu'une interface, il y a largement de quoi être inventif par ailleurs. Utiliser un framework te force pas à avoir une même interface, loin de là.


[quote]Et c'est ainsi que Webkit est entrain de foutre en l'air "Presto" parce que les gens veulent tous utiliser Webkit.



Never heard of it.


En même temps, on mélange forcément de l'html et du php.


Pas forcément avec un gestionnaire de template (cf plus bas avec du python).



Après, il est plus propre de mettre le code html dans un echo en Php.


Euh, pas de cet avis-là. Pour moi je dirais ni l'un ni l'autre, et même j'aurai un penchant pour l'autre méthode. A quoi ça sert d'utiliser echo pour renvoyer du texte ? À rien. Le but principal d'echo c'est avant tout de servir d'interface entre PHP et HTML en renvoyant la valeur des variables php. Rien d'autre.
En plus les echo sont lourds à écrire et pas forcément analysés par la coloration syntaxique.


Et puis MVC c'est relativement pratique, un exemple sous django qui permet d'afficher une liste de galeries.
Là un controlleur (visiblement tes balises code gèrent pas les espaces, tant pis pas d'indentation :D) :

def galerie(request, pk):
# Une requête SQL (si si).
galerie = Galerie.objects.get(pk=pk)
return render(request, 'galeries/galerie.html', {
'galerie': galerie,
})


Et là la vue correspondante :
{% extends 'skeleton.html' %}

{% block content %}
<div class="galeries">
<h1>Galeries</h1>
{% for galerie in galeries %}
<div class="galerie">
<a href="/{{ galerie.url }}">
{% if galerie.photo_set.all %}
{% with galerie.photo_set.all|first as image %}
{% load utils %}
<img src="/{{ image.fichier.url|resize:200 }}" alt="{{ image.description }}" title="{{ image.description }}" />
{% endwith %}
{% endif %}
<span>{{ galerie.titre }}</span>
</a>
</div>
{% endfor %}
</div>
<hr class="clearboth" />
{% endblock %}


Pas analyser directement ? Django est compilé mais tu n'as accès qu'au code source, bon tu as les fichiers compilés à côté en développement mais en production tout est clean. Le nombre de dépôts git de modules django/python sont d'ailleurs assez impressionnant.

gravatar
Guenhwyvar a dit :

Gedit pour ma part, avec quelques plugins qui vont bien (autocomplétion, navigateur en panneau latéral, pliage de code, commentateur, etc.)


@Goldfish :


sérieusement ça sert à quoi d'avoir des fichiers qui dépassent 80 colonnes à part se tuer les yeux ?


En même temps, j'ai regardé, j'ai ~95 colonnes de visible sur mon écran (petit écran, 1 024 × 768, et j'ai l'habitude de laisser le navigateur latéral de Gedit tout le temps ouvert…), donc une ligne trop large retournera à la ligne assez facilement (et avec mon tab équivalent à 5 espaces, ça arrive souvent).



Justement le point principal d'un framework c'est de fournir des moyens pour éviter de dupliquer son code. Il est vrai qu'il y a un petit temps d'apprentissage qui se dépasse vite avec un bon tutoriel. Mais les gains au final sont vraiment très appréciables.


J'en avais regardé 2-3 pour voir (dont Django), mais à chaque fois le système me paraissait… bizarre. Je crois volontiers que ça simplifie les choses au final, mais pour moi ça les complexifie tellement avant…



Les includes à répétitions en php ça me tue (surtout quand tu sais pas d'où proviennes les variables).


Si je me souviens bien, à un endroit, j'ai une de balise <h3> qui est commencée et ouverte sur une page, complétée dans un include, et terminée et fermée dans un autre include imbriqué :D (Oui, j'avoue, là j'avais peut-être un peu exagéré…)
Mais sinon, globalement, mes includes sont assez simples : index inclut config, qui lui-même inclut divers réglages, etc. Le passage le plus extrème, c'est en gros index qui inclut le menu admin qui inclut un premier sous-menu qui inclut un second sous-menu qui inclut un troisième sous-menu qui inclut la page admin, mais même là, la progression reste logique (même si on dirait pas comme ça).
J'ai tout fait au plus simple et au plus logique pour moi, vraiment, mais par contre c'est absolument pas fait pour être relu par quelqu'un d'autre, donc je comprends qu'à première vue mon organisation puisse paraître particulière.

gravatar
Le Hollandais Volant a dit :

@Guenhwyvar :


Gedit pour ma part, avec quelques plugins qui vont bien (autocomplétion, navigateur en panneau latéral, pliage de code, commentateur, etc.)



Pliage de code ?
Tu l’as trouvé où ce plugin :O ?

gravatar
baba a dit :

Je code/recode également des projets (enfin, je code et je m'aperçois que des projets similaires ont vu le jour).

J'ai créé par exemple une lib JS assez puissante, que je continue d'améliorer depuis 5 ans.

Si je la compare à Jquery, elle est mieux documentée dans le code (pas photo !), plus courte, plus rapide (j'ai fait des tests sur la création et la manipulation de 1000 objets en temps réel) et plus à jour par rapport aux nouveautés (je viens par exemple d'y ajouter une gestion des media queries très intéressante car elle permet de déplacer des blocs HTML selon la résolution, même si la fonction n'est pas gérée par le navigateur).
Elle a ces avantages mais aussi des inconvénients : elle est plus stricte, plus proche du JS car c'est mon souhait de ne pas utiliser les wrapper.


La difficulté : être toujours en veille afin d'avoir ce qu'il y a de mieux et de ne pas se sentir dépassé.

gravatar
bohwaz a dit :

Si tu veux reprendre Leeds c'est pas gagné : le code est pas libre du tout (By-NC-ND de mémoire), une des raisons qui a fait que je veux commencer mon propre agrégateur (en plus de la volonté d'intégrer un archivage automatique, un peu comme y intégrer autoblog quoi !).

Sinon je suis entièrement d'accord sur le fond, réinventer la roue permet de comprendre plein de choses. Et souvent il m'est plus simple de juste coder un truc de zéro que reprendre une solution toute faite que je devrais modifier pour correspondre à mes besoins en jurant toutes les 2 minutes parce que le code est mal foutu (souvent c'est codé avec les pieds) ou qu'il faut apprendre un nouveau framework alambiqué. Par exemple j'ai codé mon propre carnet d'adresse (avec synchro avec mon téléphone et impression en PDF pour avoir une copie dans mon portefeuille), mon propre agenda (synchronisé aussi, avec anniversaires et rappels par sms), etc etc. J'en arrive à un point où je vais commencer mon propre framework (avec une différence cruciale par rapport aux autres : chaque module/classe peut être utilisé indépendamment, et tout est léger et ne se base que sur ce qui est dispo dans PHP en standard).

gravatar
Sbgodin a dit :

Pour ma part j'utilise beaucoup vim et kate pour le traitement de texte. Les outils en ligne de commande viennent ensuite (grep, find, sed, awk, etc.) qui ont la grande qualité qu'on peut les rappeler si on veut refaire un traitement similaire. J'utilise Mercurial pour gérer le versionnage et la publication.

J'ai déjà tâté du mastodonte comme Eclipse. Comme tout clickodrome qui se respecte, il n'y a jamais toutes les fonctions, toutes les façons de faire. Et donc, fatalement une partie faite en ligne de commande. Du coup, je n'ai pas trouvé de gros outil assez utile pour compenser les passages incessant commande/clickodrome. Kate a été, pour le moment, le meilleur compromis trouvé.

gravatar
qwerty a dit :

@Julien et Nel : "En gros, l'auteur ne désire pas qu'il y est des travaux dérivés et que son produit reste gratuit. Il ne pourra de toute manière pas vraiment empêcher les modifications, mais il indique juste dans ce cas là qu'il préfère que le projet reste sur une seule branche." Je n'empêche pas la modification, juste la redistribution. En effet, quitte à corriger les bugs, autant les faire au même endroits. Et je souhaite aussi les versions style softonic avec pleines de toolbars.

gravatar
Sbgodin a dit :

@qwerty : Personne ne peut pour le moment empêcher les modifications, quelque soit la licence si le code source est disponible. Et je pourrai même rendre public ses travaux sur un site web sans publier les sources modifiées. Mais le projet n'est pas pérenne sous cette forme. Quel intérêt de proposer les patchs à l'auteur s'il n'a pas la menace de la divergence (fork) ? Il se passera quoi quand, imaginons, j'enverrai un correctif de sécurité critique mais qui va ennuyer à mort l'auteur ? S'il ne le publie pas, alors je devrai diffuser la version modifiée et enfreindre la licence. Miam...

gravatar
Hoy a dit :

@qwerty : Il en reste au moins une via la recherche par tag ;p, du XSS via les cookies (dans form_comment.php), l'admin (ajout/modif de news) et le champ id du form_comment.php (lors d'un accès direct), code injection via l'install et la modif de la config, et enfin du CSRF partout dans l'admin. Yolo ! (PS: il manque aussi une ) dans le maj.php, ligne 35)

gravatar
qwerty a dit :

@Hoy : Merci de ton aide. Par contre, je pense que ça serai plus pratique qu'on discute par email ! Donne tu l'autorisation à Timo de te contacter ?

gravatar
baba a dit :

@Goldfish : Mon dieu, quelle horreur Django ! Inventer un langage pour des modèles HTML ?!
Ca me fait penser à Smarty...

Personnellement, j'utilise aussi des modèles HTML (dans des fichiers), mais aucun langage inventé pour l'occasion, les balises HTML standards suffisent.
Ainsi, mon code reste 100% HTML et est valide !

gravatar
yolo a dit :

@baba : Tu fais exprès d'être idiot, rassure moi?
Les codes des vues sont compilés dans un du html pur, le "langage" créé pour l'occasion ne sert qu'à afficher des variables.

gravatar
Idleman a dit :

@Timo Merci pour le ptit coup de pub :)

@Sbgodin @bohwaz @others Leedest passé sous licence by-nc, il est donc maintenant possible de créer des dérivés sans ma permission explicite (bien que ça serait sympa de m'avertir c'est toujours agréable de suivre/relayer les dérivés de son projet :p)

gravatar
Le Hollandais Volant a dit :

@Idleman : Héhé, je t’aurais demandé de toute façon si je pouvais utiliser Leed comme base dans mon futur script et à terme dans BT.
(ouais, chuis têtu)

Et je t’avertirais en temps et en heure, mais pas tout de suite… J’ai d’autres soucis avec Apache qui se lance mal sous Fedora^^"

gravatar
Idleman a dit :

@Timo Aucun soucis avec toi le script est entre de bonnes mains :), tiens moi au courant de tes projets ça m’intéresse :)

Les commentaires sont fermés pour cet article