373 lines
8.4 KiB
Markdown
373 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-développement)
|
||
- [📝 Processus de Contribution](#-processus-de-contribution)
|
||
- [🧪 Tests](#-tests)
|
||
- [📚 Documentation](#-documentation)
|
||
- [🐛 Signaler un Bug](#-signaler-un-bug)
|
||
- [💡 Proposer une Fonctionnalité](#-proposer-une-fonctionnalité)
|
||
- [🔍 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
|
||
|
||
```
|
||
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 ! 🚀
|