Yunohost gouvernance

Définition de YunoHost

Objectifs

Selon le site web : « Le but de YunoHost est de rendre accessibles au plus grand nombre l’installation et l’administration d’un serveur, sans délaisser la qualité et la fiabilité du logiciel. »

YunoHost est avant tout un logiciel, il n’a pas vocation à héberger des services auxiliaires estampillés sous le même nom (support payant, dns, vpn, hébergement). La fourniture de services devrait être laissée à d’autres structures gravitant autour du logiciel, qu’elles soient des entreprises ou des associations. Cela afin de concentrer l’activité de Yunohost sur la qualité du logiciel. Ce postulat pose la question des services peu gourmand en ressources comme nohost.me, ip.yunohost.org, ports.yunohost.org ou encore la liste des apps qui sont nécéssaires pour faire fonctionner pleinement une instance YunoHost. A termes ces services devraient pouvoir être proposés par des tiers de façon que l’utilisateur puisse avoir le choix d’être indépendant des serveurs YunoHost.

Valeurs

Un logiciel libre et communautaire

Par rapport à d’autres initiatives, (InternetCube, Sandstorm, Freedombox, cozy, ArkOS, serveur NAS (synology), kodi) YunoHost se distingue en étant :

  • un logiciel sous licence libre
  • entièrement communautaire
  • reposant sur des applications libres existantes (roundcube, baikal, etc.)

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 / InternetCube 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.

Explication sur le mode de gouvernance de YunoHost

Une structure ouverte, organisée en quatre groupes fédérés par un conseil
L’objectif de l’organisation de YunoHost est de permettre au plus grand nombre de contribuer à l’amélioration du logiciel, que ce soit d’un point de vue technique (développement, packaging d’application) ou non (communication, assistance aux utilisateurs, documentation, etc.). Inspiré par différents projets passés en revue lors de l’événement (Kodi, Debian, Django, Fedora, Wikipédia, etc.) et des idées des contributeurs de YunoHost, il a été décidé d’une organisation en groupes spécialisés, fédérés par un conseil de contributeurs clés.

Schéma d’organisation du projet YunoHost :

Les groupes

YunoHost est organisé en 4 groupes de contributeurs en fonction des intérêts:

  • [Core Dev & Infra|LIEN VERS PLUS BAS]
  • [Apps|LIEN VERS PLUS BAS]
  • [Communication|LIEN VERS PLUS BAS]

Ces 4 groupes sont ouvert à tous: chacun peut lire, écrire son avis (si il juge en avoir un pertinent), poser une question, faire des propositions, prendre part à une décision.
L’objectif est de permettre aux nouveaux arrivant de s’insérer facilement dans l’équipe YunoHost.
Si il n’y a pas de consensus au sein du groupe, les questions sont traitées par le conseil.

Pour les décisions qui ne sont pas spécifiées comme pouvant être prise à titre individuelle, il y a 3 types de votes en fonction de l’importance et du type de décision:
Vote Mineur:
Durée initiale: 1 semaine.
Décalage, si nécessaire: 3 jours.
Avis nécessaires: 3 dont au moins 2 membres du conseil faisant partie du groupe (celui qui a initié le vote peut voter).
Vote Standard/Moyen:
Durée initiale: 2 semaines.
Décalage, si nécessaire: 1 semaine.
Avis nécessaires: 4 dont au moins 2 membres du conseil faisant partie du groupe (celui qui a initié le vote peut voter).
Vote Majeur :
Durée initiale: 1 mois.
Décalage, si nécessaire: 2 semaines.
Avis nécessaires: 5 et au moins la moitié des membres du conseil actifs faisant partie du groupe (celui qui a initié le vote peut voter).

Toutes décisions individuelles réversibles peut être remise en cause par un vote.

###Scope

  • Ce qui ne fait pas consensus au sein d’un groupe

  • Ce qui est jugé important/majeur

  • Ce qui est transversal

  • Ce qui ne peut pas être public

    • bug/faille de sécurité avant publication d’un correctif
    • discussions sur des personnes
    • peut être certaines discussion d’infra sensible###
      ###Exemple
  • Release

  • Attribution de droit (Accès infra, Accés git)

  • Cooptation d’un contributeur

  • Réévaluation du processus de décision

  • Grandes orientations fonctionnelles###
    ###Modalité de consultation des discussions
    Les discussions sont au maximum publiques.

###Modalité pour le droit de vote
Le conseil détermine lui même ses membres (cooptation) par le biais d’un vote comme toute décision du conseil.

Une décision est close :

  • si tous les membres actifs du conseil ont voté

  • ou si au moins 4/5 des underlinemembres actifs du conseil ayant un avisunderline sont pour au bout de 2 semaines

  • ou si 4 semaines sont passées
    Pour une décision un membre actif est :

  • soit un membre du conseil régulier, c’est à dire un membre du conseil qui a manifesté sont souhait d’être toujours considéré comme actif puisqu’il souhaite répondre à participer à toutes les décisions (a-t-on vraiment besoin de ce point? à part bloquer le process parce que le(s) fameux membre du conseil(s) régulier est parti en vacances, je vois pas ce que ça apporte) => ben si on nomme kload ou beubeud comme membre du conseil ça me semble logique de les considérer comme non régulier et donc de ne pas les comptabiliser dans les 4/5ème (sauf si ils répondent évidemment)

  • soit un membre du conseil qui vient de répondre à la dite décision#
    #Page: Groupe Core Dev (redmine, xmpp, pad, forum || ml?)
    Scope
    Concerne les contributeurs aux outils suivants:

  • Core YunoHost

  • Moulinette

  • Admin web

  • SSOwat

  • Dynette

  • YNH-Dev

  • Création d’image et des scripts de build automatique associé

  • Infrastructure

  • Site web (wiki, forum, salon de discussion, redmine, mumble)

  • Démo

  • Services

  • Modification des processus de développement (forum || ml ? redmine ? forge git comme pour les bonnes pratiques des apps ? wiki? pad ?)

    • => Vote Majeur
  • Implémentation d’une feature ou d’un fix (redmine + codereview forge git, pad)

    • Ecrire des specs sur un ticket redmine dont une partie compréhensible pour ceux qui font la doc
      • Si c’est une feature ou un bug compliqué à résoudre : Chaque dev intérréssé améliore ces specs et donne ses idées
      • Un Vote Standard peut être demandé pour marquer l’intention de développer ce qui est spécifié (histoire de réveiller le ticket)
    • Ecriture d’un code dans une branche dont le nom est TYPE-NUMEROTICKET-DESCRIPTION (exemple “fix-533-restore-app-is-broken”) (éventuellement de façon concourante à l’amélioration des specs si c’est judicieux)
    • Merge request (démarrage du délais de décision)
    • Test et code review par plusieurs personnes => si modification RESET du délais de décision
    • Vote pour le merge (underlinehistoire de ne pas faire porter la responsabilité du merge sur une seule personneunderline)
      • Enormes modifications => Vote Majeur
      • Petite fonctionnalité/ bug nécéssitant plus qu’une dizaine de ligne => Vote Standard
      • Petit bugfix => Vote Mineur
    • Merge + clore le ticket redmine et le placer dans la future release
  • Choix d’infrastructure (redmine)

    • => Vote standard ou Vote en conseil
  • Redémarer un serveur (sauf urgence ou serveur non critique) (à consigner dans le carnet de bord \url{https://dev.yunohost.org/documents/12} + xmpp)

    • => Vote mineur
      Elements ne nécéssitant pas de prise de décision collective à priori
  • Fix esthétique du code ?** (git + xmpp)**

  • Priorisation de développement (redmine + xmpp)

    • Contexte: aujourd’hui il y a 13 tickets concernant la doc, 123 demandes de nouvelles features, 159 bugs ouverts
    • Faut il évaluer l’importance de certains bugs (priorité redmine) et leurs facilité de résolution par rapport à d’autres (tag easy-pick dans redmine) ? oui \o/ +1 easypick
      • Comment on fait pour classer collectivement tout ça ??? Au feeling ? Les changements (priorité/tag) seront argumentés+discutés dans l’issue directement, je pense que pas mal de projets fonctionnent comme ça
      • oui, la maintenance du bugtracker est une activité en soit (pas tres attirante) : fermer ce qui est fixé/n’est plus valide/a été abandonné par le reporter après demande d’info/…, classifier/tagguer/linker proprement toutes les issues, demander du feedback qd nécessaire (ping), …
  • la préparation sur une infrastructure de test

  • les opérations d’adminsys routinière (à consigner dans le carnet de bord \url{https://dev.yunohost.org/documents/12} + xmpp)

    • mettre à jours discourse,
    • installer un truc pas chiant,
    • fixer redmine qui fait chier etc… brefle, le bon jugement de la personne est de mise mais historiquement ça n’a rarement posé problème
  • Suppression d’un nom de domaine en .noho.st à condition de vérifier: (forum)

    • le domaine est bien down
    • la personne sait donner à peu prés la date de création

#Page: Groupe Apps (forge git + forum + redmine)
Scope
Concerne les contributeurs aux applications YunoHost ainsi que les contributeurs aux outils de vérification et de suivie des apps:

  • Apps Officielles

  • Apps Communautaires

  • Outils de développements d’app (package_checker, package linter, yunodash)
    Type de prise de décision

  • Intégration d’une app en officiel (forum + redmine)

    1. une (ou un groupe de) personne(s) propose que son app devienne officielle (elle ne doit pas être parfaite) en faisant cette proposition, cette personne ou se groupe s’engage à :
    • maintenir l’application à long terme
    • adhérer aux principes de YunoHost (si d’application)
    1. sauf si demande pour ne pas avoir cette application en officielle (par une personne du groupe), le processus est entamé l’équipe travaille alors pour rendre l’application conforme aux guidelines (review, feedback, modif)
    2. une fois que l’application n’a plus de modifications à faire (ou que le groupe considère que les modifications ne sont pas bloquantes) on entame alors un processus de décision classique
    • => Vote standard
  • Validation d’un développement sur une app officielle (forge git + forum + redmine)

    • même process que pour l’implémentation d’une feature dans le coeur
      • appel à tester sur le forum
  • Définition des guidelines (code review sur la forge git)

    • Chaque YEP doit faire l’objet d’une PR => Vote standard
  • Choix d’implémentation pour la création d’outil ou de technique pour créer de la synergie entre apps (forge git + forum + redmine)

    • même process que pour l’implémentation d’une feature dans le coeur
      • appel à tester sur le forum
        Elements ne nécéssitant pas de prise de décision collective à priori
  • Contribution à une app communautaire (forum)

  • Test d’une app (forum)

  • Ajout d’une app communautaire (git)

  • Donner les droits sur leur dépot aux auteurs de chaque app communautaires (forge git)

#Page: Groupe Communication (translate, wiki, github, redmine, pad, ???)
Scope

  • Documentation

  • Communication externe (twitter)

  • Traduction

  • Animation de la communauté ?
    Type de prise de décision

  • Stratégie de communication (forum ? ML ?)

    • Conférence/Atelier
  • Remise en cause de terminologie (exemple: store vs dépôt d’application) (translate ? forum ? ML ?)

    • Si problème => Vote en conseil
  • Annulation de contribution à la doc (github => A CHANGER PAR UN MEILLEUR WIKI)

    • Peut être désactiver directement par quelqu’un qui a un compte doc
    • Si problème => Vote en conseil
      Elements ne nécéssitant pas de prise de décision collective à priori
  • Coordination doc (redmine ou page discussion du wiki? forum/ml?)

  • Ecriture et publication de la doc pour ceux qui ont un compte (github => A CHANGER PAR UN MEILLEUR WIKI)

  • Traduction (translate + ML/forum de traducteur ? )

  • Communication routinière

      • twitter l’annonce de travail ou de décision déjà prise
      • RT quelqu’un·e qui parle de nous (peut être à l’exception de trucs commerciaux)
  • Réorganisation légère du forum

#REMARQUES
##Idées pour l’animation d’équipe

Idées générales pour la cohésion inter-groupe, l’accueil:

  • Organiser un Brique Camp :slight_smile:

  • Réunion mumble mensuelle
    Apps

  • Mise en avant du tutorat pour la création d’app

  • 1 event régulier sur la création d’app ?
    Core dev

  • Garder le salon de dev MAIS ATTENTION il devrait être réservé pour l’amélioration et l’entraide mais pas pour la prise de décision, si c’est le cas la discussion doit être répercutée sur un media asynchrone.

  • Session mumble/xmpp de triage d’issue queue ! +1

    • ju +1 : cette activité étant tellement rébarbative, c’est le meilleur moyen !
      Adminsys
  • cérémonie de remise d’accès ?
    Communication

  • 1 rendez-vous mumble/jistimeet régulier pour rusher sur la doc et la traduction ?
    ##Forum vs ML
    ###Pro Forum
    Il y a 700 utilisateurs sur le forum, la plupart savent écrire des lignes dans un terminal, peut être certains savent coder, traduire, écrire de la doc, dessiner des interfaces… Rapprocher les décisions des utilisateurs c’est peut être permetre à certains de rejoindre l’aventure.
    On peut s’inscrire au sujet et au catégorie du forum en fonction de ce que l’on souhaite suivre.

###Pro ML
Plein de geek ont l’habitude des ML

##Multiplication des canaux de discussion
Je trouve qu’il y a beaucoup de canaux de discussion, ce serait bien de pouvoir simplifier

##Animation de l’équipe de traduction
Je trouve que l’on intégre mal les traducteurs au sein de YunoHost… On ne les connait pas bien, c’est dommage.

#PLAN DE MIGRATION VERS CE NOUVEAU FONCTIONNEMENT

1 Like

Ce post initial a vocation à être modifié au fil des débats et des discussions.

(L’export markdown d’etherpad n’est pas passé parfaitement, je verrais plus tard… plus la force…)

Faut avancer…
En ce qui me concerne, je vais traiter que les points qui me conviennent pas. Pour le reste, ça me convient en l’état.
L’idée est d’aboutir rapidement à un base fonctionnelle à mettre en place qui pourra ensuite évoluée.

Pour un vote majeur, tout les avis nécessaires devrait être par des membres du “conseil” à mon avis. C’est quand même un vote majeur. Ça empêche pas d’autres votes quand même.

Je comprend pas, c’est indépendant du vote mineur/standard/majeur?

C’est un point délicat, je sais pas trop ce qui est le mieux…

Forge git pour les bug sur des apps et forum pour les discussions autour des process et autres.
Surtout pas redmine, qui ne permet pas de savoir de quelle app il s’agit lorsqu’on reçoit un mail…

[quote=“Maniack_Crudelis, post:1, topic:2054”]
Intégration d’une app en officiel (forum + redmine)[/quote]
Le forum, accessible à tout le monde. Et le contrib de l’app devrait pouvoir suivre facilement la discussion.

Globalement pour les app, je trouve que redmine est peu adapté.

De quel genre!? Je vois pas ce que ça pourrait être.

Le but est justement de ne plus se limiter aux geeks.

Merci pour le travail de synthèse @Maniack_Crudelis.

J’ai une remarque concernant la composition des groupes – qui je rejoins l’avis de @juju : comment gérer le fait qu’ils soient ouverts à tous et en même temps qu’ils permettre de prendre des décisions (et cela sans consulter le Conseil) ?

Pour rappel l’organisation imaginée lors de la rencontre du 22/23 octobre était de cette forme (je prendrais l’exemple du domaine Apps):

  1. Les contributeurs intéressés par les sujets Apps s’inscrivent aux canaux de communication du groupe où ils peuvent discuter et être force de proposition sur les sujets Apps
  2. Ces propositions peuvent être votés et validés par les membres décideurs du groupe
  3. En plus de ses membres décideurs, chaque groupe est composé d’un représentant dont le rôle est d’informer le conseil des décisions prises dans son groupe et de solliciter son avis si une décision a des conséquence sur d’autres groupe (un nouveau wiki par exemple, concerne autant la Doc que l’Infra) ou qu’un consens au sein de son groupe n’a pas été trouvé.

Cette organisation avait plusieurs objectifs :

  • décharger les responsabilités d’un domaine précis aux personnes les plus compétentes et désireuses de s’impliquer dans un domaine précis
  • intégrer plus facilement de nouveaux contributeurs
  • maintenir une cohésion sur les objectif du logiciel (grâce au Conseil)
  • ne pas confier la responsabilité du projet à une seule personne

Qu’en pensez-vous ?

1 Like

En effet ça m’avais échappé!
J’ai exprimé mon avis sur ces questions sur l’autre post, à savoir.

J’avais toutefois concédé que nous pourrions commencer par autoriser le vote à tous (sauf cas particulier) en admettant que chacun serait capable de se retenir de voter sur un sujet sur lequel il n’est pas compétent. Et cela afin de permettre à tous de participer.
Cette idée s’accompagnant de la possibilité par le conseil** de reprendre en main un vote en cas de dérive. Et de la possibilité, le cas échéant de refermer les votes si ça devient ingérable.

Je pense qu’il est intéressant de laisser libre accès aux discussions, débats, et autres activités de chaque groupe, que chacun devrait pouvoir participer aux groupes qui l’intéressent. Mais que l’intégration à un groupe ne soit possible qu’avec l’accord du groupe au préalable.

** “conseil”, ou tout autre nom qu’on souhaite lui donner.