How to contribute to Symfony for Symfony 2.5
Transcription
How to contribute to Symfony for Symfony 2.5
How to contribute to Symfony for Symfony 2.5 generated on September 27, 2014 How to contribute to Symfony (2.5) This work is licensed under the “Attribution-Share Alike 3.0 Unported” license (http://creativecommons.org/ licenses/by-sa/3.0/). You are free to share (to copy, distribute and transmit the work), and to remix (to adapt the work) under the following conditions: • Attribution: You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work). • Share Alike: If you alter, transform, or build upon this work, you may distribute the resulting work only under the same, similar or a compatible license. For any reuse or distribution, you must make clear to others the license terms of this work. The information in this book is distributed on an “as is” basis, without warranty. Although every precaution has been taken in the preparation of this work, neither the author(s) nor SensioLabs shall have any liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly by the information contained in this work. If you find typos or errors, feel free to report them by creating a ticket on the Symfony ticketing system (http://github.com/symfony/symfony-docs/issues). Based on tickets and users feedback, this book is continuously updated. Contents at a Glance Signaler un Bug ...................................................................................................................................4 Soumettre un correctif.........................................................................................................................5 Signaler une faille de sécurité.............................................................................................................11 Effectuer les tests Symfony2 ..............................................................................................................12 Standards syntaxiques.......................................................................................................................15 Conventions .....................................................................................................................................18 License Symfony2 .............................................................................................................................20 Participer à la Documentation ...........................................................................................................21 Format de Documentation ................................................................................................................24 Traductions ......................................................................................................................................28 License destinée à la documentation de Symfony2..............................................................................30 Processus de sortie des versions .........................................................................................................32 Réunions IRC ...................................................................................................................................35 Autres Ressources .............................................................................................................................37 PDF brought to you by generated on September 27, 2014 Contents at a Glance | iii Chapter 1 Signaler un Bug Quand vous trouvez un bug dans Symfony2, nous vous sommes reconnaissants de nous en avertir. Cela nous aide à rendre Symfony2 meilleur. Si vous pensez avoir trouvé une faille de sécurité, utilisez s'il vous plait cette procédure spécifique. Avant de soumettre un rapport de bug : • Vérifiez par deux fois la documentation1 officielle afin de vous assurer que vous utilisez le framework correctement. • Demander l'assistance d'utilisateurs de la liste de diffusion2, du forum3, ou du canal IRC4 #symfony (ou #symfony-fr) si vous n'êtes pas complètement certain que le comportement observé soit un bug. Si votre problème ressemble finalement à un bug, signalez-le en utilisant le tracker5 de bugs officiel en suivant ces règles simples : • Utilisez le champ titre pour clairement décrire le problème; • Décrivez les étapes nécessaires permettant de reproduire le bug en joignant si besoin de courts morceaux de code(fournir un test unitaire qui illustre le bug est une très bonne solution); • Donnez autant de détails que possible sur votre environnement (OS, version PHP, version Symfony, extensions actives, ...); • (optionnel) Joignez un patch. 1. http://symfony.com/doc/2.0/ 2. http://groups.google.com/group/symfony-users 3. http://forum.symfony-project.org/ 4. #contributing-code-irc:--irc.freenode.net-symfony 5. https://github.com/symfony/symfony/issues PDF brought to you by generated on September 27, 2014 Chapter 1: Signaler un Bug | 4 Chapter 2 Soumettre un correctif Les patches représentent la meilleure manière de fournir une correction de bug ou de proposer des améliorations à Symfony2. Step 1: Configurer votre environnement Installer les logiciels Avant de travailler sur Symfony2, installez un environnement avec les logiciels suivants : • Git; • PHP version 5.3.4 ou supérieur; • PHPUnit 3.6.4 ou supérieur. Configurer Git Spécifiez vos informations personnelles en définissant votre nom et une adresse email fonctionnelle : Listing 2-1 1 $ git config --global user.name "Votre nom" 2 $ git config --global user.email votre_email@exemple.com Si vous découvrez Git, il vous est vivement recommandé de lire l'excellent livre gratuit ProGit1. Si votre IDE crée les fichiers de configuration dans le répertoire de votre projet, vous pouvez utiliser le fichier global .gitignore (pour tout les projets) ou le fichier .git/info/exclude (par projet) pour les ignorer. Lisez la documentation Github2. 1. http://git-scm.com/book PDF brought to you by generated on September 27, 2014 Chapter 2: Soumettre un correctif | 5 Pour les utilisateurs Windows : en installant Git, l'installeur vous demandera quoi faire avec les fins de lignes, et vous suggérera de remplacer tout les saut de lignes (LF pour Line Feed) par des fins de lignes (CRLF pour Carriage Return Line Feed). Ce n'est pas la bonne configuration si vous souhaitez contribuer à Symfony ! Conserver la configuration par défaut est le meilleur choix à faire, puisque Git convertira vos sauts de ligne (Line Feed) conformément à ceux du dépôt. Si vous avez déjà installé Git, vous pouvez vérifier la valeur en tapant : Listing 2-2 1 $ git config core.autocrlf Cela retournera soit « false », « input » ou « true », « true » et « false » étant les mauvaises valeurs. Changez la en tapant : Listing 2-3 1 $ git config --global core.autocrlf input Remplacez --global par --local si vous ne voulez le changer que pour le dépôt actif. Récupérez le code source de Symfony Récupérez le code source de Symfony2 : • Créez un compte GitHub3 et authentifiez vous; • Faites un Fork du dépôt Symfony24 (cliquez sur le bouton « Fork »); • Après que le « hardcore » est terminé, clonez votre fork localement (cela créera un dossier symfony) : Listing 2-4 1 $ git clone git@github.com:USERNAME/symfony.git • Ajoutez le dépôt distant comme remote: Listing 2-5 1 $ cd symfony 2 $ git remote add upstream git://github.com/symfony/symfony.git Vérifiez que les tests sont validés Maintenant que Symfony2 est installé, vérifiez que tout les tests unitaires passent sur votre environnement comme cela est expliqué dans le document dédié. Step 2: Travaillez sur votre patch La License Avant de commencer, vous devez savoir que tout les patchs que vous soumettrez devront être sous license MIT, à moins de le spécifier clairement dans vos commits. 2. https://help.github.com/articles/ignoring-files 3. https://github.com/signup/free 4. https://github.com/symfony/symfony PDF brought to you by generated on September 27, 2014 Chapter 2: Soumettre un correctif | 6 Choisissez la bonne branche Avant de travailler sur un patch, vous devez déterminer sur quelle branche vous devez travailler. La branche devrait être basée sur la branche master si vous souhaitez ajouter une nouvelle fonctionnalité. Mais si vous voulez corriger un bug, utiliser la dernière version maintenue de Symfony dans laquelle le bug apparaît (par exemple 2.0). Toute correction de bug mergée sur les branches de maintenance sera mergée sur une branche plus récente de manière régulière. Par exemple, si vous proposez une correction pour la branche 2.0, elle sera également appliquée sur la branche master par notre équipe. Créez une nouvelle branche Chaque fois que vous voulez travailler sur un patch lié à un bug ou à une nouvelle fonctionnalité, créez une nouvelle branche : Listing 2-6 1 $ git checkout -b NOM_BRANCHE master Ou, si vous voulez proposer un correctif pour un bug de la branche 2.0, récupérez la branche 2.0 distante localement : Listing 2-7 1 $ git checkout -t origin/2.0 Puis créez une nouvelle branche basée sur la 2.0 pour travailler sur votre correctif : Listing 2-8 1 $ git checkout -b NOM_BRANCHE 2.0 Utilisez un nom explicite pour votre branche (ticket_XXX où XXX est le numéro du ticket est une bonne convention pour les corrections de bugs). La commande Checkout ci-dessus bascule automatiquement le code vers la branche nouvellement créée (vérifiez la branche sur laquelle vous vous trouvez avec git branch). Travaillez sur votre patch Travaillez sur le code autant que vous le désirez et commitez aussi souvent que vous le voulez mais gardez bien à l'esprit de : • Respecter les standards (utilisez git diff --check pour vérifier les espaces en bout de ligne, lisez aussi le conseil ci-dessous); • Ajouter des test unitaires afin de prouver que le bug est corrigé ou que la nouvelle fonctionnalité est opérationnelle; • Tâcher de ne pas casser la rétrocompatibilité (si c'est le cas, essayez de fournir une couche de compatibilité pour supporter l'ancienne version). Les patchs non rétrocompatibles ont moins de chance d'être mergés; • Faire des commits bien (utilisez le pouvoir du git rebase afin d'avoir un historique clair et logique); • Supprimer les commits non pertinents qui concernent les standards de code ou les corrections de fautes de frappe dans votre propre code; • Ne jamais corriger les standards de code dans le code existant car cela rend la revue de code plus difficile; PDF brought to you by generated on September 27, 2014 Chapter 2: Soumettre un correctif | 7 • Écrire des messages parlants pour chacun des commits (lisez le conseil ci-dessous). Vous pouvez vérifier les standards de code de votre patch grâce à script5 (source6): Listing 2-9 1 $ cd /path/to/symfony/src 2 $ php symfony-cs-fixer.phar fix . Symfony20Finder Un bon message de commit est composé d'un résumé succinct (la première ligne), suivi optionnellement par une ligne vide et par une description plus détaillée. Le résumé commence par le composant sur lequel vous êtes en train de travailler entre crochets ([DependencyInjection], [FrameworkBundle], ...). Utilisez un verbe (fixed ..., added ..., ...) pour commencer votre résumé et n'ajoutez pas de point à la fin. Préparez votre patch avant de le soumettre Si votre patch ne concerne pas une correction de bug (si vous ajoutez une nouvelle fonctionnalité ou si vous en modifiez une existante par exemple), il doit également inclure ce qui suit : • Une explication des changements effectués dans le(s) fichier(s) CHANGELOG correspondant(s); • Une explication sur comment mettre à jour une application existante dans le(s) fichier(s) UPGRADE correspondant(s), si vos changements ne sont pas rétrocompatibles. Step 3: Soumettez votre patch Lorsque vous pensez que votre patch est prêt à être envoyé, suivez les étapes suivantes. Mettez à jour votre patch avec rebase Avant de soumettre votre patch, mettez à jour votre branche (cela est nécessaire si vous avez mis du temp à terminer vos changements) : Listing 2-10 1 2 3 4 5 $ $ $ $ $ git git git git git checkout master fetch upstream merge upstream/master checkout NOM_BRANCHE rebase master Remplacez master par 2.0 si vous travaillez sur une correction de bug. Lorsque vous utilisez la commande rebase, vous pourriez avoir des conflits lors du merge. git status affichera les fichiers non mergés. Résolvez tout les conflits avant de continuer le rebase : Listing 2-11 5. http://cs.sensiolabs.org/get/php-cs-fixer.phar 6. https://github.com/fabpot/PHP-CS-Fixer PDF brought to you by generated on September 27, 2014 Chapter 2: Soumettre un correctif | 8 1 $ git add ... # ajouter les fichiers traités 2 $ git rebase --continue Vérifiez que tout les tests passent toujours et pushez votre branche sur le dépôt distant : Listing 2-12 1 $ git push origin NOM_BRANCHE Faites une Pull Request Vous pouvez maintenant faire une pull request sur le dépôt symfony/symfony. Assurez vous de faire pointer votre pull request vers symfony:2.0 si vous voulez que notre équipe récupère une correction de bug basée sur la branche 2.0. Pour faciliter le travail de l'équipe, incluez toujours le nom du composant modifié dans votre message de pull request, comme ceci : Listing 2-13 1 [Yaml] fixed something 2 [Form] [Validator] [FrameworkBundle] added something Veuillez utiliser le tag "[WIP]" dans le titre si la soumission n'est pas encore prête ou si les tests ne sont pas complet ou ne passent pas encore. La description de la Pull Request doit inclure la check list suivante afin de s'assurer que les contributions peuvent être relues et vérifiées sans échanges inutiles avec vous, et que vos contributions peuvent être inclues dans Symfony2 aussi vite que possible : Listing 2-14 1 2 3 4 5 6 7 8 Bug fix: [yes|no] Feature addition: [yes|no] Backwards compatibility break: [yes|no] Symfony2 tests pass: [yes|no] Fixes the following tickets: [liste de tickets corrigés séparés par une virgule] Todo: [liste de choses restantes à faire] License of the code: MIT Documentation PR: [Référence de la documentation de la PR s'il y en a] Un exemple de soumission pourrait ressembler à ça : Listing 2-15 1 2 3 4 5 6 7 8 Bug fix: no Feature addition: yes Backwards compatibility break: no Symfony2 tests pass: yes Fixes the following tickets: #12, #43 Todo: License of the code: MIT Documentation PR: symfony/symfony-docs#123 Dans la description de la Pull Request, donnez autant de détails que possible sur les changements (n'hésitez pas à donner des exemples de code pour illustrer vos propos). Si votre Pull Request concerne l'ajout ou la modification d'une fonctionnalité existante, expliquez les raisons de ce changement. La PDF brought to you by generated on September 27, 2014 Chapter 2: Soumettre un correctif | 9 description d'une Pull Request est utile lors de la revue de code est fait office de référence lorsque le code est mergé (la description de la Pull Request et tout les commentaires qui y sont associés font partie du message de commit du merge). En plus de cette Pull Request de « code », vous devez également envoyer une Pull Request au dépôt de la documentation7 pour mettre à jour la documentation si besoin. Retravaillez votre patch Selon les retours que vous aurez sur votre Pull Request, vous pourriez avoir besoin de retravailler votre patch. Avant de le re-soumettre, faites un rebase avec upstream/master ou upstream/2.0, ne mergez pas; et forcez le push vers origin : Listing 2-16 1 $ git rebase -f upstream/master 2 $ git push -f origin NOM_BRANCHE lorsque vous faites un push --force, spécifiez toujours explicitement le nom de la branche pour éviter de mettre la pagaille dans votre dépôt (--force dit à git que vous voulez vraiment traiter des choses, donc faites attention). Souvent, les modérateurs vous demanderont « d'aplanir » vos commits. Cela signifie que vous devrez fusionner plusieurs commits en un seul. Pour faire cela, utilisez la commande rebase : Listing 2-17 1 $ git rebase -i HEAD~3 2 $ git push -f origin NOM_BRANCHE Ici, le nombre 3 doit être égal au nombre de commit de votre branche. Après que vous avez tapé cette commande, un éditeur vous affichera une liste de commits : Listing 2-18 1 pick 1a31be6 premier commit 2 pick 7fc64b4 second commit 3 pick 7d33018 troisième commit Pour fusionner tous les commits dans le premier, supprimez le mot « pick » avant le second et les derniers commits, et remplacez le par le mot « squash » ou juste « s ». Quand vous enregistrez, git commencera le rebase et, quand il aura terminé, vous demandera de modifier le message de commit qui est, par défaut, une liste des messages de chaque commit. Lorsque vous aurez terminé, lancez la commande push. Pour que votre branche soit automatiquement testée, vous pouvez ajouter votre fork à travisci.org8. Identifiez vous simplement en utilisant votre compte github.com et appuyez le bouton pour activer les tests automatiques. Dans votre Pull Request, plutôt que de spécifier « Symfony2 tests pass: [yes|no] », vous pouvez faire un lien vers l'icône de statut travis-ci.org9. Pour plus de détails, lisez le Guide de démarrage travis-ci.org10. Cela peut être fait simplement en cliquant sur l'icone de la page de build de Travis. Sélectionnez votre branche puis copiez le contenu dans la description de la Pull Request. 7. https://github.com/symfony-fr/symfony-docs-fr 8. https://travis-ci.org/ 9. http://about.travis-ci.org/docs/user/status-images/ 10. http://about.travis-ci.org/docs/user/getting-started/ PDF brought to you by generated on September 27, 2014 Chapter 2: Soumettre un correctif | 10 Chapter 3 Signaler une faille de sécurité Vous avez trouvé une faille de sécurité dans Symfony2 ? N'utilisez pas la liste de diffusion ou le gestionnaire de bugs. Toutes les failles de sécurités doivent être transmises à security [at]symfonyproject.com. Les courriels envoyés à cette adresse sont retransmis à l'équipe centrale de Symfony à l'aide d'une liste de diffusion privée. Pour chaque rapport, nous essayons dans un premier temps de confirmer la vulnérabilité. Si elle est vérifiée, l'équipe centrale travaille sur une solution en suivant ces étapes : 1. Envoi d'un accusé de réception au rapporteur; 2. Travail sur un correctif; 3. Écriture d'un message décrivant la vulnérabilité, les utilisations possibles, et des moyens mis à disposition pour y pallier; 4. Application du correctif sur toutes les versions maintenues de Symfony; 5. Publication du message sur le blog officiel de Symfony. Tant que nous travaillons sur un correctif, s'il vous plait, ne révélez pas publiquement cette faille. PDF brought to you by generated on September 27, 2014 Chapter 3: Signaler une faille de sécurité | 11 Chapter 4 Effectuer les tests Symfony2 Avant de soumettre un patch pour inclusion, vous devrez lancer la suite de tests intégrée dans Symfony2 afin de vérifier que tout est fonctionnel. PHPUnit Afin de lancer la suite de tests Symfony2, installez1 PHPUnit 3.6.4 ou plus récent : Listing 4-1 1 $ pear config-set auto_discover 1 2 $ pear install pear.phpunit.de/PHPUnit Dépendances (facultatif) Pour lancer la suite de tests complète, incluant les tests dépendants de bibliothèques externes, Symfony2 doit pouvoir auto-charger celles-ci. Par défaut, elles sont auto-chargées depuis le répertoire vendor/ dans le dossier racine (vérifier autoload.php.dist). La suite de tests a besoin des bibliothèques tierces suivantes : • • • • Doctrine Swiftmailer Twig Monolog Pour les installer, utilisez Composer2: Étape 1: Récupérer Composer3 Listing 4-2 1 curl -s http://getcomposer.org/installer | php 1. http://www.phpunit.de/manual/current/fr/installation.html 2. http://getcomposer.org/ 3. http://getcomposer.org/ PDF brought to you by generated on September 27, 2014 Chapter 4: Effectuer les tests Symfony2 | 12 Assurez vous de télécharger composer.phar dans le même répertoire que celui où est situé le fichier composer.json. Étape 2: Installer les vendors Listing 4-3 1 $ php composer.phar --dev install Notez que le script peut prendre un certain temps avant de se terminer. Si vous n'avez pas curl d'installé, vous pouvez aussi simplement télécharger le fichier installer manuellement à http://getcomposer.org/installer4. Déplacer ce fichier dans votre projet puis lancez les commandes : Listing 4-4 1 $ php installer 2 $ php composer.phar --dev install Après installation, vous pouvez mettre à jour les vendors dans leur version la plus récente en lançant la commande suivante : Listing 4-5 1 $ php composer.phar --dev update Lancement Premièrement, mettez à jour les vendors (voir ci-dessus). Ensuite, lancez la suite de tests depuis la racine de Symfony2 à l'aide de la commande suivante : Listing 4-6 1 $ phpunit La sortie devrait afficher OK. Si ce n'est pas le cas, vous devez étudier les résultats afin de comprendre en quoi vos modifications ont altéré les résultats des tests. Si vous ne voulez tester qu'un seul composant, tapez son chemin après la commande phpunit, par exemple : Listing 4-7 1 $ phpunit src/Symfony/Component/Finder/ Lancez la suite de tests avant d'appliquer vos modifications afin de vérifier qu'ils fonctionnent sur votre configuration. 4. http://getcomposer.org/installer PDF brought to you by generated on September 27, 2014 Chapter 4: Effectuer les tests Symfony2 | 13 Couverture du code Si vous ajoutez de nouvelles fonctionnalités, vous devez également vérifier la couverture de code grâce à l'option coverage-html : Listing 4-8 1 $ phpunit --coverage-html=cov/ Vérifiez la couverture de code en ouvrant la page générée cov/index.html dans un navigateur web. La couverture de code ne fonctionne que si vous avez activé XDebug et installé toutes les dépendances. PDF brought to you by generated on September 27, 2014 Chapter 4: Effectuer les tests Symfony2 | 14 Chapter 5 Standards syntaxiques Quand vous contribuez au code source de Symfony2, vous devez suivre ses conventions de codage. Pour simplifier, la règle d'or est : Imiter le code existant de Symfony2. De nombreux bundles open-source et bibliothèques utilisés au sein de Symfony2 suivent les mêmes lignes de conduites, vous devez donc les suivre vous aussi. Rappelez vous que l'avantage principal d'un standard est que toutes les parties du code source résultant se ressemblent et semblent ainsi familières, ce n'est pas que telle technique soit plus lisible qu'une autre. Symfony suit les standards définis par les documents PSR-01, PSR-12 et PSR-23. Comme une image - ou un peu de code - est plus efficace qu'un long discours, voici un court exemple contenant les conventions les plus courantes décrites ci-dessous : Listing 5-1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Acme; class FooBar { const SOME_CONST = 42; private $fooBar; /** 1. https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md 2. https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-1-basic-coding-standard.md 3. https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md PDF brought to you by generated on September 27, 2014 Chapter 5: Standards syntaxiques | 15 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 } * @param string $dummy Some argument description */ public function __construct($dummy) { $this->fooBar = $this->transformText($dummy); } /** * @param string $dummy Some argument description * @param array $options * * @return string|null Transformed input */ private function transformText($dummy, array $options = array()) { $mergedOptions = array_merge($options, array( 'some_default' => 'values', )); if (true === $dummy) { return; } if ('string' === if ('values' $dummy = } else { $dummy = } } $dummy) { === $mergedOptions['some_default']) { substr($dummy, 0, 5); ucwords($dummy); return $dummy; } Structure • Ajoutez un espace après chaque virgule séparatrice; • Ajoutez un espace autour des opérateurs (==, &&, ...); • Ajoutez une ligne vide avant l'expression de retour return, à moins que le retour soit seul à l'intérieur du groupe parent (comme une expression if); • Utilisez les accolades pour indiquer les structures de contrôle quel que soit le nombre d'expressions qu'elles entourent. • Définissez une classe par fichier - cela ne s'applique pas à vos classes de helper privées qui ne sont pas appelées à être instanciée de l'extérieur. Elles ne sont pas concernées par le standard PSR-0; • Déclarez les propriétés de vos classes avant les méthodes; • Déclarez d'abord les méthodes publiques puis les protegées, et finalement les privées. Conventions de nommage • Utilisez le camelCase, pas de underscore, pour les variables, les noms de méthodes et de fonctions, et les arguments; • Utilisez les underscores pour les noms d'options et de paramètres; PDF brought to you by generated on September 27, 2014 Chapter 5: Standards syntaxiques | 16 • • • • Utilisez les espaces de nom pour toutes vos classes; Suffixez les interfaces avec Interface; Utilisez des caractères alphanumériques et des underscores pour les noms de fichier; Pensez à consulter la documentation Conventions pour obtenir des suggestions de nom. Documentation • Ajoutez les blocs PHPDoc pour toutes les classes, méthodes, et fonctions; • Omettez le tag @return si la méthode ne retourne rien; • Les annotations @package et @subpackage ne sont pas utilisées. Licence • Symfony est réalisé sous licence MIT, un bloc licence doit être présent au début de chaque fichier PHP, avant l'espace de nom. PDF brought to you by generated on September 27, 2014 Chapter 5: Standards syntaxiques | 17 Chapter 6 Conventions Le document Standards syntaxiques décrit les conventions syntaxiques définies pour les projets Symfony2 et les bundles internes ou tiers. Ce document décrit les standards et conventions utilisés dans le coeur du framework afin de lui apporter consistence et prédictibilité. Vous êtes encouragés à les suivre dans votre propre code, mais n'êtes pas obligé. Nom des Méthodes Quand un objet a une relation many « principale » avec d'autres « choses » (objets, paramètres, ...), les noms des méthodes sont normalisés : • • • • • • • • • • • • get() set() has() all() replace() remove() clear() isEmpty() add() register() count() keys() L'utilisation de ces méthodes est seulement autorisé quand il est certain que la relation décrite est la relation principale: • un CookieJar possède de nombreux objets Cookie; • un service Container a de nombreux services et de nombreux paramètres (comme le service est sa relation principale, la convention de nommage est utilisé pour cette relation); PDF brought to you by generated on September 27, 2014 Chapter 6: Conventions | 18 • une commande de Console a de nombreux arguments et de nombreuses options. Il n'existe pas de relation principale, la convention de nommage ne s'applique donc pas. Pour les relations où la convention de nommage ne s'applique pas, les méthodes suivantes doivent être utilisées (XXX est le nom de la chose en relation): Relation principale Autre Relations get() getXXX() set() setXXX() n/a replaceXXX() has() hasXXX() all() getXXXs() replace() setXXXs() remove() removeXXX() clear() clearXXX() isEmpty() isEmptyXXX() add() addXXX() register() registerXXX() count() countXXX() keys() n/a Notez que si « setXXX » et « replaceXXX » sont très similaires, il y a tout de même une différence notable : « setXXX » peut remplacer, ou ajouter de nouveaux éléments à une relation. Avec « replaceXXX », il est interdit d'ajouter des éléments, et une exception est lancée si l'élément identifié n'existe pas. PDF brought to you by generated on September 27, 2014 Chapter 6: Conventions | 19 Chapter 7 License Symfony2 Symfony2 est réalisé sous licence MIT. D'après Wikipedia1: "C'est une licence de logiciel libre et open source, non copyleft, permettant donc d'inclure des modifications sous d'autres licences, y compris non libres. La licence donne à toute personne recevant le logiciel le droit illimité de l'utiliser, le copier, le modifier, le fusionner, le publier, le distribuer, le vendre et de changer sa licence. La seule obligation est de mettre le nom des auteurs avec la notice de copyright." La License Copyright (c) 2004-2012 Fabien Potencier Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1. http://fr.wikipedia.org/wiki/MIT_License PDF brought to you by generated on September 27, 2014 Chapter 7: License Symfony2 | 20 Chapter 8 Participer à la Documentation La documentation est aussi importante que le code. Elle suit exactement les mêmes principes : DRY, testée, facile à maintenir, extensible, optimisée, et factorisée dans un soucis de concision. Contribuer Avant de contribuer, vous devez maîtriser le language markup rest utilisé dans la documentation. La documentation Symfony2 est hébergée sur GitHub: Listing 8-1 1 https://github.com/symfony/symfony-docs Si vous voulez soumettre un correctif, forkez1 le dépôt officiel sur GitHub et clonez votre dépot : Listing 8-2 1 $ git clone git://github.com/YOURUSERNAME/symfony-docs.git Conformément au code source de Symfony, le dépôt de la documentation est séparé en de multiples branches correspondant aux différentes versions de Symfony. La branche master est la branche de développement des versions à venir. A moins que vous ne documentiez une fonctionnalité nouvelle, vos changements doivent toujours être basés sur la branche 2.3 plutôt que sur la branche master. Pour effectuer ceci faites un checkout la branche 2.3 : Listing 8-3 1 $ git checkout 2.3 Ensuite, créez une branche dédiée pour vos changements : Listing 8-4 1 $ git checkout -b improving_foo_and_bar 1. https://help.github.com/articles/fork-a-repo PDF brought to you by generated on September 27, 2014 Chapter 8: Participer à la Documentation | 21 Vous pouvez maintenant appliquer vos changements directement à cette branche et les commiter. Ensuite, envoyez cette branche à votre dépôt et initiez une requête (pull request). Celle-ci devra être entre votre branche improving_foo_and_bar et la branche symfony-docs master. ../../_images/docs-pull-request.png Si vous avez basé vos changement sur la branche 2.3 vous devez changer la branche de base pour qu'elle soit 2.3 sur la page de prévisualisation : ../../_images/docs-pull-request-change-base.png Tout les changements faits sur la branche 2.3 seront mergés chaque semaine dans la branche 2.4 qui sera ensuite mergée sur la branche master pour la prochaine version. GitHub explique en détail les requêtes de mise à jour ou pull requests2 . La documentation Symfony2 est sous licence Creative Commons Attribution-Share Alike 3.0 Unported Licence. Soyez patient, vos changements peuvent mettre de 15 minutes à plusieurs jours après que l'équipe de documentation a mergé votre pull request avant d'être visibles sur le site symfony.com. Vous pouvez vérifier si vos changements ont introduit des erreurs de syntaxe en allant sur la page Erreurs de génération de la documentation3 (elle est mise à jour chaque nuit à 3h du matin quand le serveur génère la documentation). Standards Dans le but d'aider le lecteur autant que possible, et de créer des exemples de code qui semblent familiers, vous devriez suivre ces règles : • Le code suit les Standards de code Symfony ainsi que les Standards de code Twig4; • Chaque ligne devrait se terminer après le premier mot qui dépasse le 72ème caractère (ainsi, la plupart des lignes font environ 72 à 78 caractères); • Lorsque vous n'affichez pas une ou plusieurs lignes de code, vous placez ... en commentaire à l'endroit où les lignes sont censées se trouver. Ces commentaires sont : // ... (php), # ... (yaml/bash), {# ... #} (twig), <!-- ... --> (xml/html), ; ... (ini), ... (text); • Lorsque vous cachez une partie d'une ligne, par exemple une variable, placez ... (sans commentaire) à l'endroit où elle est censée être; • Description du code caché : (facultatif) Si vous cachez plusieurs lignes : la description peut être placée après les ... Si vous ne cachez qu'une partie de la ligne : la description peut être placée avant la ligne; • Si c'est utile, un bloc de code devrait commencer par un commentaire indiquant le nom du fichier qui contient le code. Ne mettez pas de ligne vide après ce commentaire, à moins que la prochaine ligne ne soit également un commentaire; • Vous devriez mettre un $ devant chaque ligne de commande; 2. https://help.github.com/articles/using-pull-requests 3. http://symfony.com/doc/build_errors 4. http://twig.sensiolabs.org/doc/coding_standards.html PDF brought to you by generated on September 27, 2014 Chapter 8: Participer à la Documentation | 22 • Le raccourci :: est préféré à .. code-block:: php pour commencer un block de PHP. Un exemple: Listing 8-5 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 // src/Foo/Bar.php // ... class Bar { // ... public function foo($bar) { // définit foo avec la valeur de bar $foo = ...; // ... vérifie si $bar a la bonne valeur return $foo->baz($bar, ...); } } • En Yaml vous devriez mettre un espace après { et avant } (ex { _controller: ... }), mais pas en Twig (ex {'hello' : 'value'}). • Un élément de tableau est une partie de ligne, pas une ligne complète. Vous ne devriez donc pas utiliser // ... mais ..., (la virgule est là pour les standards de code): Listing 8-6 1 array( 2 'une valeur', 3 ..., 4 ) Signaler une erreur La contribution la plus facile que vous pouvez effectuer est de signaler une erreur : une faute de frappe, une grammaire imparfaite, un exemple de code erroné, une explication manquante ... Étapes: • Soumettez un bogue dans le gestionnaire de bogues; • (optionnel) Proposez un correctif. Traductions Lisez la documentation dédiée traductions. PDF brought to you by generated on September 27, 2014 Chapter 8: Participer à la Documentation | 23 Chapter 9 Format de Documentation La documentation Symfony2 utilise reStructuredText1 comme format d'écriture et Sphinx2 pour produire les documents dans d'autres formats (HTML, PDF, ...). reStructuredText reStructuredText « est une syntaxe ce-que-vous-voyez-est-ce-que-vous-obtenez (wysiwyg) facile à lire et un analyseur (parser) ». Vous pouvez apprendre la syntaxe rst en lisant la documentation3 Symfony2 existante ou en lisant les bases de reStructuredText4 sur le site de Sphinx. Si vous êtes familier avec Markdown, soyez attentif à certains concepts qui semblent très similaires mais sont différents : • Les listes commencent au début de la ligne (aucune indentation n'est permise); • Les lignes de codes utilisent des double ticks (``comme ceci``). Sphinx Sphinx est un système de génération qui ajoute certaines fonctionnalités sympas permettant de créer une documentation à partir de documents reStructuredText. Il ajoute de nouvelles directives et des fonctions comme le standard reST markup5. Coloration syntaxique Tout exemple de code utilise PHP comme schéma de coloration syntaxique par défaut. Vous pouvez changer cela à l'aide de la directive code-block : 1. http://docutils.sourceforge.net/rst.html 2. http://sphinx-doc.org/ 3. https://github.com/symfony/symfony-docs 4. http://sphinx-doc.org/rest.html 5. http://sphinx-doc.org/markup/ PDF brought to you by generated on September 27, 2014 Chapter 9: Format de Documentation | 24 Listing 9-1 1 .. code-block:: yaml 2 3 { foo: bar, bar: { foo: bar, bar: baz } } Si votre code PHP débute par <?php, vous devrez utiliser html+php comme pseudo-language de coloration : Listing 9-2 1 .. code-block:: html+php 2 3 <?php echo $this->foobar(); ?> Une liste des langages supportés ainsi que leurs noms respectifs est disponible sur le site web Pygments6. Blocs de configurations Si vous affichez une configuration, vous devez utiliser la directive configuration-block dans tous les formats de configuration supportés (PHP, YAML, et XML) Listing 9-3 1 .. configuration-block:: 2 3 .. code-block:: yaml 4 5 # Configuration in YAML 6 7 .. code-block:: xml 8 9 <!-- Configuration in XML //--> 10 11 .. code-block:: php 12 13 // Configuration in PHP Le code reST précédent sera affiché comme cela : Listing 9-4 1 # Configuration in YAML La liste des formats supportés : Identifiant du Format Affichage html HTML xml XML php PHP yaml YAML jinja Twig html+jinja Twig 6. http://pygments.org/languages/ PDF brought to you by generated on September 27, 2014 Chapter 9: Format de Documentation | 25 Identifiant du Format Affichage jinja+html Twig php+html PHP html+php PHP ini INI php-annotations Annotations Ajouter des liens Pour ajouter des liens à d'autres pages dans les documents, utilisez la syntaxe suivante : Listing 9-5 1 :doc:`/path/to/page` En utilisant le chemin et le nom du fichier de la page sans l'extension, par exemple : Listing 9-6 1 :doc:`/book/controller` 2 3 :doc:`/components/event_dispatcher/introduction` 4 5 :doc:`/cookbook/configuration/environments` Le texte du lien sera le titre principal du document vers lequel pointe le lien. Vous pouvez aussi spécifier un autre texte pour le lien : Listing 9-7 1 :doc:`Spooling Email</cookbook/email/spool>` Vous pouvez aussi ajouter des liens vers la documentation de l'API : Listing 9-8 1 :namespace:`Symfony\\Component\\BrowserKit` 2 3 :class:`Symfony\\Component\\Routing\\Matcher\\ApacheUrlMatcher` 4 5 :method:`Symfony\\Component\\HttpKernel\\Bundle\\Bundle::build` et vers la documentation de PHP : Listing 9-9 1 :phpclass:`SimpleXMLElement` 2 3 :phpmethod:`DateTime::createFromFormat` 4 5 :phpfunction:`iterator_to_array` Tester une Documentation Afin de tester une documentation avant de la proposer : • Installez Sphinx7; • Exécutez l'installeur Installation rapide de Sphinx8; • Installez les extensions Sphinx (voir plus bas); 7. http://sphinx-doc.org/ 8. http://sphinx-doc.org/tutorial.html#setting-up-the-documentation-sources PDF brought to you by generated on September 27, 2014 Chapter 9: Format de Documentation | 26 • Executez make html et relisez le code HTML généré dans le répertoire build. Installer les extensions Sphinx • Télécharger l'extension depuis le dépôt source9 • Copiez le répertoire sensio vers le dossier _exts dans le répertoire racine (où se trouve conf.py) • Ajouter les instructions suivantes au fichier conf.py : Listing 9-10 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 # ... sys.path.append(os.path.abspath('_exts')) # ajouter PhpLexer from sphinx.highlighting import lexers from pygments.lexers.web import PhpLexer # ... # ajoute les extensions à la liste des extensions extensions = [..., 'sensio.sphinx.refinclude', 'sensio.sphinx.configurationblock', 'sensio.sphinx.phpcode'] # active la coloration syntaxique par défaut pour le code PHP qui n'est pas entre ``<?php ... ?>`` lexers['php'] = PhpLexer(startinline=True) lexers['php-annotations'] = PhpLexer(startinline=True) # ajoute PHP comme domaine principal primary_domain = 'php' # Ajoute les urls pour les liens vers l'API api_url = 'http://api.symfony.com/master/%s' 9. https://github.com/fabpot/sphinx-php PDF brought to you by generated on September 27, 2014 Chapter 9: Format de Documentation | 27 Chapter 10 Traductions La documentation Symfony2 est écrite en anglais et de nombreuses personnes participent au processus de traduction. Participer D'abord devenez familier avec le markup language utilisé par la documentation. Ensuite, souscrivez à la liste de diffusion Symfony docs mailing-list1, tout se déroule là. Finalement, trouvez le dépot principal du langage auquel vous voulez contribuer. Voici une liste des dépots officiel: • • • • • • • • • • Anglais: https://github.com/symfony/symfony-docs2 Français: https://github.com/symfony-fr/symfony-docs-fr3 Italien: https://github.com/garak/symfony-docs-it4 Japonais: https://github.com/symfony-japan/symfony-docs-ja5 Polonais: https://github.com/ampluso/symfony-docs-pl6 Portugais (Brésilien): https://github.com/andreia/symfony-docs-pt-BR7 Roumain: https://github.com/sebio/symfony-docs-ro8 Russe: https://github.com/avalanche123/symfony-docs-ru9 Espagnol: https://github.com/gitnacho/symfony-docs-es10 Turc: https://github.com/symfony-tr/symfony-docs-tr11 1. http://groups.google.com/group/symfony-docs 2. https://github.com/symfony/symfony-docs 3. https://github.com/symfony-fr/symfony-docs-fr 4. https://github.com/garak/symfony-docs-it 5. https://github.com/symfony-japan/symfony-docs-ja 6. https://github.com/ampluso/symfony-docs-pl 7. https://github.com/andreia/symfony-docs-pt-BR 8. https://github.com/sebio/symfony-docs-ro 9. https://github.com/avalanche123/symfony-docs-ru 10. https://github.com/gitnacho/symfony-docs-es 11. https://github.com/symfony-tr/symfony-docs-tr PDF brought to you by generated on September 27, 2014 Chapter 10: Traductions | 28 Si vous voulez participer à la traduction d'un nouveau langage, lisez la section dédiée. Rejoindre l'équipe de traduction Si vous voulez aider à traduire certains documents dans votre langue ou corriger des erreurs, rejoigneznous; c'est un processus simple : Présentez vous sur la liste de diffusion Symfony docs mailing-list12 ; (optionnel) Proposer les sujets sur lesquels vous pouvez travailler ; Forker le dépôt master de votre language (clic sur le bouton "Fork" sur la page github) ; Traduisez certains documents et envoyé les sur votre dépôt ; Effectuer une requête de mise à jour (clic sur le bouton "Pull Request" de votre page sur GitHub) ; • Le chef d'équipe accepte vos modifications et les fusionnent avec le dépôt master ; • Le site de la documentation est mis à jour toutes les nuits à partir du dépôt du chef d'équipe. • • • • • Ajouter une nouvelle langue Cette section présente le guide à suivre pour commencer la traduction de la documentation de Symfony2 dans une nouvelle langue. Commencer une traduction représente une masse de travail importante, parlez en sur la liste de diffusion Symfony docs mailing-list13 et essayez de trouver des gens motivés pour vous aider. Quand l'équipe est prête nommé un chef d'équipe, ; il aura la responsabilité du dépôt principal (master). Créer le dépôt et copier les documents en anglais. L'équipe peut maintenant commencer son travail de traduction. Quand l'équipe est certaine que le dépôt est stable et à jour (tout est traduit, ou les documents non traduits ont été supprimés des sommaires (toctree -- correspondants aux fichiers dénommés index.rst et map.rst.inc), le chef d'équipe peut demander que le dépôt soit ajouté à la liste officielle des dépôt master en envoyant un courriel à Fabien (fabien at symfony.com). Maintenance Le processus de traduction ne s'arrête pas quand tout est traduit. La documentation est régulièrement mise à jour, déplacée (des nouveaux documents sont ajoutés, des bogues sont fixés, des paragraphes sont réorganisés, ...). L'équipe de traduction a besoin de suivre le dépot anglais et d'appliquer les changement aux documents traduits aussitôt que possible. Les langues non maintenues sont supprimées de la liste officielle des dépôts car mettre à disposition une documentation obsolète comporte des risques dangereux. 12. http://groups.google.com/group/symfony-docs 13. http://groups.google.com/group/symfony-docs PDF brought to you by generated on September 27, 2014 Chapter 10: Traductions | 29 Chapter 11 License destinée à la documentation de Symfony2 La documentation Symfony2 est soumise à la licence Creative Commons Attribution-Share Alike 3.0 Unported License1. En voici le résumé officiel en français2 : Paternité - Partage à l'Identique CC BY-SA Cette licence permet aux autres de remixer, arranger, et adapter votre oeuvre, même à des fins commerciales, tant qu'on vous accorde le mérite en citant votre nom et qu'on diffuse les nouvelles créations selon des conditions identiques. Cette licence est souvent comparé aux licences de logiciels libres “open source” ou “copyleft”. Toutes les nouvelles oeuvres basées sur les vôtres auront la même licence, et toute oeuvre dérivée pourra être utilisée même à des fins commerciales. C'est la licence utilisée par Wikipédia ; elle est recommandée pour des oeuvres qui pourraient bénéficier de l'incorporation de contenu depuis Wikipédia et d'autres projets sous licence similaire. You are free: • to Share — to copy, distribute and transmit the work; • to Remix — to adapt the work. Under the following conditions: • Attribution — You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work); • Share Alike — If you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one. With the understanding that: • Waiver — Any of the above conditions can be waived if you get permission from the copyright holder; 1. http://creativecommons.org/licenses/by-sa/3.0/ 2. http://creativecommons.org/licenses/ PDF brought to you by generated on September 27, 2014 Chapter 11: License destinée à la documentation de Symfony2 | 30 • Public Domain — Where the work or any of its elements is in the public domain under applicable law, that status is in no way affected by the license; • Other Rights — In no way are any of the following rights affected by the license: • Your fair dealing or fair use rights, or other applicable copyright exceptions and limitations; • The author's moral rights; • Rights other persons may have either in the work itself or in how the work is used, such as publicity or privacy rights. • Notice — For any reuse or distribution, you must make clear to others the license terms of this work. The best way to do this is with a link to this web page. This is a human-readable summary of the Legal Code (the full license)3. 3. http://creativecommons.org/licenses/by-sa/3.0/legalcode PDF brought to you by generated on September 27, 2014 Chapter 11: License destinée à la documentation de Symfony2 | 31 Chapter 12 Processus de sortie des versions Ce document explique le processus de sortie des versions de Symfony (Symfony étant le code hébergé sur le dépôt Git1 symfony/symfony). Symfony gère ses versions via un modèle basé sur la date; une nouvelle version de Symfony sortira tout les six mois, une en mai et une en novembre. Ce processus a été adopté à partir de Symfony 2.2, et toutes les « règles » expliquées dans ce document devront être scrupuleusement respectées à partir de Symfony 2.4. Développement La période de six mois est divisées en deux phases : • Développement : Quatre mois pour ajouter de nouvelles fonctionnalités et améliorer celles existantes; • Stabilisation: Deux mois pour corriger les bugs, préparer la version et attendre que tout l'écosystème Symfony (bibliothèques tierces, bundles et projets qui utilisent Symfony) se mettent à jour. Durant la phase de développement, toute nouvelle fonctionnalité peut être mise de côté si elle n'est pas finalisée à temps, ou si elle n'est pas suffisamment stable pour être intégrée à la version finale. Maintenance Chaque version de Symfony est maintenue pendant une période fixe, ce qui dépend du type de version. 1. https://github.com/symfony/symfony PDF brought to you by generated on September 27, 2014 Chapter 12: Processus de sortie des versions | 32 Version standard Une version standard est maintenue pendant une période huit mois. Version « Long Term Support » Tout les deux ans, une version Long Term Support (version LTS) est publiée. Chaque version LTS est supportée pendant une période de trois ans. Après la période de support de trois ans fourni par la communauté, un support payant est disponible auprès de SensioLabs2. Planning Voici le planning des quelques premières version qui utilisent ce modèle : ../../_images/release-process.jpg • Jaune représente la phase de développement • Bleu représente la phase de stabilisation • Vert représente la phase de maintenance Cela permet de connaitre précisément les dates de sortie et les périodes de maintenance. • • • • • (special) Symfony 2.2 sortira fin février 2013; (special) Symfony 2.3 (première LTS) sortira fin mai 2013; Symfony 2.4 sortira fin november 2013; Symfony 2.5 sortira fin mai 2014; ... Rétrocompatibilité Après la sortie de Symfony 2.3, la rétro compatibilité sera conservée à tout prix. Si ce n'est pas possible, la fonctionnalité, l'amélioration ou la correction de bug sera programmée pour la prochaine version majeure : Symfony 3.0. Le travail sur Symfony 3.0 commencera dès qu'il y aura suffisamment de fonctionnalités majeures non rétrocompatibles en attente sur la todo liste. Explications Ce processus a été adopté pour fournir plus de visibilité et de transparence. Il a été établi selon les objectifs suivants : • Raccourcir le cycle de sortie (permettre aux développeurs de bénéficier des nouvelles fonctionnalités plus rapidement); 2. http://sensiolabs.com/ PDF brought to you by generated on September 27, 2014 Chapter 12: Processus de sortie des versions | 33 • Donner plus de visibilité aux développeurs qui utilisent le framework ou les projets opensource qui utilisent Symfony; • Améliorer l'expérience des contributeurs du coeur de Symfony: chacun sait quand une fonctionnalité sera disponible dans Symfony; • Coordonner l'évolution de Symfony avec les projets PHP qui fonctionnent bien avec Symfony et les projets qui utilisent Symfony; • Donner du temps à l'écosystème Symfony pour se mettre à jour avec les nouvelles versions (auteurs de bundles, contributeurs de documentation, traducteurs, ...). La période de six mois a été choisie pour que deux versions puissent sortir par an. Cela permet également d'avoir pas mal de temps pour travailler sur de nouvelles fonctionnalités, et cela permet également aux fonctionnalités qui ne sont pas prêtes à temps de ne pas attendre trop longtemps avant d'être intégrées dans la sortie du prochain cycle. Le mode de maintenance dual a été choisi pour correspondre à chaque utilisateur de Symfony. Ceux qui bougent vite et veulent travailler avec la meilleure et la dernière version utiliseront les versions standard : une nouvelle version est publiée tout les six mois et il y a une période de mise à jour de deux mois. Les entreprises qui veulent plus de stabilité utiliseront les versions LTS : une nouvelle version est publiée tout les deux ans et il y a une période de mise à jour d'un an. PDF brought to you by generated on September 27, 2014 Chapter 12: Processus de sortie des versions | 34 Chapter 13 Réunions IRC L'objectif de ces réunions est de discuter de sujets en temps réel avec de nombreux développeurs Symfony2. Tout le monde peut proposer un sujet sur la liste de diffusion symfony-dev1 jusqu'à 24h avant le début de la réunion, idéalement en incluant des informations préparées et pertinentes via des URLs. 24 heures avant la réunion un lien vers un doodle2 contenant la liste des sujets proposés sera publié. Tout le monde peut voter sur les sujets jusqu'au début de la réunion afin de définir l'ordre de l'agenda. Chaque sujet sera limité à 15 minutes et la réunion à une heure, laissant ainsi le temps nécessaire pour aborder 4 sujets. Noter que le but attendu d'une réunion n'est pas de trouver des solutions finalisées, mais bien plus de s'assurer qu'il existe une compréhension commune d'un problème particulier et ainsi de faire progresser la discussion à l'aide d'un outil de communication en temps réel apportant intrinsèquement des avantages aux échanges de points de vue. Ces réunions sont conduites chaque jeudi à 17:00 CET (+01:00) sur le channel #symfony-dev sur le serveur IRC Freenode. Les logs3 IRC sont ensuite publiés sur le wiki, en incluant un court résumé pour chacun des sujets abordés. Des tickets sont créés pour chacune des tâches ou chacun des problèmes identifiés pendant la réunion et sont référencés dans le résumé. Quelques lignes directrices et informations concernant la participation : • il est possible de changer vos votes jusqu'au début de la réunion en cliquant sur "Edit an entry"; • Le doodle sera fermé aux votes au début de la réunion; • L'agenda est défini par les sujets ayant le plus de votes dans le doodle, ou dans le cas d'une égalité par l'ordre des propositions (premier proposé, premier traité); • Au début de la réunion une personne s'identifiera comme modérateur; • Le modérateur est essentiellement responsable de s'assurer de la limite de temps de 15min et de s'assurer que les tâches sont clairement identifiées; • Habituellement le moderateur écrira aussi le résumé et créera les tickets à moins que quelqu'un d'autre ne se propose; 1. http://groups.google.com/group/symfony-devs 2. http://doodle.com 3. http://trac.symfony-project.org/wiki/Symfony2IRCMeetingLogs PDF brought to you by generated on September 27, 2014 Chapter 13: Réunions IRC | 35 • • • • • Toute personne peut joindre la réunion et est explicitement invitée à participer; Idéalement chacun doit se familiariser avec les sujets abordés avant la réunion; Quand un nouveau sujet est abordé l'auteur est invité à présenter le sujet en quelques mots; Chacun peut ensuite commenter le sujet suivant sa propre vision; Suivant le nombre de personnes participantes vous devez vous retenir d'exposer des arguments trop spécifiques et/ou ardus; • Rappelez vous que les logs4 IRC seront publiés, et que de nombreuses personnes pourront relire vos commentaires; • Les personnes sont encouragées à être volontaires pour prendre en charge les tâches définies durant la réunion. Voici un exemple5 de doodle. 4. http://trac.symfony-project.org/wiki/Symfony2IRCMeetingLogs 5. http://doodle.com/4cnzme7xys3ay53w PDF brought to you by generated on September 27, 2014 Chapter 13: Réunions IRC | 36 Chapter 14 Autres Ressources Afin de suivre les évènements liés à la communauté, vous trouverez ces ressources supplémentaires très utiles : • • • • La liste des requêtes de mise à jour ouvertes (pull requests1) La liste des commits2 récents La liste des bugs et améliorations3 La liste des bundles4 open source 1. https://github.com/symfony/symfony/pulls 2. https://github.com/symfony/symfony/commits/master 3. https://github.com/symfony/symfony/issues 4. http://knpbundles.com/ PDF brought to you by generated on September 27, 2014 Chapter 14: Autres Ressources | 37