• # Contribuer à OpenStack bénévolement est devenu impossible.

    Posté par . En réponse à la dépêche Présentation d’OpenStack. Évalué à 10.

    Bonjour à toutes et à tous,

    C'est mon premier post sur LinuxFr, j'arpente pourtant ces colonne depuis fort longtemps, mais ce sujet m'a décider à franchir le pas sous la forme d'un coup de gueule. (drôle d'entrée en matière :)

    J'ai contribué à OpenStack sur les projets Nova et Cinder sur les versions Folsom, Grizzly et Havana.

    A cette époque, la communauté était plus petite et surtout plus fournie en "vrai" contributeurs individuels.

    Non pas que je déplore l'engouement des grands groupes pour ce projet magnifique, OpenStack ne serait pas ce qu'il est sans eux, mais il est extrèmement difficile aujourd'hui de faire entrer quoique ce soit en son sein.

    Je vais prendre l'exemple de Cinder (mais c'est pareil dans les autres projets).
    Aujourd'hui, un driver cinder se résume (pour faire simple) à interfacer l'API d'un système de stockage (quel qu'il soit) avec Cinder. Créer un binding, en gros, entre ces deux monde.

    1) Avant même de commencer à écrire la moinde ligne, il faut créer un blueprint (proposition de votre fonctionnnalité auprès de la communauté). C'est très compliqué aujourd'hui de créer ce blueprint, c'est extrèment structuré, il faut passer un temps monstre à discuter avec les CoreDev pour etre certain de ne rien oublier et de faire ça dans les formes.

    2) Il faut de votre blueprint soit accepté par les CoreDev. Il faut donc passer encore du temps à faire du lobbying auprès des CoreDev (payer des bières peut aider ;). Mais vous n'avez toujours pas commencé à coder.

    3) Votre blueprint est accepté, super, vous avez maintenant le droit de pousser du code.
    Ici, c'est du classique au niveau des choses requises pour que votre code soit mergé:

    • Respect de la norme PEP8 (oui on fait du Python)
    • Votre code doit intégrer des tests unitaires (ceux qui test, c'est ceux qui doute ?)

    4) La revue de code (c'est là une des raisons qui m'a décidé à arrêter de contribuer sur ce projet)

    Pour rappel, je suis un contributeur individuel et bénévole, c'est à dire que je ne suis pas payé (par un grand groupe) pour contribuer à OpenStack, je le fait simplement parce que j'aime ce projet, que j'ai l'envie de le faire et je le fais sur mon temps libre.
    Le suivi de votre revue de code est très importante, tout contributeur peu participer à la revue du code de n'importe qui.
    Vous aller être questionner sur la pertinance d'un bout de code, on va peut-être vous apprendre des choses ou vous dire que telle fonction existe déja dans cinder.common
    Il faut répondre aux questions, expliquer, accepter de changer etc ... du classique.

    Sauf qu'il m'a été reprocher de ne pas répondre suffisamant vite (dans la journée). Excusez moi de bosser ...

    5) Infrastructure de tests d'intégration (CI)

    C'est relativement récent, je ne sais plus exactement sur quelle release c'est arrivé.

    Dorénavant, chaque driver doit fournir une infrastructure de tests d'intégration pour son driver.
    Encore une fois, pour des grands groupes, aucun problème pour payer quelques dizaines d'instances sur AWS ou bien monter une infrastructure en propre.

    Mais quand est-il des "petits" projets ? Quand est-il des drivers déja présents dans OpenStack ?

    Et bien pour les petits projets, c'est très dur, voir impossible.
    Pour les drivers déja présents dans OpenStack qui n'ont pas mis en place cette infrastructure de tests, il ont purement et simplement étés supprimés !

    Qu'OpenStack décide d'avoir une polique visant à fournir des drivers de qualité, peux se comprendre.
    Mais qu'on laisse les petits projets exister, pourquoi ne pas avoir créer un répertoire 3th-party-drivers contenant les drivers qui ne couvrent pas entièrement les pré-requis ?

    Qu'est ce qu'il reste aux vrai contributeurs individuel ? Bug Triage ? Bug Fixing ? Mais aucune nouvelle features ? Ecoeurant ...

    Aujourd'hui, je suis toujours utilisateur d'OpenStack, je le modifie, je l'améliore mais tout ça dans mon coin et ne commit plus rien ... c'est moche.