talas-group/12_DOCUMENTATION/Contribution_Guide/GUIDE_CONTRIBUTION.md

186 lines
6.4 KiB
Markdown
Raw Permalink Normal View History

# Guide de Contribution Talas
> Comment contribuer au projet Talas — code, documentation, design, hardware, traductions.
> Dernière mise à jour : 27 mars 2026.
---
## Bienvenue
Talas est un projet ouvert. Les schémas hardware sont sous CERN-OHL-W 2.0, la documentation sous CC BY-SA 4.0. Le code de Veza est propriétaire. Toute contribution qui respecte les valeurs du projet est la bienvenue.
Avant de contribuer, prends le temps de lire :
- [[00_META/Manifeste/MANIFESTE_ETHIQUE_TALAS]] — Les engagements non-négociables
- [[00_META/CHARTE_OPEN_CORE]] — Ce qui est commons vs commercial
---
## Comment contribuer
### Code (Veza)
Le code source vit dans `/home/senke/git/talas/veza/` (monorepo).
| Composant | Langage | Répertoire |
|-----------|---------|-----------|
| Backend API | Go (Gin, GORM) | `veza-backend-api/` |
| Stream Server | Rust (Axum) | `veza-stream-server/` |
| Frontend | React 18, TypeScript, Tailwind | `apps/web/` |
| Desktop | Electron (wrapper) | `veza-desktop/` |
**Pour commencer :**
1. Lire [[03_APPS_&_SERVICES/ARCHITECTURE_VEZA]] pour comprendre l'architecture
2. Suivre le setup développeur dans [[04_INFRA_DEPLOIEMENT/CI_CD/PROCEDURES_DEPLOIEMENT]] §2
3. Consulter les issues ouvertes sur Gitea/Forgejo
### Documentation (ce knowledge base)
Ce dépôt (`TG__Talas_Group/`) est un graphe Logseq de ~80 fichiers markdown.
**Conventions :**
- Tout en **français**
- Utiliser `[[wikilinks]]` pour les références croisées (Logseq les résout)
- Noms de fichiers principaux en MAJUSCULES (ex: `ARCHITECTURE_VEZA.md`)
- Sous-dossiers pour les fichiers détaillés
- Pas de fichiers dans `13_ARCHIVES/` (historique figé)
- Pas de fichiers de code ici (le code est dans le repo Veza)
### Design et UX
- Système de design : Sumi V3 (voir [[05_EXPERIENCE_UTILISATEUR/SUMI_V3_SPECIFICATION]])
- Outil : Penpot (self-hosted)
- Direction artistique : [[05_EXPERIENCE_UTILISATEUR/DIRECTION_ARTISTIQUE_TALAS]]
### Traductions
Veza supporte 3 langues (EN/FR/ES) via i18next.
- Fichiers : `apps/web/src/locales/`
- Ajouter une langue : créer un dossier de locale, traduire les clés JSON
### Hardware
Les schémas du microphone sont ouverts sous CERN-OHL-W 2.0.
- Outil : KiCAD
- Fichiers : `02_PRODUITS_PHYSIQUES/Microphone/Conception/`
- BOM : `02_PRODUITS_PHYSIQUES/Microphone/BOM/`
---
## Prérequis techniques
### Pour le code Veza
| Outil | Version | Installation |
|-------|---------|-------------|
| Go | 1.24+ | [go.dev/dl](https://go.dev/dl/) |
| Rust + Cargo | Stable | [rustup.rs](https://rustup.rs/) |
| Node.js | 20+ | [nodejs.org](https://nodejs.org/) |
| Docker + Compose | 24+ | [docs.docker.com](https://docs.docker.com/) |
| Make | — | Fourni par le système |
### Pour la documentation
- Éditeur markdown (VS Code, Neovim, etc.)
- Optionnel : Logseq pour naviguer le graphe visuellement
### Pour le hardware
- KiCAD 8+ pour les schémas et PCB
- Multimètre et oscilloscope pour les tests (voir [[10_QUALITE_TESTS/Tests_Hardware/PROTOCOLES_TESTS_HARDWARE]])
---
## Process de contribution
### 1. Créer une branche
```bash
git checkout -b feat/description-courte # nouvelle fonctionnalité
git checkout -b fix/description-courte # correction de bug
git checkout -b docs/description-courte # documentation
```
### 2. Développer et tester
- Lancer les tests avant de pousser : `make test`
- Vérifier le lint : `golangci-lint run` / `npm run lint` / `cargo clippy`
- Pour les docs : vérifier les `[[wikilinks]]` cassés
### 3. Commit
Format des messages :
```
type(scope): description courte
Corps optionnel expliquant le pourquoi.
```
Types : `feat`, `fix`, `docs`, `refactor`, `test`, `chore`
Scopes : `backend`, `stream`, `frontend`, `infra`, `docs`, `hardware`
Exemples :
- `feat(backend): add stem upload endpoint`
- `fix(frontend): fix playlist reorder drag-drop`
- `docs(infra): add deployment procedures`
### 4. Pull Request
- Titre clair et concis (< 70 caractères)
- Description : ce que fait la PR, pourquoi, comment tester
- Lier à l'issue correspondante
- Attendre la review avant merge
### 5. Review
Critères de review :
- Le code fait ce qui est décrit
- Les tests passent
- Pas de régression de sécurité (OWASP top 10)
- Cohérent avec l'architecture existante
- Pas de dépendance cloud ajoutée (self-hosted only)
---
## Code de conduite
Résumé des principes du [[00_META/Manifeste/MANIFESTE_ETHIQUE_TALAS]] appliqués à la contribution :
1. **Respect** — Feedback constructif, pas de jugement personnel
2. **Transparence** — Expliquer ses choix techniques, documenter les décisions
3. **Pas de dark patterns** — Jamais de code manipulatif (fausse rareté, notifications FOMO, tracking comportemental)
4. **Pas de tracking** — Pas de Google Analytics, Facebook Pixel, ou équivalent. Jamais.
5. **Self-hosted** — Pas de dépendance à des services cloud tiers (pas d'AWS, Cloudflare, SaaS)
6. **Vie privée** — Collecte minimale de données. Export/suppression à tout moment.
7. **Bienveillance** — On part du principe que les gens sont là pour aider
**Comportements inacceptables :** harcèlement, discrimination, trolling, spam, publication de contenu inapproprié.
En cas de conflit : contacter le mainteneur principal. Les décisions de modération sont finales.
---
## Licences
| Élément | Licence | Implication |
|---------|---------|-------------|
| **Code Veza** | Propriétaire | Le code de Veza n'est pas open-source. |
| **Hardware** (schémas, PCB, BOM) | CERN-OHL-W 2.0 | Weakly reciprocal : les modifications des fichiers doivent être partagées, mais les projets dérivés peuvent utiliser d'autres licences. |
| **Documentation** | CC BY-SA 4.0 | Attribution + partage dans les mêmes conditions. |
| **Samples et presets** communautaires | CC BY-SA 4.0 ou CC0 | Selon le choix du créateur. |
Le détail complet de la frontière commons/commercial est dans [[00_META/CHARTE_OPEN_CORE]].
**Règle d'or :** un élément classé commons ne peut JAMAIS devenir commercial. L'inverse (ouvrir ce qui était commercial) est encouragé.
---
## Voir aussi
- [[00_META/Manifeste/MANIFESTE_ETHIQUE_TALAS]] — Engagements éthiques
- [[00_META/CHARTE_OPEN_CORE]] — Frontière commons / commercial
- [[03_APPS_&_SERVICES/ARCHITECTURE_VEZA]] — Architecture applicative
- [[04_INFRA_DEPLOIEMENT/CI_CD/PROCEDURES_DEPLOIEMENT]] — Setup développeur et déploiement
- [[00_META/Glossaire/GLOSSAIRE_TALAS]] — Glossaire des termes
- [[12_DOCUMENTATION/INDEX_DOCUMENTATION]] — Index de toute la documentation