demarches-normaliennes/CONTRIBUTING.md

57 lines
5.7 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Comment contribuer
demarches-simplifiees.fr est un [logiciel libre](https://fr.wikipedia.org/wiki/Logiciel_libre). Vous pouvez lire et modifier son code-source, sous les termes de la licence AGPL.
Si vous souhaitez apporter des améliorations à demarches-simplifiees.fr, cest possible !
Le mieux pour cela est de **proposer une modification dans la base de code principale**. Une fois acceptée, votre améliorations sera ainsi disponible pour lensemble des utilisateurs de demarches-simplifiees.fr.
Voici la marche à suivre recommandée pour effectuer une modification.
## 1. Discuter de lamélioration
La première étape est généralement de discuter de lamélioration que vous proposez (sil ne sagit pas dun changement trivial, comme la correction dune coquille).
Pour cela, [créez une nouvelle issue](https://github.com/betagouv/demarches-simplifiees.fr/issues/new) concernant votre proposition. Autant que possible, indiquez clairement votre besoin, votre cas dusage et éventuellement comment vous pensez déjà le résoudre.
Nous pouvons alors discuter, pour vérifier que le besoin exprimé correspond à lusage de demarches-simplifiees.fr, proposer éventuellement des alternatives, et se mettre daccord sur une implémentation technique pertinente.
## 2. Proposer du code
Une fois que la discussion est établie, et que les éléments techniques sont dégrossis, vous pouvez proposer des changements au code. Pour cela, effectuez vos modifications en local, et [ouvrez une Pull Request](https://github.com/betagouv/demarches-simplifiees.fr/issues/new) avec les changements que vous souhaitez apporter.
Quelques conseils : pensez à bien décrire lobjectif et limplémentation de votre PR au moment de la créer. Et si vos changements sont importants, découpez-les en plusieurs petites PRs successives, qui seront plus faciles à relire. Noubliez pas dajouter des tests automatisés pour vous assurer que vos changements fonctionnent bien.
Chaque PR ouverte déclenche lexécution des tests automatisés, et la vérification du format du code. Si vos tests ou votre formattage est en rouge, corrigez les erreurs avant de continuer.
Une personne de léquipe de développement fera une relecture, en demandant éventuellement des détails ou des changements. Si personne na réagi au bout de 5 jours, nhésitez pas à relancer en ajoutant un commentaire à la PR.
## 3. Intégration
Une fois votre PR approuvée, elle sera intégrée dans la base de code principale.
Nous mettons en production au minimum une fois par semaine (et généralement plus) : vos changements seront disponibles en production sur [demarches-simplifiees.fr](https://www.demarches-simplifiees.fr) quelques jours après.
## Héberger demarches-simplifiees.fr
demarches-simplifiees.fr est **compliqué à héberger**. Parmi les problématiques que nous rencontrons :
- **Sécurité et confidentialité des données** : par nature, demarches-simplifiees.fr est appelé à traiter des natures de données qui peuvent présenter des caractéristiqus plus ou moins sensibles. La sécurité de linfrastructure doit être contrôlée et certifiée pour garantir la confidentialité des données. Cela implique par exemple une démarche de mise en conformité avec le [Référentiel Général de Sécurité](https://www.ssi.gouv.fr/entreprise/reglementation/confiance-numerique/le-referentiel-general-de-securite-rgs/), qui est un processus assez lourd.
Cest également valable pour le stockage des pièces-jointes, qui peuvent la aussi présenter des particularités et des sensibilités dont la confidentialité doit être garantie.
- **Utilisation de services externes** : demarches-simplifiees.fr sinterconnecte à de nombreux services externes : des APIs (API Entreprise, API Carto, la Base Adresse Nationale, etc.) mais aussi des services pour le stockage externe des pièces-jointes, lanalyse anti-virus ou lenvoi des emails. Le fonctionnement de demarches-simplifiees.fr dépend de la disponibilité de ces services externes.
- **Mises à jour** : le schéma de la base de données change régulièrement. Nous codons également des scripts pour harmoniser les anciennes données. Parfois des modifications ponctuelles sont effectuées sur des démarches anciennes, pour les mettre en conformité avec de nouvelles règles métiers. Nous maintenons également les dépendances logicielles utilisées notamment en réagissant rapidement lorsquune faille de sécurité est signalée. Ces mises à jour fréquentes en production sont indispensables au bon fonctionnement de loutil.
Si vous souhaitez adapter demarches-simplifiees.fr à votre besoin, nous vous recommandons de **proposer vos modifications à la base de code principale** (par exemple en créant une issue) **plutôt que dhéberger une autre instance vous-même**.
Dans le cas où vous envisagez dhéberger une instance de demarches-simplifiees.fr vous-même, nous n'avons malheureusement pas les moyens de vous accompagner, ni dassurer de support technique concernant votre installation.
Toutefois, certains acteurs (le ministère des armées, ladministration autonome en Polynésie française) ont déployé des instances séparées. Nous proposons aux personnes intéressées de les mettre en relation avec ces acteurs existants, afin de disposer dun retour dexpérience, et de bénéficier de leur retour.
## Bonnes pratiques de code
Votre contribution sera plus rapidement traitée si elle s'appuie sur nos habitudes de développement.
Nous travaillons à rendre explicites un maximum de nos pratiques de dev, aussi il est chaudement recommandé
de prendre connaissance des [bonnes pratiques de code](doc/Contributions/Pratiques-de-dev.md).
Merci de votre intérêt pour le projet !