sdk-signer-client/CONTRIBUTING.md

372 lines
8.4 KiB
Markdown

# Guide de Contribution - 4NK Node
Merci de votre intérêt pour contribuer au projet 4NK Node ! Ce guide vous aidera à comprendre comment participer au développement de cette infrastructure pour les paiements silencieux Bitcoin.
## 📋 Table des Matières
- [🎯 Comment Contribuer] (#comment-contribuer)
- [🚀 Premiers Pas] (#premiers-pas)
- [🔧 Environnement de Développement] (#environnement-de-developpement)
- [📝 Processus de Contribution] (#processus-de-contribution)
- [🧪 Tests] (#tests)
- [📚 Documentation] (#documentation)
- [🐛 Signaler un Bug] (#signaler-un-bug)
- [💡 Proposer une Fonctionnalité] (#proposer-une-fonctionnalite)
- [🔍 Code Review] (#code-review)
- [📦 Release] (#release)
## 🎯 Comment Contribuer
### Types de Contributions
Nous accueillons différents types de contributions :
- **🐛 Bug fixes** - Correction de bugs et problèmes
- **✨ Nouvelles fonctionnalités** - Ajout de nouvelles capacités
- **📚 Documentation** - Amélioration de la documentation
- **🧪 Tests** - Ajout ou amélioration des tests
- **🔧 Outils** - Amélioration des scripts et outils
- **🌐 Traductions** - Traduction de la documentation
- **📊 Performance** - Optimisations de performance
- **🔒 Sécurité** - Améliorations de sécurité
### Niveaux de Contribution
- **Débutant** - Documentation, tests, petits bugs
- **Intermédiaire** - Nouvelles fonctionnalités, améliorations
- **Avancé** - Architecture, optimisations majeures
## 🚀 Premiers Pas
### Prérequis
- **Docker** et **Docker Compose** installés
- **Git** configuré
- **Python 3.8+** (pour les tests)
- **Rust** (pour le développement sdk_relay)
- **Connexion Internet** stable
### Fork et Clone
```bash
# 1. Fork le repository sur Gitea
# 2. Clone votre fork
git clone https://git.4nkweb.com/votre-username/4NK_node.git
cd 4NK_node
# 3. Ajouter le repository original comme upstream
git remote add upstream https://git.4nkweb.com/4nk/4NK_node.git
```
### Branches
```bash
# Créer une branche pour votre contribution
git checkout -b feature/nom-de-votre-feature
# ou
git checkout -b fix/nom-du-bug
```
## 🔧 Environnement de Développement
### Installation Locale
```bash
# 1. Cloner le repository
git clone https://git.4nkweb.com/4nk/4NK_node.git
cd 4NK_node
# 2. Démarrer l'infrastructure
./restart_4nk_node.sh
# 3. Vérifier que tout fonctionne
docker ps
```
### Configuration de Développement
```bash
# Variables d'environnement pour le développement
export RUST_LOG=debug
export ENABLE_SYNC_TEST=1
export BITCOIN_NETWORK=signet
```
### Outils de Développement
```bash
# Tests
./tests/run_all_tests.sh
# Linting (si configuré)
cargo clippy
rustfmt src/
# Build
docker-compose build
```
## 📝 Processus de Contribution
### 1. Planifier Votre Contribution
- [ ] Vérifier les issues existantes
- [ ] Créer une issue si nécessaire
- [ ] Discuter de l'approche avec l'équipe
- [ ] Planifier les tests et la documentation
### 2. Développer
- [ ] Créer une branche depuis `main`
- [ ] Développer votre fonctionnalité
- [ ] Ajouter des tests
- [ ] Mettre à jour la documentation
- [ ] Vérifier que les tests passent
### 3. Soumettre
- [ ] Commiter avec des messages clairs
- [ ] Pousser vers votre fork
- [ ] Créer une Pull Request
- [ ] Remplir le template de PR
### Messages de Commit
Utilisez le format conventionnel :
```bash
# Format
type(scope): description
# Exemples
feat(sdk_relay): add new sync type for metrics
fix(bitcoin): resolve connection timeout issue
docs(api): update WebSocket message format
test(integration): add multi-relay sync tests
```
#### Types
- `feat` - Nouvelle fonctionnalité
- `fix` - Correction de bug
- `docs` - Documentation
- `style` - Formatage
- `refactor` - Refactoring
- `test` - Tests
- `chore` - Maintenance
## 🧪 Tests
### Exécuter les Tests
```bash
# Tous les tests
./tests/run_all_tests.sh
# Tests par catégorie
./tests/run_unit_tests.sh
./tests/run_integration_tests.sh
./tests/run_connectivity_tests.sh
./tests/run_external_tests.sh
# Tests avec debug
./tests/run_all_tests.sh --debug
```
### Ajouter des Tests
```bash
# Structure recommandée
tests/
├── unit/ # Tests unitaires
├── integration/ # Tests d'intégration
├── connectivity/ # Tests de connectivité
├── external/ # Tests externes
└── performance/ # Tests de performance
```
### Bonnes Pratiques
- Testez tous les cas d'usage
- Incluez des tests d'erreur
- Maintenez une couverture > 80%
- Utilisez des données de test réalistes
## 📚 Documentation
### Mise à Jour de la Documentation
```bash
# Structure de la documentation
docs/
├── INSTALLATION.md # Guide d'installation
├── USAGE.md # Guide d'utilisation
├── CONFIGURATION.md # Guide de configuration
├── ARCHITECTURE.md # Architecture technique
├── API.md # Référence API
├── TESTING.md # Guide des tests
└── INDEX.md # Index principal
```
### Standards de Documentation
- Utilisez le Markdown
- Incluez des exemples de code
- Ajoutez des diagrammes si nécessaire
- Maintenez la cohérence du style
- Traduisez en anglais si possible
## 🐛 Signaler un Bug
### Template de Bug Report
```markdown
## Description du Bug
Description claire et concise du problème.
## Étapes pour Reproduire
1. Aller à '...'
2. Cliquer sur '...'
3. Faire défiler jusqu'à '...'
4. Voir l'erreur
## Comportement Attendu
Description de ce qui devrait se passer.
## Comportement Actuel
Description de ce qui se passe actuellement.
## Informations Système
- OS: [ex: Ubuntu 20.04]
- Docker: [ex: 20.10.0]
- Version: [ex: v1.0.0]
## Logs
```text
Logs pertinents ici
```
## Capture d'Écran
Si applicable, ajoutez une capture d'écran.
## Contexte Supplémentaire
Toute autre information pertinente.
## 💡 Proposer une Fonctionnalité
### Template de Feature Request
```markdown
## Résumé
Description claire et concise de la fonctionnalité souhaitée.
## Motivation
Pourquoi cette fonctionnalité est-elle nécessaire ?
## Proposition
Description détaillée de la fonctionnalité proposée.
## Alternatives Considérées
Autres solutions envisagées.
## Impact
Impact sur les utilisateurs et l'architecture.
## Exemples d'Utilisation
Comment cette fonctionnalité serait-elle utilisée ?
## 🔍 Code Review
### Processus de Review
1. **Automatique** - Tests et linting
2. **Review par l'équipe** - Code review manuel
3. **Tests d'intégration** - Validation complète
4. **Approbation** - Merge dans main
### Critères de Review
- [ ] Code fonctionnel et testé
- [ ] Tests ajoutés/modifiés
- [ ] Documentation mise à jour
- [ ] Pas de régression
- [ ] Performance acceptable
- [ ] Sécurité vérifiée
### Répondre aux Reviews
- Répondez poliment aux commentaires
- Apportez les modifications demandées
- Demandez des clarifications si nécessaire
- Re-merguez après les corrections
## 📦 Release
### Processus de Release
1. **Préparation** - Finaliser les fonctionnalités
2. **Tests** - Tests complets
3. **Documentation** - Mise à jour des docs
4. **Tag** - Créer un tag de version
5. **Release** - Publier sur GitHub/GitLab
6. **Annonce** - Communiquer la release
### Numérotation des Versions
Utilisez le [Semantic Versioning](https://semver.org/) :
- **MAJOR** - Changements incompatibles
- **MINOR** - Nouvelles fonctionnalités compatibles
- **PATCH** - Corrections de bugs compatibles
## 🤝 Communauté
### Communication
- **Issues** - Pour les bugs et fonctionnalités
- **Discussions** - Pour les questions générales (via les issues)
- **Pull Requests** - Pour les contributions
- **Wiki** - Pour la documentation collaborative (si activé sur Gitea)
### Code de Conduite
- Soyez respectueux et inclusif
- Écoutez les autres points de vue
- Contribuez de manière constructive
- Respectez les standards du projet
### Reconnaissance
- Les contributeurs sont listés dans le README
- Les contributions significatives sont reconnues
- Les releases mentionnent les contributeurs
## 🆘 Besoin d'Aide ?
- Consultez la [documentation](docs/)
- Vérifiez les [issues existantes](https://git.4nkweb.com/4nk/4NK_node/issues)
- Posez une question via les [issues](https://git.4nkweb.com/4nk/4NK_node/issues/new)
- Contactez l'équipe de maintenance
## 📄 Licence
En contribuant, vous acceptez que vos contributions soient sous la même licence que le projet (MIT).
---
Merci de contribuer à 4NK Node ! 🚀