Merge branch 'master' into master

This commit is contained in:
M5oul 2017-02-02 07:53:39 +01:00 committed by GitHub
commit bc78c03aaf
3 changed files with 96 additions and 70 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

BIN
organization_schema.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

View file

@ -1,9 +1,9 @@
# Organisation du projet YunoHost
## Objectif du document
Ce document a pour objectif de permettre aux contributeurs de se sentir légitimes deffectuer une contribution dans le projet YunoHost avec un avis collectif.
Le projet étant communautaire, les décisions prises hâtivement par un groupe restreint de contributeurs peuvent entraîner des frustrations postérieures.
Pour pallier à ce problème, la solution proposée ici est de faire en sorte que les décisions soient prises collectivement et quelles soient suffisamment réfléchies.
Ce document a pour objectif de permettre aux contributeurs de se sentir légitimes deffectuer une contribution dans le projet YunoHost avec un avis collectif. Il vise également à renforcer le projet en le structurant autour de groupes de travail autonomes pouvant résister au départ ou à l'absence de certains contributeurs.
Le projet étant communautaire, les décisions prises hâtivement et discrètement par un groupe restreint de contributeurs peuvent entraîner des frustrations postérieures.
Pour pallier à ce problème, la solution proposée ici est de faire en sorte que les décisions soient prises collectivement, quelles soient suffisamment réfléchies, et qu'elles soient documentées ou rendues publiques.
Un conseil oriente lévolution du projet YunoHost, et des groupes dintérêts permettent de contribuer plus efficacement en fonction des domaines de prédilection de chacun.
## Définition de YunoHost
@ -20,7 +20,7 @@ YunoHost est un logiciel sous licence libre, entièrement communautaire, et repo
#### Que chacun peut s'approprier
Historiquement, le projet est très proche des initiatives visant à la création d'un internet neutre et décentralisé. Cette proximité, notamment avec la FFDN, a amené une partie des contributeurs de YunoHost à créer la Brique Internet dont la mission est de faciliter l'auto-hébergement en fournissant une solution complète incluant service (via un VPN) et matériel. Cet aspect militant n'entrave pas des initiatives commerciales du logiciel pour lequel des entreprises pourraient proposer du support ou de l'hébergement.
Historiquement, le projet est très proche des initiatives visant à la création d'un internet neutre et décentralisé. Cette proximité, notamment avec la [FFDN](https://www.ffdn.org/), a amené une partie des contributeurs de YunoHost à créer la Brique Internet dont la mission est de faciliter l'auto-hébergement en fournissant une solution complète incluant service (via un VPN) et matériel. Cet aspect militant n'entrave pas des initiatives commerciales du logiciel pour lequel des entreprises pourraient proposer du support ou de l'hébergement.
## Organisation de YunoHost
@ -30,13 +30,13 @@ L'objectif de l'organisation de YunoHost est de permettre au plus grand nombre d
Schéma dorganisation du projet YunoHost :
![Schéma dorganisation du projet YunoHost](organization_schema.jpg?raw=true "Schéma dorganisation du projet YunoHost")
<img src="https://raw.githubusercontent.com/YunoHost/yunohost-project-organization/master/organization_schema.png" height="600px" />
#### Définition et constitution des groupes
La constitution de groupes part du constat que YunoHost compte beaucoup de sous-projets (treize au total), mais que l'on ne sait pas toujours qui en est en charge ou qui y est compétent. Il est donc proposé une simplification de l'organisation des sous-projet en groupes thématiques :
La constitution de groupes part du constat que YunoHost compte beaucoup de sous-projets (treize au total), mais que l'on ne sait pas toujours qui en est en charge ou qui y est compétent. Il est donc proposé une simplification de l'organisation des sous-projets en groupes thématiques :
- Groupe Core Dev
- ##### Groupe Core Dev
- Core YunoHost
- Moulinette
- Admin web
@ -44,62 +44,62 @@ La constitution de groupes part du constat que YunoHost compte beaucoup de sous-
- Dynette
- YNH-Dev
- Groupe Distribution
- ##### Groupe Distribution
- Création et maintenance des images d'installation sur diverses architectures
- Distribution des images
- Gestion de la distribution des paquets Debian.
- Groupe Infra/Adminsys
- Infrastructure
- ##### Groupe Infra/Adminsys
- Infrastructure
- Site web (wiki, forum, salon de discussion, redmine, mumble)
- Démo
- Services
- ip.yunohost.org
- yunoport
- nohost.me
- yunodash
- yunopaste
- [ip.yunohost.org](https://ip.yunohost.org/) et ip6.yunohost.org
- [yunoports](http://ports.yunohost.org/)
- nohost.me et noho.st
- [yunodash](https://dash.yunohost.org/)
- [yunopaste](http://paste.yunohost.org/)
- Groupe Apps
- ##### Groupe Apps
- Apps Officielles
- Apps Communautaires
- outils de développements d'app (package_checker, package linter)
- Groupe Communication
- ##### Groupe Communication
- Documentation
- Communication (annonce évolutions du projet sur le forum, réseaux sociaux)
- Traduction
- Entraide (support)
Les groupes sont ouverts à tous les contributeurs souhaitant participer au développement de YunoHost. Chacun peut s'inscrire aux canaux de communication associés aux groupes auxquels il souhaite prendre part. Chaque inscrit est libre d'échanger avec le reste du groupe et de proposer une prise de décision à la suite d'une étape d'échange et d'amélioration de la proposition.
Les groupes sont ouverts à tous les contributeurs souhaitant participer au développement de YunoHost. Chacun peut s'inscrire aux canaux de communication associés aux groupes auxquels il souhaite prendre part. Chaque inscrit est libre d'échanger avec le reste du groupe et de proposer une prise de décision à la suite d'une étape d'échange et d'amélioration de la proposition. Il est recommandé aux contributeurs de documenter au maximum leurs décisions et leurs contributions. Ceci permet de renforcer l'autonomie des groupes en cas de départs ou d'absences de certains de leurs membres.
Afin de faciliter sa gestion, chaque groupe nomme donc un coordinateur (et un remplaçant) dont le rôle est :
- d'accueillir et fédérer les nouveaux contributeurs réguliers de son groupe
- de tenir informé le conseil des décisions prises au sein du groupe (cf. point suivant)
- de tenir informé le Conseil des décisions prises au sein du groupe (cf. point suivant)
Le choix d'un outil de communication est laissé à chaque groupe en fonction de sa pertinence (forum, chat, ML, etc.).
#### Définition et constitution du Conseil
YunoHost grandissant, il est important de maintenir une cohérence entre tous les groupes, néanmoins il est impossible d'imposer à chacun des membres des groupes de s'intéresser ou de s'impliquer sur tous les aspects du projet (pour des raisons de temps et de compétence). Pour pallier à cela, il est proposé de créer un meta-groupe, où chaque groupe sera représenté par au moins un de ses membres : le Conseil.
Le Conseil est indépendant des groupes et réuni les contributeurs souhaitant s'impliquer le plus dans le projet, son rôle est de :
YunoHost grandissant, il est important de maintenir une cohérence entre tous les groupes, néanmoins il est impossible d'imposer à chacun des membres des groupes de s'intéresser ou de s'impliquer sur tous les aspects du projet (pour des raisons de temps et de compétences). Pour pallier à cela, il est proposé de créer un meta-groupe, où chaque groupe sera représenté par au moins un de ses membres : le Conseil.
Le Conseil est indépendant des groupes et réunit les contributeurs souhaitant s'impliquer le plus dans le projet, son rôle est de :
- prendre les décisions importantes sur YunoHost qui ne dépendent pas d'un seul groupe (par exemple changer le moteur du wiki)
- faire des points réguliers sur l'ensemble du projet pour assurer sa cohésion. (réunion Mumble)
- solliciter l'ensemble de la communauté des contributeurs (ou même des utilisateurs) quand une décision divise les groupes et/ou le conseil
- solliciter l'ensemble de la communauté des contributeurs (ou même des utilisateurs) quand une décision divise les groupes et/ou le Conseil
Le choix d'un outil de communication est laissé au conseil, ses décisions doivent néanmoins être consultable par l'ensemble de la communauté de contributeur.
Pour participer aux votes du conseil, il faut avoir contribué au projet et avoir obtenu un droit de vote (ou d'entrée) au sein du conseil. Ce droit est délivré par le conseil (éventuellement sur demande). Le conseil est libre à tout moment de modifier le processus de décision.
Être membre du conseil n'implique pas forcément d'avoir l'ensemble des accès (infra, dépôt etc...).
Le choix d'un outil de communication est laissé au Conseil, ses décisions doivent néanmoins être consultables par l'ensemble de la communauté de contributeurs.
Pour participer aux votes du Conseil, il faut avoir contribué au projet et avoir obtenu un droit de vote (ou d'entrée) au sein du Conseil. Ce droit est délivré par le Conseil (éventuellement sur demande). Le Conseil est libre à tout moment de modifier le processus de décision.
Être membre du Conseil n'implique pas forcément d'avoir l'ensemble des accès (infrastructure, dépôt etc...).
### Un processus de prises de décision basé sur un consensus mou
Les décisions à prendre peuvent être de deux ordres :
Les décisions à prendre peuvent être de deux ordres :
1. pour un groupe (par "exemple merger une PR" serait affecté au groupe Dev tandis que "poster un tweet" serait de la responsabilité du groupe Communication)
2. pour l'ensemble du projet (par exemple décider d'une release avec des nouvelles fonctionnalités)
Si un consensus sur une décision à prendre n'est pas trouvée au sein d'un groupe, ce dernier devra se tourner vers le conseil pour en débattre. Si aucun consensus n'est trouvé, la proposition sera soumise au vote de tous les contributeurs.
Si un consensus sur une décision à prendre n'est pas trouvée au sein d'un groupe, ce dernier devra se tourner vers le Conseil pour en débattre. Si aucun consensus n'est trouvé, la proposition sera soumise au vote de tous les contributeurs.
#### Le processus de prise de décision en détail
@ -108,8 +108,8 @@ Si un consensus sur une décision à prendre n'est pas trouvée au sein d'un gro
- forcément publique à l'exception de situations bien définies (bug relatif à la sécurité critique ou vote sur les personnes)
- une date de clôture est automatiquement définie par type de proposition. La définition de la date remplie plusieurs fonctions :
- pouvoir laisser le temps à tout le monde de s'exprimer et ne pas prendre la décision trop vite
- maintenir un rythme car si le quota des réponses est rempli avant le temps imparti, il n'y a pas besoin d'attendre l'avis de tout les membres du groupe
- le quota est à évaluer en fonction des personnes inscrites au groupe (ou au conseil selon la situation) qui ont manifesté leurs souhaits d'être considéré comme votant régulier => exemple kload peut vouloir donner son avis ponctuellement, mais à priori il ne souhaitera pas être considéré comme membre votant actif du conseil
- maintenir un rythme car si le quota des réponses est rempli avant le temps imparti, il n'y a pas besoin d'attendre l'avis de tout les membres du groupe
- le quota est à évaluer en fonction des personnes inscrites au groupe (ou au Conseil selon la situation) qui ont manifesté leurs souhaits d'être considéré comme votant régulier => exemple kload peut vouloir donner son avis ponctuellement, mais à priori il ne souhaitera pas être considéré comme membre votant actif du Conseil
- pouvoir être repoussable sur simple demande d'une des personnes du groupe. Et seulement du groupe, pas tous les contrib.
##### 2) Ouverture de la discussion, plusieurs réponses possibles :
@ -138,7 +138,8 @@ Tout le monde peut changer de positions à n'importe quel moment, mais il est de
- que des avis positifs
- que des refus
- sans avis (s'en remet aux autres)
- Pour une décision mineure ou moyenne/standard, si le quota de réponse est atteint à la durée minimale et que le consensus est obtenu.
- Pour une décison mineure ou moyenne/standard, si le quota de réponse est atteint à la durée minimale et que le consensus est obtenu.
- Le quota de réponse correspond aux avis nécessaires, détaillé ci-après dans les types de décisions. Le pourcentage est rapporté au nombre d'actifs dans le groupe concerné. La gestion des actif et inactif dans le groupe est à la charge du coordinateur et du suppléant qui doivent maintenir à jour la liste des membres au minimum à chaque décision du groupe. (Un inactif qui se manifeste lors d'une décision redevient automatiquement actif.)
- s'il n'est pas possible d'avoir assez de monde (vacances, plus assez de membres du groupe pouvant avoir un avis) il est possible pour le groupe de demander la clôture même si le quota d'avis n'est pas atteint, il y a alors un nouveau décalage de la date et si cette nouvelle date est franchie, la proposition est clôturée selon les avis donnés.
###### Micro décision:
@ -148,7 +149,7 @@ Tout le monde peut changer de positions à n'importe quel moment, mais il est de
- Durée initiale: 1 semaine.
- Durée minimale: 3 jours.
- Décalage, si nécessaire: 3 jours.
- Avis nécessaires: 3 dont au moins 2 membres du groupe (celui qui a initié cette prise de décision peut donner son avis). 4, dont 3 membres du groupe pour anticiper.
- Avis nécessaires: 2 membres du groupe (celui qui a initié cette prise de décision peux donner son avis). 3, dont 2 membres du groupe pour anticiper.
- Validation par vote (le cas échéant): 66% de votes positifs.
###### Décision Standard/Moyenne:
@ -167,24 +168,65 @@ Tout le monde peut changer de positions à n'importe quel moment, mais il est de
##### 6) Application
Alors un membre du groupe peut annoncer la décision comme effective (et procéder aux actions nécessaires comme releaser, merger, annonce, autre ...). Il est important que s'il y a besoin de certaines actions, des personnes se soient engagées à les faire, une décision sans désigner est moyennement utile
## Plan de migration
Il est proposé d'appliquer dés à présent ce processus décisionnel, toutefois vu que ce n'est qu'un brouillon, chaque personne est invitée à publier des propositions de modifications/améliorations/précisions et à les soumettre. Les décisions pourront s'appuyer sur le [système de vote via Discourse](https://blog.discourse.org/2015/08/improved-polls-in-discourse).
## Composition des groupes
Conseil : Bram, ju, ljf, Maniack, Moul, opi, theodore.
- Conseil : Bram, ju, ljf, Maniack, Moul, opi, theodore.
- Core Dev : AlexAubin, Bram, Ju, ljf, Moul, opi
- Apps : Bram, Ju, ljf, Maniack C, Moul, Scith, Tostaki
- Infra : Bram, Ju, Maniack C, Moul, opi
- Communication
- Com : Bram, Moul, ljf, opi
- Doc : Moul, Theodore
- Trad : Jean-Baptiste
- Distribution : Heyyounow
- Representants des groupes dintérêts (élus ou auto-proclamés) :
- Dev : opi, Bram, ju, ljf
- Apps : Maniack, tostaki, Moul, ljf
- Infra : opi, Bram, ju, Moul
- Com
- Com : Bram, Moul
- Doc : Moul, theodore
- Trad : Jean-Batiste
## Tableau récapitualtif du nombre d'avis nécéssaire pour la prise de décision
_Les valeurs sont arrondies (exemple: 5,4 => 5 et 5,5 => 6)._
| | **Mineure** | **Standard** | **Majeure** |
|----------------------|---------|----------|---------|
| **Conseil** |
| Clôture classique | 2 | 4 | 5 |
| Clôture anticipée | 3* | 5 |
| Clôture par vote | 5 | 5 | 6 |
| **Core Dev** |
| Clôture classique | 2 | 3 | 5 |
| Clôture anticipée | 3* | 4 |
| Clôture par vote | 4 | 5 | 5 |
| **Apps** |
| Clôture classique | 2 | 4 | 5 |
| Clôture anticipée | 3* | 5 |
| Clôture par vote | 5 | 5 | 6 |
| **Infra** |
| Clôture classique | 2 | 3 | 4 |
| Clôture anticipée | 3* | 3 |
| Clôture par vote | 3 | 4 | 5 |
| **Communication -> Com** |
| Clôture classique | 2 | 2 | 3 |
| Clôture anticipée | 3* | 3 |
| Clôture par vote | 3 | 3 | 4 |
| **Communication -> Doc** |
| Clôture classique | 1 | 1 | Conseil |
| Clôture anticipée | 2* | 2* |
| Clôture par vote | Conseil | Conseil | Conseil |
| **Distribution** |
| Clôture classique | 1 | Conseil | Conseil |
| Clôture anticipée | 1 | Conseil |
| Clôture par vote | 1 | Conseil | Conseil |
\* dont 1 avis qui peut être externe au groupe
Pour la traduction, le processus reste à adapter.
Pour la doc, le nombre d'avis pour la cloture anticipée d'une décision mineure est pour le moment réduit (vu qu'il n'y a que 2 personnes dans le groupe). Les autres types de décisions sont prises par le conseil.
Pour le groupe distribution, étant donné qu'il n'y a pour l'instant que Heyyounow, le Conseil sera sollicité pour les décisions Standard ou Majeure.
### Décisions à venir pour les groupes
#### Conseil
- Faut-il élire les membres du conseil plutôt que de les coopter ? Risque de se transformer en "campagne politique"!
- Faut-il limiter l'ouverture des groupes d'intérêts par cooptation comme pour le conseil ?
- Faut-il élire les membres du Conseil plutôt que de les coopter ? Risque de se transformer en "campagne politique"!
- Faut-il limiter l'ouverture des groupes d'intérêts par cooptation comme pour le Conseil ?
- Proposition de changer Conseil en Collégiale
- Migrer le serveur dinfrastructure du projet sous YunoHost. (avec apps déjà packagées pad, gogs, mumble?)
- Let's Encrypt
@ -211,36 +253,20 @@ Conseil : Bram, ju, ljf, Maniack, Moul, opi, theodore.
- Comment s'organiser pour les privilèges sur le forum (si les groupes veulent voter sur le forum)
#### Autres
- Demande sur le forum avec notification des membres du conseil et des représentants des groupes dintérêts concernés.
- Demande sur le forum avec notification des membres du Conseil et des représentants des groupes dintérêts concernés.
- Vote sur deux semaines par un post sur le forum
- Créer quatre canaux pour le Dev, les Apps, la Communication et l'Infrastructure
- La release devrait être validée par l'ensemble des 4 (ou 5) groupes dintérêts
- Communication en français et en anglais
- Annuaire ou contact des groupes pour les nouveaux arrivants. Voir peut-être annuaire tout court pour savoir qui fait quoi. https://yunohost.org/#/contribs_fr à compléter. Et à mettre en avant.
- Proposition de laisser les membres YunoHost s'auto déterminer -> Comment gérer les accès ?
- Proposition de laisser les membres YunoHost s'auto déterminer -> Comment gérer les accès ?
## Moyens de communication actuels
## Notes
Moyens de communication actuel :
- IRL
- Réunion Mumble
- Forum
- Listes de diffusion : contrib et app
- Bugtracker Redmine
- Forge git pour les review de code sur les PR
- Salon de discussions XMPP
## F.A.Q ?
### Quelle différence avec d'autres projets (ArkOS, Cozy, Sandstorm, etc.)
- Cozy : gouverné par une entreprise qui développe toutes les applications pour une meilleure intégration entre-elles. Basé sur Debian.
- Sandstorm : distribution proche de la distribution YunoHost.
- ArkOS : en développement, basé sur Arch GNU/Linux.
### Pourquoi continuer YunoHost ?
La communauté de YunoHost est grandissante et beaucoup de gens comptent dessus, son architecture technique basée sur des logiciels existants et sa gestion entièrement communautaire en font un projet unique. Enfin parce que c'est amusant et que l'aventure est belle :)
## Références
- [Gouvernance du projet Fedora](https://fr.wikipedia.org/wiki/Fedora_(GNU/Linux)#Gouvernance_du_projet_Fedora)
- [Conditions de promotion dun article Wikipédia au label “Bon article”](https://fr.wikipedia.org/wiki/Wikip%C3%A9dia:Bons_contenus/R%C3%A8gles#R.C3.A8gles)
- Rencontres à des évènements.
- Réunions hébdomadaires Mumble.
- [Forum](https://forum.yunohost.org).
- Listes de diffusion : [contrib](https://list.yunohost.org/cgi-bin/mailman/listinfo/contrib) et [apps](https://list.yunohost.org/cgi-bin/mailman/listinfo/apps)
- [Bugtracker Redmine](https://dev.yunohost.org).
- Forge git pour la review de code : [YunoHost](https://github.com/YunoHost) [YunoHost-Apps](https://github.com/YunoHost-Apps).
- [Salons discussions XMPP](https://yunohost.org/#/chat_rooms_fr)