Mejores prácticas para lanzar una aplicación PHP de código abierto

10

Soy un desarrollador de PHP para vivir, pero nunca antes había trabajado o contribuido en ningún proyecto de código abierto.

Estoy desarrollando un CMS para mi propio uso. Tengo un prototipo que funciona y creo que una vez que esté listo (probablemente un par de meses) esto podría ser algo en lo que la comunidad PHP estaría interesada.

Soy un desarrollador bastante confiado, pero hay áreas en las que me falta conocimiento, especialmente cuando se trata de problemas de código abierto:

  • ¿Cuál es la mejor manera de publicitar el proyecto y / o encontrar a otros que puedan estar interesados ​​en colaborar?
  • Mi CMS funciona con CakePHP y básicamente se asienta como una capa encima. Bifurqué el proyecto CakePHP en GitHub: he usado sistemas de control de versiones (SVN) antes pero soy bastante nuevo en GIT, así que quiero estar seguro de que estoy haciendo las cosas de la "mejor manera"
  • ¿Cómo puedo averiguar sobre problemas de licencia? ¿Qué licencia de código abierto sería mejor para mi aplicación? Además, mi proyecto toma prestado de muchos otros proyectos de código abierto, por ejemplo, tengo secciones de código (que he modificado mucho) pero que tenían avisos de derechos de autor / licencia vigentes; no tengo idea de cuáles son mis obligaciones en términos de manteniéndolos en

Estos son solo un par de ejemplos de las preguntas que tengo, pero siento que debe haber algunos recursos que me serían útiles. ¿Dónde está el mejor lugar para comenzar, cuáles son las mejores comunidades / sitios que cubren estos temas? He echado un vistazo, pero no he podido encontrar mucho ...

usuario916336
fuente
¿Tenía un par de buenas respuestas sobre el tema de las licencias, alguna idea sobre las otras preguntas? ¡Posiblemente debería haber dividido esto en un par de publicaciones!
user916336

Respuestas:

5

No soy abogado, pero lo intentaré.

CakePHP tiene licencia bajo la licencia MIT , lo que básicamente significa que permite la reutilización dentro del software propietario con la condición de que la licencia se distribuya con ese software. Es compatible con las licencias GPL , bajo las cuales se publican muchos proyectos de código abierto.

En cuanto a los otros proyectos que "toma prestados", deberá verificar sus tipos de licencia y su compatibilidad entre ellos y el tipo de licencia que decida utilizar. Si alguno de ellos usa una licencia GPL , también tendrá que liberarlo con GPL, según los términos del estado de la licencia

La GPL es la primera licencia copyleft para uso general, lo que significa que los trabajos derivados solo pueden distribuirse bajo los mismos términos de licencia.

...

La GPL es la primera licencia copyleft para uso general, lo que significa que los trabajos derivados solo pueden distribuirse bajo los mismos términos de licencia.

Mi sugerencia es publicar bajo la licencia GNU GPL v3 , ya que le otorga derechos de propiedad adecuados sobre su trabajo mientras permite que otros lo usen potencialmente en proyectos comerciales y abiertos. Sin embargo, recuerde que las licencias de los proyectos "prestados" deben ser compatibles .


En cuanto a las mejores prácticas con Git y Github, use git submodulepara incluir otros proyectos en su propia biblioteca. Esto es mejor que incluir los archivos directamente, ya que no está volviendo a comprometer el trabajo como propio.

$ git submodule add git://github.com/cakephp/cakephp.git vendor/cake-php
$ git submodule update --init
adlawson
fuente
git submodule también es algo que no tengo claro. Por ejemplo, mi proyecto usa jQuery y jQuery UI, ¿cómo puedo incluirlo como un submódulo ya que la fuente en GitHub está dividida en muchos archivos y carpetas? He tenido lo mismo con HTMLPurifier que también estoy usando. Los archivos que necesito están en una subcarpeta, pero con el submódulo git parece que no tengo más remedio que incluir un montón de cosas adicionales que no necesito, lo que aumentará mi proyecto innecesariamente, o como dices, comprometer el trabajo de otra persona como ¡mío!
Como es la naturaleza de las licencias, no puede dividirse e incluir solo los archivos que desea. Debe incluir todo el proyecto tal como está empaquetado. git submodule add git://github.com/jquery/jquery.git public/vendor/jquery
adlawson
Sin embargo, otros no parecen hacer esto: tome Wordpress, parecen haber pegado los archivos minificados que necesitan de jQuery en una carpeta y los han comprometido: github.com/wordpress/wordpress/tree/master/wp-includes/js /…
1
WordPress usa SVN para el control de versiones. Su repositorio de Github es simplemente un espejo. Hasta donde yo sé, no hay capacidad de "submódulo" en SVN, por lo que no tuvieron más opción que volver a comprometerlo. En otra nota, no tome WordPress como ejemplo de mejores prácticas.
adlawson
A menos que me falte algo, no parece haber una forma de hacerlo en el caso de jQuery. Eche un vistazo a su repositorio github.com/jquery/jquery , son solo cientos de archivos .js individuales y un script de compilación, por lo que no puedo incluirlo en mi proyecto sin descargar una copia de jquery.com y comprometerlo yo mismo o estoy equivocado?
0

Echa un vistazo a esta guía de Eric S. Raymond (también vale la pena leer el resto del libro).

Personalmente, no me preocuparía mucho por eso: no va a ganar dinero directamente con esto, y tampoco lo hace nadie más, ya que hay una gran cantidad de excelentes CMS gratuitos de uso general. Le sugiero que vaya con la licencia más liberal que pueda (MIT o BSD), a menos que tome prestado un código que esté bajo una licencia viral (generalmente GPL o una variedad de ellas), en cuyo caso se verá obligado a acceder a esa licencia de una manera u otra.

Asegúrese de leer cuidadosamente todas las licencias de las bibliotecas y fragmentos que está utilizando; deben indicar si se le permite redistribuir y modificar el código, y si necesita incluirlos en cualquier trabajo derivado (la mayoría de las licencias lo requieren, e incluso para aquellos que no lo hacen, la atribución es lo menos que puede hacer para agradecer al autores originales por su trabajo).

tdammers
fuente