Meilleures pratiques pour publier une application PHP open source


10

Je suis un développeur PHP pour gagner ma vie, mais je n'ai jamais travaillé ou contribué à des projets open source auparavant.

Je développe un CMS pour mon propre usage. J'ai un prototype fonctionnel et je pense qu'une fois prêt (probablement dans quelques mois), la communauté PHP pourrait être intéressée.

Je suis un développeur assez confiant mais il y a des domaines où mes connaissances font défaut, en particulier en ce qui concerne les problèmes open source:

  • Quelle est la meilleure façon de faire connaître le projet et / ou de trouver d'autres personnes qui pourraient être intéressées à collaborer
  • Mon CMS est alimenté par CakePHP et se trouve essentiellement comme une couche au-dessus. J'ai bifurqué le projet CakePHP sur GitHub: j'ai déjà utilisé des systèmes de contrôle de version (SVN) mais je suis assez nouveau sur GIT alors je veux être sûr de faire les choses de "la meilleure façon"
  • Comment puis-je me renseigner sur les problèmes de licence? Quelle licence open source serait la meilleure pour mon application? De plus, mon projet emprunte à beaucoup d'autres projets open source, par exemple j'ai des sections de code (que j'ai lourdement modifiées) mais qui avaient des avis de copyright / licence en place - je n'ai aucune idée de mes obligations en termes de garder ces

Ce ne sont que quelques exemples des questions que j'ai, mais je pense qu'il doit y avoir des ressources qui me seraient utiles. Où est le meilleur endroit pour commencer, quelles sont les meilleures communautés / sites qui couvrent ces problèmes? J'ai jeté un coup d'œil mais je n'ai pas pu trouver grand chose ...


Vous avez eu quelques bonnes réponses sur les licences, des idées sur les autres questions? Peut-être aurait dû diviser cela en quelques messages!
user916336

Réponses:


5

Je ne suis pas avocat, mais je vais essayer celui-ci.

CakePHP est licencié sous la licence MIT , ce qui signifie essentiellement qu'il permet la réutilisation dans un logiciel propriétaire à condition que la licence soit distribuée avec ce logiciel. Il est compatible avec les licences GPL , sous lesquelles de nombreux projets open source sont publiés.

Quant aux autres projets que vous "empruntez", vous devrez vérifier leurs types de licence et vérifier leur compatibilité entre eux et le type de licence que vous décidez d'utiliser. Si l' un d'eux utilise une licence GPL , vous devrez également le libérer avec GPL, car les termes de la licence indiquent

La GPL est la première licence copyleft à usage général, ce qui signifie que les œuvres dérivées ne peuvent être distribuées que sous les mêmes conditions de licence.

...

La GPL est la première licence copyleft à usage général, ce qui signifie que les œuvres dérivées ne peuvent être distribuées que sous les mêmes conditions de licence.

Ma suggestion est de publier sous la licence GNU GPL v3 car elle vous donne des droits de propriété adéquats sur votre travail tout en permettant à d'autres de l'utiliser potentiellement dans des projets commerciaux et ouverts. N'oubliez pas, cependant, que les licences des projets "empruntés" doivent être compatibles .


En ce qui concerne les meilleures pratiques avec Git et Github, utilisez git submodulepour inclure d'autres projets dans votre propre bibliothèque. C'est mieux que d'inclure les fichiers directement car vous ne recommandez pas le travail comme le vôtre.

$ git submodule add git://github.com/cakephp/cakephp.git vendor/cake-php
$ git submodule update --init

git submodule est aussi quelque chose sur lequel je ne suis pas clair. Par exemple, mon projet utilise jQuery et jQuery UI - comment puis-je l'inclure comme sous-module car la source sur GitHub est divisée en plusieurs fichiers et dossiers. J'ai eu la même chose avec HTMLPurifier que j'utilise également. Les fichiers dont j'ai besoin sont dans un sous-dossier, mais avec le sous-module git, il semble que je n'ai pas d'autre choix que d'inclure des charges de choses supplémentaires dont je n'ai pas besoin, ce qui compliquera inutilement mon projet, ou comme vous le dites, engagez le travail de quelqu'un d'autre comme le mien!

Comme c'est la nature des licences, vous ne pouvez pas vous séparer et inclure uniquement les fichiers que vous souhaitez. Vous devez inclure l'ensemble du projet tel qu'il est emballé. git submodule add git://github.com/jquery/jquery.git public/vendor/jquery
adlawson

Cependant, d'autres ne semblent pas le faire: prenez Wordpress, ils semblent avoir simplement collé les fichiers minifiés dont ils ont besoin de jQuery dans un dossier et les ont validés

1
WordPress utilise SVN pour le contrôle de version. Leur référentiel Github n'est qu'un miroir. Pour autant que je sache, il n'y a pas de capacité de "sous-module" dans SVN, donc ils n'avaient pas d'autre choix que de le réengager. Sur une autre note, ne prenez pas WordPress comme exemple de meilleure pratique.
adlawson

À moins que je manque quelque chose, il ne semble pas y avoir de moyen de le faire dans le cas de jQuery. Jetez un œil à leur dépôt github.com/jquery/jquery , ce ne sont que des centaines de fichiers .js individuels et un script de construction - donc je ne peux pas l'inclure dans mon projet sans télécharger une copie de jquery.com et la valider moi-même , ou ai-je tort?

0

Consultez ce guide d'Eric S. Raymond (le reste du livre vaut également la peine d'être lu).

Personnellement, je ne m'en inquiéterais pas beaucoup - vous n'allez pas gagner d'argent directement avec cela, et personne d'autre non plus, car il existe déjà une abondance d'excellents CMS gratuits à usage général. Je vous suggère d'utiliser la licence la plus libérale possible (MIT ou BSD), à moins que vous n'empruntiez du code sous une licence virale (généralement GPL ou une variété de celles-ci), auquel cas vous êtes obligé d'utiliser cette licence d'une manière ou d'une autre.

Assurez-vous de lire attentivement toutes les licences des bibliothèques et extraits de code que vous utilisez; ils doivent indiquer si vous êtes autorisé à redistribuer et à modifier le code, et si vous devez les inclure dans les œuvres dérivées (la plupart des licences l'exigent, et même pour celles qui ne le font pas, l'attribution est le moins que vous puissiez faire pour remercier le auteurs originaux pour leur travail).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.