Organisation d'un projet avec sous-projets plugins

Le problème exposé dans ce sujet a été résolu.

Bonjour à tous,

Je travaille depuis quelque temps sur un projet en C++, où les utilisateurs peuvent créer des plugins/extensions en python. En d'autres termes mon logiciel C++ embarque l'interpréteur python 3.4 et propose une API python à l'utilisateur (sous forme de module inclus) .

Ce projet est open source et hébergé sur GitHub ici: http://www.github.com/qtnc/6pad2

La question est la suivante, je commence à avoir 2 ou 3 personnes motivés pour créer quelques plugins. Je leur ai suggéré de se mettre à GIT pour que ce soit plus pratique, mais en fait comment s'organiser ?

  • Ils vont travailler sur des plugins uniquement, ils connaissent python mais pas C++. Ce serait donc assez illogique (et éventuellement dangereux) de leur donner un accès en écriture à la totalité du dépôt.
  • Je n'ai pas l'impression qu'on puisse ne donner accès en écriture qu'à un sous-répertoire du dépôt, que ce soit sur GitHub ou sur un GIT auto-hébergé d'ailleurs
  • Que chaque scripteur clone fork la totalité du projet pour ne travailler que dans un seul sous-répertoire ne me paraît pas excessivement pratique, autant de leur côté (car ils n'ont que faire des sources C++ et ne vont pas s'amuser à les compiler eux-mêmes), que de mon côté le jour où on m'enverra des pull request, des patch (ou un autre moyen pour que je puisse inclure leur travail dans une distribution de base)
  • Question bonus: qu'en est-il du référencement des plugins ? de mon côté, lister le travail des autres, et de leur côté, bien faire comprendre qu'ils ont écrit un plugin pour mon programme, qui ne peut donc pas fonctionner sans mon programme ?

Merci pour vos réponses.

+0 -0

Bonjour,

S'ils n'ont pas besoin du reste du projet, il me semble préférable de créer un nouveau dépôt pour chacun des plugins. Ensuite, libre à toi d'intégrer ces plugins dans le dépôt principal via des submodules ; ou de créer des paquets pip pour chaque paquet, laissant ainsi à l'utilisateur le choix des plugins qu'il souhaite installer.

Ensuite, libre à toi d'intégrer ces plugins dans le dépôt principal via des submodules ;

Est-ce que tu peux m'en dire plus ? Merci.

ou de créer des paquets pip pour chaque paquet, laissant ainsi à l'utilisateur le choix des plugins qu'il souhaite installer.

Le programme est en C++, pas en python, rien ne dit que python est installé chez l'utilisateur, donc je ne peux pas utiliser pip, si ?

+0 -0

Est-ce que tu peux m'en dire plus ? Merci.

QuentinC

Les submodules permettent de lier d'autres dépôts git dans un dépôt principal, qui prendront la forme de sous-répertoires, et que tu pourras gérer tous en même temps. Le git-scm sera plus exhaustif que moi sur le sujet (ou en français).

Le programme est en C++, pas en python, rien ne dit que python est installé chez l'utilisateur, donc je ne peux pas utiliser pip, si ?

QuentinC

Dans tous les cas, si tu souhaites faire tourner tes plugins Python, il te faudra un interpréteur d'installé (au minimum la bibliothèque Python), donc autant mettre Python en dépendance de ton programme.

Merci, je vais regarder pour les submodules.

Par contre pour la deuxième partie de ton message :

Dans tous les cas, si tu souhaites faire tourner tes plugins Python, il te faudra un interpréteur d'installé (au minimum la bibliothèque Python), donc autant mettre Python en dépendance de ton programme.

Je ne comprends pas trop. La bibliothèque python est présente mais elle est embarquée à l'exécutable. IL n'y a pas d'interpréteur disponible en-dehors de mon programme. Autrement dit je pars du principe que la commande python dans une fenêtre de commande n'existe pas forcément.

La bibliothèque python est fournie avec le programme sous-forme d'un fichier python34.zip qui fait 3,8 Mo, en plus bien sûr de la DLL python34.dll qui fait 2,6 Mo. Dans ce contexte je ne vois pas comment je pourrais utiliser pip. Chez moi ça marchera parce que j'ai installé la distribution officielle. A part si pip est appelable programmatiquement…

C'est vrai, j'ai oublié de précisé que j'étais sous windows, et windows uniquement, pas de portage linux possible. Je pensais que c'était plus ou moins évident étant donné que je parlais réellement d'embarquer l'interpréteur dans mon logiciel C++. Sous linux à ce que je sache ça ne se fait pas trop de cette manière. Désolé pour le manque de précision.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte