Etat des lieux : mes projets actuels
Par -Alexandre LEGOUT aka LAlex- le mardi, décembre 9 2003, 11:06 - Divers - Lien permanent
En ce moment, les mises à jours manquent un peu. Tout d'abord parce que j'ai du travail, qui ne concerne pas beaucoup de le développement web, et donc m'empêchent de vous faire part de nouveaux avancements. ![]()
Je suis également en phase d'étude pour aider au re-développement du site Fast2Reply, ainsi que 2-3 projets en PHP. J'aimerais par exemple rendre le moteur de ce blog plus générique afin de le distribuer, et de créer des webservices au moyen de modules PEAR afin de créer une interface Flash qui paratagerait les mêmes données. ![]()
Je compte également ouvrir un autre pseudo-blog, plus personnel, et plus axé sur le débat online et la publication de textes, de quelque nature qu'ils soient : société, politique, art, etc ... Ca serait une sorte de mix entre un blog un forum ... Les contributions au débat seraient modérées par l'instigateur de la discussion. ![]()
J'aimerais également utiliser ce système ici, pour de la création de code ActionScript optimisé, et issu de la contribution de plusieurs codeurs comme c'est deja arrivé dans quelques posts. Cela permettrait de proposer quelques bibliothèques de classes utilitaires ou de prototypes les plus performants et rigoureux possibles. ![]()
Sans compter le moteur de tilegame auquel je continue de réfléchir avant de poursuivre son développement. ![]()
Commentaires
Rien que ca ... ca t'arrive de dormir aussi ? lol
Sinon, pour les codes optimisés, comment tu vas faire ? Moi par exemple, j'commence à avoir pas mal de dépendence dans mes Class
le rangement des Class est personnel, mais ca influe directement dans l'écriture
Faudrait peut etre réfléchir sur une arborescence optimale et universelle ...
(neo, à la recherche d'Utopia)
Ben disons que le tout est de ne pas modifier l'existant, et de bien notifier les dépendances entre les classes .... 8| Tout cela peut être géré par une base de données, qui va gérer les relations entre classes, avec leurs versions !
Ensuite, pour ce qui est de l'arborescence optimale, elle n'existe pas vraiment. Moi j'utilise des packages com.lalex.utils.MaClasse par exemple ... Le com est assez présent dans beaucoup de langages, ca on peut l'imposer pour participer au site.
Moi je patauge dans la panade, je sais pas comment vous faits, je crois que actuelement je suis capable en théorie de créer se qe je veux en flash. Mais au moment d'ecrire ou de structurer mes class, je bloc complet. On pourrait comparer ca l'engoisse de la feuille blanche. J'en dors plus, je mets des semaines à ecrire des choses qui me prennait 1heure avant, tout ca prsque je me dit que si je faisais comme ca ca serait plus logique ou plus optimisé, au final ca ressemble à rien et je laisse tomber. Comment vous fait ???
Ce qu'on/vous pourrait faire c'est creer des librairies commons.
pour les noms de package, plutot ke de faire des com.lalex.utils ou autre package perso, un truc commun flashforum par exemepl serait bien. Histoire de dire que tu es pas tout seul a contribuer sur ces librairies.
(juste au passage, les nom en com c pour commercial)
net.flashforum.commons.string pour les utilitaires liees aux String ...
Au fait ca serait qqch en OpenSource ?
Pour les dependences, suffit de bien les visualiser.
En theorie, les libs commons ne devraient dependre de rien. Et les applis plus evolues s'appuient sur des blocs existant (les libs commons par exemple). Eviter les dependances cyclique entre libs, a la limite entre classes ca peut encore aller.
Pour les versions gerees avec la BD, ca me semble pas evident
nen Java ya un truc ki fait ca (et d'autres choses:)) ca s'apelle maven, ca permet d'avoir une gestion niveau projet, de bien visualiser toutes les dependences de ton projet, et tout ca gere avec des versions. (http://maven.apache.org)
Ah, si vous voulez des exmples de commons, ya ca en Java : http://jakarta.apache.org/commons
Je parle ici d'un site internet, qui permet a chacun de poster ses classes (donc leur code, donc en OpenSource), qui, pourquoi pas, dépendent d'autres classes publiées sur le même site. Le but est que les visiteurs de ce site puissent proposer des améliorations de l'implémentation proposée.La base de données servirait uniquement à stoquer ces classes, mais absolument pas à leur utilisation. Elles peuvent aussi permettre de générer dynamiquement des fichier .zip ou .tar qui contiendrait l'ensemble des fichier .as avec leur arborescence afin de pouvoir les utiliser tout de suite.
Par contre, je me demande s'il existe des moyens de faire en sorte que le code exposé, puis amélioré, soit automatiquement régi par une licence OpenSource, de type GPL ? :o
Les noms de packages peuvent être vus a la convenance de leurs auteurs. C'est vrai que le com est pour commercial, mais les URL en .com sont aussi pour commercial justement, et moi je ne vend rien, malgré mon URL !!!
C'est juste que c'est trés fréquemment utilisé !
On peut aussi prévoir d'imposer un package de base du type net.lenomdusite.LaClasse ... 8|
Pour la création rapide de blogs, tu as phpsmarty qui existe déjà
Tout ces trucs de licences, c'est à l'auteuer de s'en occuper ...
Le principe c'est de mettre un gros commentaires en entete du fichier as qui precise la licence regissant le code source et qui donne aussi le nom de contributeur initial (histoire de savoir qui est le gars qui a fournit l'idee et l'implementation en premier ...)
Je me demande si c'est interressant un site fourre tout de classes en AS ! Ya deja ce genre de chose dans des sites web dont je me rapelle plus le nom.
Je prefere voir des librairies directement utilisable (vraiment des libs, pas juste des classes as en code source) que des classes posées par ci par la sans reel effort de conception.
Enfin c'est mon avis perso
Pas taper !!!
Mais c'est vrai que c'est plus facile de poser des classes utilitaires toutes seules sans grosses dependences que des vrais librairies de classes utilisables correctement sans avoir a plonger dans le code ...
Je ne sais pas trop ce que tu veux lalex, mais moi ce que j'avais imaginé à la sortie de MX 2004, c'était une arborescence commune. Des gens proposes des Class, ou des mises à jours de Class et quelqu'un valide. Un truc qui marche où il suffit de télécharger d'un coup un Zip avec toutes l'arborescence.
pourkoi se contenter d'une arborescence aors qu'on pourrait directement proposer une librairie sous forme d'extension ou de composant ?
c pas plus pratik ?
neo >> C'est bien ce dont je parlais plus haut : une génération automatique d'un .zip contenant une classe et son arborscence, avec eventuellement les classes dont elle dépend.
Par contre, ce que dit Kalysto est pas bête : si on a moyen de créer une extension .mxp plutôt qu'un .zip, c'est encore mieux !
Le problème est de savoir si on peut générer facilement une extension compatible avec l'Extension Manager facilement avec PHP ... 8|
Kaly >> Concernant les classes "sans réel effort de conception", il faut s'attendre à ce que tout site ouvert à tous puisse contenir des classes moins bien implémentées que d'autres ... c'est justement là qu'intervient la possibilité pour d'autres internautes de proposer des améliorations au code initial, qui pourront être validées ou non par l'auteur d'origine. :o
Concernant les commentaires, je pense que selon les améliorations validées ou non, les commentaires seront automatiquement rajoutés dans le code source de la classe. Concernant la licence, je me demandais s'il n'était pas possible de dire que tout code source déposé sur le site est automatiquement régi par une licence OpenSource, qui protegerait les différents intervenants. Voire, ce que je préfère, une licence non-commerciale ...
A ce que j'ai vu, les nouveaux composants sont des fichiers zip
donc on devrait pouvoir les recreer automatiquement.
C'est vrai ke sur un site ouvert limite cooperatif, yaura forcement des classes moins bien faites que d'autres.
Mais en fait, ce qui est interressant de faire, ce n'est pas juste de faire une classe (meme si c'est bien si elle est optimisée :)) mais de faire une librairie offrant des fonctionnalites interressantes.
Bref pour moi, une optique 'creation de librairies' est plus interressante et plus productive et aussi plus originale qu'une optique 'faire une jolie classe toute seule'
ya des tas de licences opensource ici :
http://www.gnu.org/licenses/licenses.html
les plus connues et/ou utilisées sont : LGPL, GPL
LGPL indique que le produit peut etre utilisé dans un autre produit commercial alors que GPL ca doit rester en GPL.
en passant,
attention a GPL et LGPL, c'est pas pratique du tout pour des gens qui veullent utiliser ce genre de sources dans des projets commerciaux
une license BSD ou MIT c'est mieux amha
ensuite pour les libs AS, regardez les projet comme layr51, ASL sur sourceforge etc...
oui ok c'est bien beau mais ca va null part
pour avoir des libs de bonne qualité il faut au moins 1 personne de plutot bon niveau qui gere ca et pousse le projet au cul (comme un certain linus torvald avec linux), cad quelqu'un qui dirige le dev des libs meme si il les ecrit pas forcément toutes.
en gros ce que je veux dire, c est que avoir des libs AS auquel tout le monde et n importe qui peut participer c'est pas forcément bien, ca peut donner des trucs comme:
- libs inutiles
- libs de mauvaises qualités (layer51)
- projet avorté (ASL)
etc...
et kalysto a tout a fait raison, ce type de libs ne doit pas etre concu en dehors d'un but global
apres il est tres dur de bien doser les limiation d'une lib si celle-ci veut etre tres generale
Exactement, faut surtout pas que ca soit un fourre tout.
Et pourquoi ne faudrait-il pas que ce soit un fourre-tout ? 8O Layer51 a les défauts qu'il a, mais on n'y trouve pas que du code minable magré tout ... 8|
Et l'idée de collaboration entre codeurs qui ne se connaissent pas pour développer un ensemble de fonctionnalités est assez séduisant moi je trouve, si l'auteur d'origine peut contrôler la direction que prend son code ... Je veux en fait reproduire ce qui s'est passé sur un post du blog pour la classe StringUtils : http://www.lalex.com/blog/detail.php?id=93. Ca s'est bien passé, et ca a servi à produire un code plus optimisé.
Je ne veux pas réserver ce type de travail collaboratif à une "pseudo-élite". Comment faire le tri ? A moins d'un code trés clairement minable, il est diificile de donner à un code le droit d'être la ou pas.
Et si un code n'est pas au top, c'est justement aux bons codeurs d'apporter leur savoir pour l'amélioration de celui-ci
Il ne faut pas oublier le coté formateur d'une amélioration apportée par un autre codeur, si elle est associée à une explication ...
Il faut malgré tout maintenir un minimum de contrôle sur la qualité du code fourni et/ou des justifications des améliorations, mais je revendique le coté fourre-tout modéré de ce type d'application. 
C'est bien d'être un bon programmeur comme vous qui avez commenté ce post, mais il faut aussi penser à transmettre ...
euh ouais mais code fourre-tout si ca tourne au chaos ca sert strictement a rien.
alors prenons le cas de cette classe string, et je vais lister ce qui manque meme si l'intention est bonne et sympa:
- pas de convention de nommage
- pas de versioning
- pas de bug tracking
- pas de refactoring du code pour le simplifier et isoler au mieux les fonctionnalités
- pas de license
- ca part en couille vers une class MD5 qui n a rien avoir avec des fonctionnalités de string
- pas de testing automatique du code pour prouver que le code est bien implémenté et reagit comme il est prevu de reagir
bref des que cette classe va etre utilisée, elle va peut etre etre modifiée/evoluée mais on ne saura pas trop où et comment, elle va etre utilisée avec d autres classe et ca va peut etre creer des bugs qu il n y avait pas quand la class etait utilisée seule ou dans un autre contexte,
ou meme un jour on va utiliser un code d'une appli ou le gars dit qu il utilise cette lib, mais on saura pas quelle version de la lib il utilise ou si il l a modifie et on pensera que la lib fonctionne comme celle qu on a en cours mais si ca se trouve aura des comportement differents..etc...etc...
bref le chaos
maintenant tu prends 10 libs/class fait de cette maniere avec 3 fois plus de code dedans et tu t imagines le cauchemard pour la maintenance du code qui je le rappelle occupe 60% du temps de dev, creer le code c est facile le truc dur c est de le maintenir!
Merci zwetan d'être toujours aussi agréable !!! :?
Ca fait toujours autant plaisir de te lire. De toutes facons, étant donné que je t'ai rarement entendu parler de quelque chose de positif dans les rares endroits ou j'ai pu te lire, je finis par ne même plus le prendre mal. ^^
Si tu avais un peu suivi, tu te serais certainement rendu compte que la partie MD5 n'a pas été intégrée à la verison suivante de la classe ... 8|
Et puis, que valent mes petites connaissances d'autodidacte face à l'étendue de ton savoir ? :o
c'est vrai, moi je demande qu'à apprendre
chai pas c'est quoi le refactoring, le bug tracking ou encore le testing automatique
comment qu'on écrit une class ?
j'aimerai bien savoir avant d'en faire d'autres ...
encore une fois mon but n'est pas d'etre désagréable gratuitement faut arreter de se sentir persecuter.
et idem je suis un autodidacte, la seule différence peut-etre c'est que je l'etais deja avant que flash commence a prendre la tournure qu'il prends.
Donc on va reprendre les points 1 a 1 et expliquer pourquoi:
- convention de nommage:
http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html
donc dans une optique où plusieurs personnes d'horizons, d'expereinces, etc.. différentes viennent écrire du code en commun, il faut leur donner ua minimum un "style" d'écriture commun cad une convention de nommage.
Pas parce que c'est la regle mais parce que d'autres que nous dans de bien plus gros projets avec de bien plus grosses énormes libs sont arrivés a cette conclusion : sans convention de nommage c'est le bordel.
- le versioning
http://java.sun.com/products/jdk/1.2/docs/guide/versioning/spec/VersioningSpecification.html
tout comme un plugin flash v6.0.21.0 il a pas exactement le meme potentiel qu'un plugin v6.0.79.0, aavec des libs de code c'est pareil.
Deja quand 1 lib de code est produite par 1 personne le versioning est important, mais si en plus 1 lib de code peut etre modifiée par plusieurs personnes ...ou pire si plusieurs libs de code sont modifiées par plusieurs personnes c peut vraiment devenir dur de savoir quelle lib peut faire quoi ou quelle lib est stable ou possede telle feature ou tel bug etc...
- le bug tracking
"Painless Bug Tracking"
http://www.joelonsoftware.com/articles/fog0000000029.html
je vais pas refaire tous les arguments ici, c'est simple si le but est de developper un truc un tant soi peu serieux, memem seul, le faire sans bug tracking c'est completement fou.
- le refactoring de code:
http://www.artima.com/intv/refactor.html
c'est ca qui fera toute la difference entre une librairie de bonne qualité et une autre bien mais pas top.
Mais ca c'est un classique du dev OO, jamais mais jamais le design OO peut tomber pile poil comme il faut des le depart, on sera obligé de toute maniere de repenser/reecrire certains choses, meme voir changer des concepts/design complet pour pleinsde raisons differentes: fausse piste du debut par manquede connaissance ou d'info sur le probleme a résoudre, theorie sur un sujet qui ne se verifie pas, etc...
- la license:
c'est TRES important et encore plus dans un projet à plusieurs.
qu'est ce qui se passe si quelqu'un file du code qu'il a developpé pendant ses heures de boulot ?
qu'est ce qui se passe si celui qui demarre le projet ne s'en occupe plus mais que d'autres augmentent énormément les libs ?
si j'utilise tel lib est ce que je serais obligé d'ouvir mon code hors-libs aux autres a cause de la license ?
etc etc...
- le testing automatique du code
je ne parle meme pas de unit testing ala XP là, je parle simplement des tests de base qui sont obligatoires pour ce genre de lib, surtout si celle-ci a tendance a grossir au point de ne plus pouvoir etre maintenu par une seule personne.
parce que sans faire ca il va arriver un point où le code sera devenu tros gros pour pouvoir lire dedans facilement et voir du 1er coup quoi influence quoi, quoi est dependant de quoi...
si je modifie String.ltrim est ce que ca va changer le comportement d'une autre lib qui utilise ltrim de facon intensive ?
Bah oui comme le but de ces libs est d'etre reutilisable ailleurs, il faut verifier que on peut faire evoluer cette(ses) lib(s) sans que ca casse ce qu'on essaye de construire, donc il faut tester.
C'est des pratiques et des conseils sur lesquels on tombe des qu'on touche a du JAVA/C++/.NET et comment construire des libs et/ou des logiciels avec eux, moi j'essayais juste de repasser l'info ici.
Si le but c'est de vraiment faire des libs qui soient utilisées il faut je pense se baser sur ces bonnes pratiques qui ont plus que deja faites leurs preuves dans d'autres langages, mais ce n'est que mon avis et mon choix perso.
Hello
Merci pour les liens 

Je pense que ce projet reste avant tout un grand projet de discussion entre codeurs... qui leur permettra d'apprendre et d'évoluer 

En tout cas j'aurais appris plein de truc grâce à toi zwetan
Il est clair qu'il ne faut pas faire n'importe quoi. Mais faut pas non plus que cela devienne un exercice complexe, il faut avant tout s'amuser à faire évoluer l'ActionScript je pense ... et dans ce cas on ne peut pas dire que lorsqu'on voit se diffuser des tonnes de "prototypes" sur le net cela soit une bonne chose... mais malgré tout cela laisse à réfléchir, cela permet d'élargir ses connaissances algorithimique etc... Il est difficile d'obtenir de chacun un travail aussi rigoureux comme tu le décris au dessus car pour moi une bonne partie des développeurs en ActionScript le sont à "l'instinct".. cad qu'ils ne sont pas forcément en train de réfléchir à tout cela quand ils codent.
Par contre il est clair qu'apprendre à mieux faire c'est toujours une bonne chose... et en montant un projet pareil je pense que naturellement les protagonistes de celui ci tendront vers toutes les méthodes et règles décrites dans ton message
Faut pas par contre casser le rêve
bye
moi j'ai un autre lien
http://www.design-up.com/design/principesoo/index.html
Sinon, moi je marche à l'instinct aussi, mais c'était pas dérangeant avant sur MX.
Maintenant, il y a les Class ...
Ca me donne envie de faire partager et faire évoluer mes scripts.
Avec tous les liens donnés, je ne vais pas forcément comprendre (snif)
Ca existe pas du code commenté qui montre comment il faut faire ?
Quand j'apprend un nouveau truc, il me faut un exemple, sinon je pige pas ...
Ah, voila quelque chose de constructif et surtout de trés instructif !
En fait, ce qui est dommage chez toi, c'est que tu sais énormément de choses, mais tu sais pas les amener de manière sympa ! :roll:
J'ai l'intention de gérer beaucoup des aspects dont tu parles dans le moteur de ce site :
- Versioning
- Vérification des dépendances entre classes, quelles méthodes sont utilisées par quelles classes, etc... Et surtout, quelle classe utilise quelle version d'un autre classe. Le parseur AS2 que j'ai commencé est fait dans cette optique.
- Bug tracking
- Le refactoring sera à l'initiative des codeurs proposant des améliorations. L'auteur original du code pourra ou non le valider. L'essentiel (je pense) étant que les signatures des méthodes restent les mêmes !
Certains problèmes auront plus de mal à être gérés automatiquement, comme les conventions de nommages, qui doivent être établies avant le début du codage. Etant donné que le point de départ sera ici une classe "deja faite", il faudra sûrement se conformer aux conventions du codeur original. A moins d'instaurer des conventions pour tout le site, mais de toutes facons, c'est quasiment impossible de le vérifier automatiquement.
A moins que des modérateurs s'en chargent, mais c'est carrément ultra-chiant pour eux... :?
Et concernant la licence, je demandais justement si je peux faire en sorte que tout le code déposé sur un tel site soit automatiquement sous le coup d'une licence précise (GPL, LGPL, BSD, etc...), même si c'est développé au boulot ou dans n'importe quel contexte ? :o
alors d'une le coté sympa, je sais pas les gens preferent vraiment le coté leche-cul "wow genial ton projet" (mais par contre tu vas te demerder tout seul) ???...
c'est ce qui s'est passsé avec les fameuses libs ASL sur sourceforge...30+ dev, tous tres sympa
ok, elle est où la lib ?
qui a participé ?
c'est l'exemple type de bon projet avorté parce que justement il n'y avait pas de "regles" de depart sur lesquelles tout le monde pouvait s'appuyer.
ne pas forcément etre tout le temps d'accord avec les gens, meme si ils ont la meme passion que soi, ce n'est pas forcément ne pas etre sympa
vous connaissez l'expression "been there done that", bah niveau lib c'est mon cas, sauf que je l'ai appris de la maniere difficile...
alors quelques regles ou maniere de fonctionner de base:
- le code ne respecte pas la convention, c'est simple il n'est pas valide donc on l'accepte pas.
c'est au developpeur qui fournit le code de respecter la convention.
- le code ne passe pas les tests de validation, on le jette ou on l'accepte pas.
l'ideal etant de faire ca a base de unit testing comme avec Junit en JAVA,
et là pour des class AS2 plus vraiment d'excuses as2unit (meme sans code source fournit) devrait suffir a tester les class.
- pour le licensing,
une license BSD ou MIT convient tres bien
voir ici: http://www.opensource.org/licenses/
là:
http://www.opensource.org/licenses/bsd-license.php
et là:
http://www.opensource.org/licenses/mit-license.php
pour le code développé dans l'entreprise, un simple papier signé du patron qui autorise le developpeur a fournir sous tel license des codes suffit.
moyen de convaincre le patron: acces a des libres gratuites qui peuvent aider/ameliorer/accelerer le developpement de projets commerciaux.
apres il y aura toujours les patrons tres cons qui ne veullent que bénéficier du gratuit sans redonner un peu d'autre code gratuit en échange, bah eux ils feront toujours des applications de merde et tant pis pour eux.
marcher a l'instinct: oui c'est pas mal, mais ca a des limites...on s'en rend compte assez vite des que le projet devient un peu complexe.
apres pour les liens, c'est pas vraiment des choses hyper strict qui sont là pour faire chier le monde, suffit de vouloir un peu ameliorer ses habitudes on se rend compte tres vite de tout l'interet que cela a.
outils de bug tracking:
- l'ideal: fogbugz, pas gratuit mais vraiment tres tres bien pensé.
http://www.fogcreek.com/FogBUGZ/index.html
(note: ca vient de joel on software, c'est lui qui dev cela, il sait vraiment de quoi il parle)
possibilité de le tester en ligne 30j gratuitement, le prix n'est pas dément non plus.
- com center: outil gratuit, assez simple a mettre en place
http://www.grafxsoftware.com/product.php/COMCENTER_1.1/20/
pour "Ca existe pas du code commenté qui montre comment il faut faire ?"
attendre la suite des codign sessions sur
news://flashcodeurs.dyndns.org/flashcodeurs
où de mon mieux je vais esssayer d'expliquer ce genre de logique de construction de code, mais bon c'est a prendre avec un bemol: ce n'est qu'un exemple de ce que je pense est le mieux a faire et ce sera en AS1, mais je pense que ca peut montrer et ou apprendre 2/3 trucs facilement.
note: design-up est une excellente ressource en francais concernant l'extreme programming et les tests unitaires
apres tout le monde n'est peut etre pas pret a faire de l'XP
je conseille aussi l'excellent wiki de c2.com en anglais:
http://c2.com/cgi/wiki?ExtremeProgrammingRoadmap
et je finirai juste sur un truc,
MM essaye de vous faire croire car c'est tout dans son interet marketing que faire du code OO et utiliser des composants tout fait pour l'UI c'est facile
moi je dis non ce n'est pas facile,
ca demande de l'organisation, pas mal de temps de recherche et de tatonnement si on a pas l'habitude de ces choses là, et je dis pas ca en essayant de casser les reves de qui que ce soit, c'est simplement ue réalité et on ne s'en rend compte pas forcément tout de suite.
défaitiste ?
non, mais nos ainés (JAVA/C++/.NET) ont bcp de choses a nous apprendre et faut pas le squizzer aussi vite que ca, ca ne peut que nous aider.
ps: une implementation de Junit sera disponible en AS1 et en AS2, avec code commenté au mieux, et surtout en open source (mais pas du faux hein, du vrai avec les sources accessibles ,pas comme certains) d'ici quelques jours sur le NG (pas de link direct comem ca on ne m'accusera pas de detourner un blog pour faire de la pub)
Je ne veux absolument pas être brossé dans le sens du poil, qu'est-ce qui a pu ta faire croire ca ? 8O Et d'ailleurs je pense que le fait que tu continue de compléter ce post prouve ton interêt pour la chose.
Disons qu'il y a des manières d'amener les choses. Lister les problèmes d'un code sans expliquer les solutions, c'est non seulement pas sympa parce qu'il n'y apparaît qu'un coté bête et méchant du genre "Bouuuh ! C'est nul !", mais en plus c'est complètement inutile ... :?
Les informations que tu as données ensuite sont pertinentes, et auraient étés bienvenues dans ta première intervention concernant cette classe ...
Par contre, ce qui me gène un peu dans ton etat d'espit concernant ce projet, c'est que tu sembles voir ca comme un outil de développement professionnel, alors que ce n'est qu'un outil pour amateurs, plus ou moins éclairés, et qui se veut ouvert au plus grand nombre. Je voudrais faire en sort que les programmeurs de haut niveau puisse y trouver ce qu'ils veulent, mais également le rendre accessible aux moins expérimentés !
Le "mariage" de plusieurs niveaux ne peut se faire qu'au moyen de concessions. Peut-être pourra-t-on configurer des niveaux d'exigences pour la proposition d'améliorations ? :o
Quand au NG dont tu parles, tu peux en donner le lien : je ne prétend absolument pas détenir l'exclusivité des lecteurs qui parcourent ce blog, et si au contraire ils peuvent obtenir des ressources de qualité, j'en serais le plus heureux !
mais lalex, tu peux essayer de tester comment ca peut fonctionner avec des gens que tu connais
essayer de faire une lib commune et tout
au lieu de partir direct dans un grand développement et se rendre compte qu'il faut tout recommencer
neo >> Je me lance dans un grand développement d'abord parce que ca me plait !
Si aprés je peux faire en sorte d'ammener quelque chose d'utile aux autres, c'est encore mieux ! 
Pour ce qui est de la validation, il me suffira de rajouter des critères avant l'envoi d'un code : conventions de nommage, test unitaires, etc... Et quoi qu'il arrive, le reste est à faire malgré tout de la même manière.
Donc, je commence mon parseur d'AS2, ma stucture de base de données pour le stockage des classes, de leurs versions et de leurs dépendances. La phase de validation peut faire l'objet d'une étude indépendante de celle du moteur "de base" du site ...
Par contre, le choix de la licence reste à faire, et ca m'embête quand même pas mal de devoir faire des démarches du style faire signer un papier au patron, établir une relation avec l'entreprise elle-même etc ... :? Ca peut se faire, mais pas au départ je pense ... 8|
bon bah les gens sont tetus qd meme,
ok alors on va directement prendre un exemple concret
récemment en me baladant sur le blog de Eric Lippert
( http://blogs.gotdotnet.com/ericli/ ) j'ai vu un post en commentaire
de son entrée sur les multicast delegate, ca renvoyait ici : http://fm.dept-z.com
sur ce site donc un Thomas R. Trenka a pris le soin de penser et
construire toute une librairie "f(m)" pour ECMAscript en se basant sur le framework .NET
c'est assez intéressant à lire,
apparemment il y a mis du temps (de mars 2003 à maintenant)
et donc il y a un code source en LGPL
et je suis allé voir dedans pour voir comment il structurait tout ca.
Note: apparemement il veut produire un code portable sur tous
pleins d'environnment et meme ActionScript
f(m) Cores:
f(m) XHTML
f(m) SVG
f(m) ActionScript
f(m) ASP
etc...
tout ca ca a l'air d'etre tres bien, mais si on regarde dans le detail c'est casse gueulle.
Prenons le versioning par exemple:
les libs sont en BETA, mais la version indiquée est v1.0.0
humm alors si la verson que j'ai entre les mains c'est une
version beta en v1.0.0, quand il produira une version finale ce sera quoi ?
toujours une v1.0.0 ou une v1.0.1001 ?
ensuite je re-regarde le licensing et je vois:
for non-commercial use avec une license LGPL
ah bah oui ca c'est super utile, non seulement tout le code
que je pourrais ajouter/modifier a la lib devra automatiquement etre
en LGPL mais en plus je ne pourrai meme pas l'utiliser commercialement
(oui meme si c'est moi qui rajoute du code a sa lib)
bon ok, il n'a pas la meme vision opensource que moi ...
mais il a oublié un truc
pour qu'il y ait une communauté qui utilise et participe
a un code source et que donc ce code source grossisse et
devienne une sorte de "référence complete",
utiliser du LGPL en license non-commercial c'est tuer
l'utilisation de ces libs avant meme qu'elles ne soient diffusées.
bon passons a autre chose, le bug tracking et tests
juste en lisant le code je suis tombé sur plusieurs petits bugs du genre:
----------------------
Math.RadiansToDegrees = function(x) { return (angle * 180) / Math.PI ; } ;
----------------------
ce genre d'erreure n'arriverait pas si le code avait été testé
maintenant si je veux reporter l'erreur , humm comment faire ?
- repondre en commentaire dans le blog de e. lippert pour lui dire qu'il y a des bugs là , là et là ?
- lui envoyer un emails avec la liste des bugs ?
- si j'avais un blog, aller mettre la liste des bugs sur mon blog et lui envoyer un email pour lui dire d'aller voir la liste des bugs sur mon blog ?
- si c'etait un ancien pote de fac, l'appeler au tel pour lui lister les bugs a l'oral ?
etc etc...
bon ok j'exagere un peu
mais c'est pour bien faire comprendre
un truc : le bug tracking evitera des maux de tete pour
la gestion des bugs, 1 seul point d'entrée pour signaler un bug.
Maintenant c'est mon coté dev qui parle en regardant bien ce qui cloche dans son code source:
- il veut faire une lib portable, et donc aussi prendre en
compte ActionScript, et il utilise les regEx ?
dommage ...y en a pas en AS
- avec ce genre de code:
Date.prototype.GetDayOfWeekName = function() { return ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][this.getDay()] ; }
je me dis:
est-ce vraiment pertinant que ce genre de methode
soit une methode d'une instance de Date ?
une simple methode Statique aurait suffit,
de plus si des gens qui ne sont pas anglophones veullent
utiliser cette methode ils vont devoir modifier le code source
fournit pour renvoyer ["Lundi","Mardi",...] et là ca crée une bijection ...
et si apres il modifie le code de cette methode ?
je devrais surement remodifier ce que j'ai modifié dans la version
d'avant pour avoir tout ca dans ma langue et pas en anglais...
etc...etc...
(problemes tres concrets que l'on rencontre dans les librairies!)
- ou ce genre de code:
Object.CreateFromType = function(s, args) {
if (!Object.TypeExists(s)) {
throw new Exception("Object.CreateFromType('" + s + "'): Type does not exist.") ;
}
...
humm ca ca crée des dépendance aux textes d'erreurs dans le code,
un peu comme un magic number, si on veut le modifier il faudra
aller le retrouver dans le code, ce qui peut devenir a la longue tres long.
Bon alors je ne deteste pas ce gars hein, je trouve meme son projet
de lib plutot tres bien, mais je met ma main a couper que dans moins
d'un an sa lib n'aura pas bcp évoluée et que donc là comme il le
fait c'est une perte de temps.
Parce que si on regarde bien, pisser du code c'est assez facile,
mais s'assurer que ce code continue a vivre et a etre maintenu
euh c'est hachement bcp plus compliqué.
qu'est ce qu'il risque d'arriver:
- si il continue a ne pas faire de tests,
des petits bugs se rajoutent de temps en temps jusqu'a temps
que quelqu'un tombe dessus et que donc le code soit modifié.
Jusqu'au moment où le code sera tellement gros que on verra le bug,
on saura qu'il est bien là et qu'il fait tout planter...
mais on ne le trouvera pas facilement dans le code, donc il aura
ce genre de request de ses utilisateurs "cette fonction plante"
et lui il devra passer des heures a trouver où et pourquoi ca plante,
et en general il devra le faire tout seul a cause de son choix de license.
et ca si qlqn un jour tombe sur le bug, sinon le bug pourra etre là,
sans que personne jamais ne le remarque...
- si il continue a ne pas faire de bug tracking,
il va devoir faire le tri entre les emails, les commentaires
de blogs (du sien ou de ceux de ses cammarades de dev),
messages de forums web et autre newsgroups etc...
c'est long, tres chiant et fastidieux.
Il devra de la meme maniere faire le tri pour eviter,.
d'avoir des doublons de bug, ou de signaler des choses
qui ne sont pas des bugs mais que les gens voient comme des bugs,
mais aussi tomber sur des bugs qui peuvent ne pas etre résoluent
comme ca à moins de passer a une version bien plus superieure de
tout le systeme (passer d'une v1.0.0 a une v2.0.0 par ex) et donc il devra
signaler "oui tel bug je suis au courant mais je ne peux pas le resoudre maintenant,
vous devrez attendre la v2 de ...etc.."
sans meme parler des bugs facétieux qui des fois sont là et des fois sont pas là
qui pousse en general a recontacter la personne qui a signalé le bug pour lui
demander plus d'infos sur son system, ou la version de son plugin, de drivers ou autre....
si deja on arrive a recontacter la personne
bref, l'enfer total
et ca ca peut le pousser a soit re-écrire completement tout son systeme
ou meme d'abandonner son syteme en l'etat etc...
ce qui n'est pas tres utile a mon avis,
a part le coté éducatif de la chose qui le poussera
pour un prochain dev de se calibre a effectivement
tester ses libs, utiliser un bug tracker etc...
Juste pour dire que toutes ces choses dont je parle,
ce n'est pas pour décourager ton projet lalex,
c'est bien au contraire pour que ton projet ne tombe pas
à l'eau et parte plutot sur de meilleurs bases.
apres c'est toi qui voit ;).
Je suis d'accord avec zwetan, si on veut faire du code qui soit utilisable et non pas du code "juste comme ca" (meme optimise :)), il faut les moyens pour maintenir le code qui est censé évolué grace aux utilisateurs.
Et il est bon d'automatiser le plus de choses possibles, attendre que l'auteur du code donne son accord avant d'incorporer une modification me semble une perte de temps si on controle qui a le droit de modifier les sources directement ou non.
Dans les projets Java, il y a une base de committers, qui ont le droit de modifier les sources versionnées et des contributors, qui peuvent envoyer des ameliorations qui seront validées ou non par les committers. Comme ca, on a une equipe active qui a la possibilite de modifier le code en toute confiance, et des gens qui aident mais ki doivent passer par l'accord des committers.
Bref, il faut surtout definir le public d'un tel site en fait
si il est censé etre grand public, tu n'as pas besoin de ce genre d'outils mais il est risqué pour l'utilisateur de prendre ces libs qui sont instables (et les utilisateurs n'aiment pas les versions instables :)), pas facilement maintenale.
En fait c l'option "bac a sable"
on offre un espace qui permet a tous de faire ce qu'il veut (ou avec un minimum de controle).
Sinon, si on desire offrir a la communaute Flash des librairies e qualité qui soient vivantes et maintenues, il est necessaire de s'appuyer sur des outils qui nous aideront a realiser cet objectif.
Voila, avant de se lancer dans de grands debats, mettons d'abord au clair les objectifs de ce site ...
Kaly >> Tu as tout à fait raison. Et les objectifs de ce site, tel que je le vois en tout cas, et justement d'être grand public, comme je l'ai dit de nombreuses fois dans plusieurs commentaires !!!
Si ensuite, une section de ce site peut être spécialisée dans les développements plus "pros", en y rajoutant des outils de contrôles et des méthodes de travail plus strictes, je le ferai, mais ce n'est pas le but de la v1 en tout cas ... 8| ^^
D'ailleurs, une fois cette v1 faite, si des développeurs professionnels habitués à des développements collaboratifs de grande ampleur veulent m'aider comme vous l'avez fait dans ce post, c'est avec grand plaisir !!! Des connaissances et une expérience comme la tienne et celle de zwetan pourraient faire de ce projet un outil réellement utile pour ce type de développement, évidemment si cela vous interesse !!!
Mais pour l'instant, ce n'est pas d'actualité ... :°
hello,
Passionnant ce Blog
et Pkoi vous utilisez pas un serveur CVS. ?
En tout l'interet d'as2, a mon modeste avis, est sans doute contraindre un peu les choses pour rendre les devs plus propres.
G
G
Fil des commentaires de ce billet