- Code de conduite
- Qu'est ce que je peux faire ?
- Installer le projet
- Faire une Pull Request
- Trouver de l'aide
- Notes additionnelles
En participant, vous devez respecter le code de conduite du projet.
Beaucoup de choses, l’écriture de code n’étant pas loin s’en faut le facteur principal de réussite de ce projet de refonte.
Cela peut être plus simple d'écrire une ligne de code bien interprétée par une machine qu'un texte qui transmet correctement un message à une communauté. Or c'est l'objectif de ce projet. Vous êtes donc les bienvenues pour nous aider à rédiger les contenus des pages d'appels à talks, de demande d'accueil auprès des entreprises ainsi que la baseline des CaenCamp.
Il faut également re-intégrer tout les contenus de l'ancien site, les qualifier (avec des tags), extraire les informations des speaker et rédiger une petite bio pour chacun d'eux.
Vous trouverez plus de détails sur ces besoins dans les issues taguées content
.
Et plus globalement, tout le contenu qui n'est pas du code mérite certainement votre attention. Par exemple, vous aurez peut-être identifié des phrases à rallonge, des fautes d'orthographe ou de grammaire sur cette page "guide de contribution" ? Si c'est le cas, n'hésitez pas à faire une petite pull request avec vos corrections.
Note : Pour les corrections de type typo, grammaire ou orthographe à faire sur des pull requests, vous pouvez utiliser le syntaxe s/[search pattern]/[replace]/
de sedy qui est configuré sur le projet.
Concernant le design, tout est à faire. Nous pouvons certainement partir sur un look à la bootstrap, mais si certains d'entre vous se sentent inspirés, ce sera un gros plus.
Pour l'instant, nous n'avons qu'un logo qui d'ailleurs ne demande qu'à évoluer.
Cela peut-être une occasion de collaboration entre développeurs/intégrateur/designer/ergonome/...
Le projet intègre storyBook permettant la mise en place un styleguide dans les règles de l'art.
Les issues concernant le design sont associées au tag design
.
Le site repose sur GatsbyJs. Cela va donc impliquer pour participer au code de faire du Javascript, et plus particulièrement du React (en version 16). Pour les fonctionnalités les plus simples, cela devrait suffir. Pour les fonctionnalités un peu plus avancées, il faudra aussi s'attaquer à GraphQL, au service worker et aux API de Slack, Trello ou Meetup. Bref de quoi découvrir plein de choses.
Et si vraiment vous détester le Javascript, il y aurait sûrement moyen de mettre en place quelques services en mode serverless avec du Go ou du Clojure, ... ou ce que vous voulez en fait du moment que cela fait le job.
Les issues concernant le code sont associées au tag code
.
Il parait que chaque bug relevé sauve un chaton. En tout cas, la technique du ZBSD (Zero-Bug Software Development) semble porter ses fruits, comme le rapporte Andrew Fulton.
Donc, si à chaque bug rencontré quelqu'un ouvre une issue avec le label bug
, ce seront des familles entières de chats qui seront sauvées.
Les fonctionnalités imaginées pour atteindres ces objectifs sont présentes dans les issues ou sur le board du projet. Mais elles vous semblent peut-être inabouties ou insuffisantes ?
Dans ce cas, ouvrez une nouvelle issue de type feature
ou improvement
en décrivant bien votre idée.
Quelle que soit votre type d'implication, ce peut-être une bonne chose que d'installer le projet sur votre machine pour pouvoir visualiser votre contribution avant de la proposer sur Github.
Tout d'abord vous devez avoir un compte GitHub ainsi que git installé sur votre ordinateur. Ensuite vous devez "forker" le dépôt du projet et le cloner localement.
Enfin, vous devez faire un choix :
- Soit vous décidez d'installer Node.js en version 8.9 (LTS) sur votre ordinateur. Node est un environnement d'exécution JavaScript .js (comme l'est un navigateur). C'est un bon choix.
- Soit vous préférez ne pas installer Node.js, et dans ce cas, vous devrez installer Docker. Docker va vous permettre d'exécuter Node.js au sein d'un container (une sorte de machine virtuelle). C'est aussi un bon choix.
Si vous ne savez pas que choisir, Docker présente l'avantage de bien isoler les dépendances du projet de votre OS ainsi que de rendre un peu plus facile l'exécution des tests.
Vous avez donc décidez d'installer Node.js. La première chose à faire est d'installer les dépendances du projet :
npm install
Ensuite, voici la principale commande à connaitre :
npm run develop
Le projet est maintenant executé en mode développement (avec un Webpack Dev Server)) et vous pouvez voir le site à l'adresse http://localhost:8000. Chaque modification effectuée dans le code sera immédiatement impactée dans votre navigateur.
Si vous avez choisi Docker, vous pouvez utiliser les recettes du fichier makefile
pour lancer les commandes du projet.
La première commande à lancer permettant d'installer les dépendances du projet est :
make install
Ensuite, voici les deux principales commandes à connaitre :
make start
Le projet est maintenant executé en mode développement (avec un Webpack Dev Server)) et vous pouvez voir le site à l'adresse http://localhost:8000. Chaque modification effectuée dans le code sera immédiatement impactée dans votre navigateur.
Pour arrêter le projet, faites un:
make stop
Tips : Vous pouvez voir toutes les commandes disponibles en tappant juste make
.
Voici l'organisation des principaux répertoires du projet :
- .github : On trouve ici les fichiers d'aide sur le projet et les templates pour Github.
- .storybook : On trouve ici les fichiers de configuration permettant le bon fonctionnement du storybook
- content : On trouve ici les fichiers des contenus (talks, speakers, partners) en
.md
. - e2e : On trouve ici les fichiers des tests "end to end".
- public : Ce répertoire n'est pas dans le dépôt git, mais sera visible dès que vous lancerez un
build
du projet. Vous y trouverez donc les fichiers statiques finaux tels qu'ils seront mis en ligne. - src : On trouve ici tous les fichiers propres à Gatsby ainsi que les fichiers de tests unitaires.
- static : On trouve ici tous les fichiers static, c.a.d les images, la favicon, etc ...
- stories : On trouve ici les fichiers propres au storybook (hors configuration).
Si vous n'avez encore jamais fait de Pull Request (PR), la lecture du tutorial Github Understanding the GitHub Flow est sûrement un bon point de départ.
Si vous n'aviez pas encore de compte Github, en voici une bonne introduction.
Pour le projet, nous utilisons le workflow suivant :
- Le projet principal ne possède qu'une branche
master
. - Chaque participant réalise un fork du dépôt principal puis ouvre une branche depuis son fork pour chaque nouvelle feature.
- Une PR est créée depuis la branche du fork vers la branche
master
du dépôt principal.
Si vous vous sentez un peu perdu.e, la lecture de Using the Fork-and-Branch Git Workflow devrait vous rendre plus serein.ne.
Afin de facililiter l'intégration (le merge) de vos PR, surtout si elles contiennent du code, celle-ci devront contenir les tests couvrant vos propositions.
Il y a deux grands types de tests sur le projet:
- des tests unitaires lancés par Jest et pouvant inclure enzyme pour les tests de composants React,
- des tests e2e lancés par Jest et utilisant puppeteer.
Les tests unitaires sont lancés localement avec la commande npm run test
ou make test-unit
si vous avez docker.
Les tests e2e sont facilement lancés si vous avez Docker : make test-e2e
.
Le dépôt du projet est branché sur la plateforme d'intégration continue Travis, les tests seront donc également automatiquement lancés lors de votre PR.
La bonne pratique, c'est de faire des PR, et puis c'est tout.
Mais voici quelques conseils qui peuvent les rendre encore meilleures :
- Faites des commits courts et bien commentés.
- Faites des PR courtes, toute une tache (une issue) n'a pas forcement besoin d'être adressée dans une seule PR.
- Faites référence à l'issue que la PR adresse.
- N'hésitez pas à joindre des captures d'écran, fixes ou animées.
- Ajouter une description et une todo list en ouvrant la PR.
- N'attendez pas que la PR soit terminée pour l'ouvrir : la communauté viendra plus facilement en aide en découvrant tôt la PR.
- Utilisez les labels
WIP
(Work In Progress) etRFR
(Ready For Review) pour indiquer l'avancement de la PR. - dernier point : normalement, toute les textes (titre, description, commentaires, ...) sont fait en anglais. Si vous n'êtes pas à l'aise, écrivez en français. Mais le norme en opensource, c'est l'anglais.
Le système d'issues du Github est très bien pensé et permet de facilement réagir, commenter, noter... Donc si une issue vous intéresse mais qu'elle ne vous semble pas claire, c'est directement dans l'issue que vous pouvez poser des questions.
Si vous avez commencé une PR, mais que vous êtes bloqué, vous pouvez écrire un commentaire dessus décrivant votre problème et ajouter le label help wanted
.
Il existe un channel caen-camps sur le slack Web@Caen. N'hésitez pas à demander une invitation puis à y poser vos questions. L'une des tâches de cette refonte concerne d'ailleur la mise en place d'un sytème d'invitation simplifié pour rejoindre le Slack des CaenCamp.s .
Le wiki d'un projet est souvent difficile à maintenir. C'est portant une manière simple et efficace de noter des "astuces" et autres commentaires documentant la vie du projet. Vous pouvez aller y jeter un coup d'oeil, quelquefois qu'une bonne âme se serait donné la peine d'y noter quelque chose.
Les CaenCamp.s, c'est avant tout des rencontres. Venez donc chaque dernier mardi du mois aux éditions des CaenCamp.s, ce sera l'occasion de poser toutes vos questions sur ce projet de refonte.
Et Caen regorge d'autres rencontres succeptibles d'aider au projet : les apero-seo, les apero-web, les apero UX, les rencontres interactives ...
Si vous souhaitez participer, mais que vous n'y arrivez pas malgré les issues, le slack, le wiki et les talks, vous pouvez toujours envoyer un email à la mer : [email protected]
Ce projet est un projet uniquement lié aux bonnes volontés. Tous nous travaillons et il n'est donc pas question de mettre en place un Roadmap.
Mais, ce serait chouette de voir une première version en ligne pour 2018 ;)
L'hébergement final du site (les fichiers buildés dans le répertoire public
) sera assuré par Github, mais ne sera pas géré directement au sein de ce projet de refonte.