Práticas recomendadas para liberar um aplicativo PHP de código aberto


10

Sou desenvolvedor PHP, mas nunca trabalhei ou contribuí com projetos de código aberto.

Estou desenvolvendo um CMS para meu próprio uso. Eu tenho um protótipo funcional e acho que, uma vez pronto (provavelmente alguns meses), isso pode ser algo em que a comunidade PHP estaria interessada.

Sou um desenvolvedor bastante confiante, mas há áreas em que meu conhecimento está ausente, especialmente quando se trata de problemas de código aberto:

  • Qual é a melhor maneira de divulgar o projeto e / ou encontrar outras pessoas que possam estar interessadas em colaborar
  • Meu CMS é alimentado por CakePHP e basicamente fica como uma camada em cima dele. Eu bifurei o projeto CakePHP no GitHub: eu já usei sistemas de controle de versão (SVN) antes, mas sou bastante novo no GIT, por isso quero ter certeza de que estou fazendo as coisas "da melhor maneira"
  • Como posso saber sobre problemas de licenciamento? Qual licença de código aberto seria melhor para meu aplicativo? Além disso, meu projeto toma emprestado de muitos outros projetos de código aberto, por exemplo, tenho seções de código (que modifiquei bastante), mas que possuem avisos de direitos autorais / licenciamento em vigor - não tenho idéia de quais são minhas obrigações em termos de mantendo-os em

Estes são apenas alguns exemplos das perguntas que tenho, mas sinto que deve haver alguns recursos por aí que seriam úteis para mim. Onde é o melhor lugar para começar, quais são as melhores comunidades / sites que cobrem esses problemas? Eu olhei em volta, mas não consegui pensar em muito ...


Teve algumas boas respostas sobre material de licenciamento, alguma idéia sobre as outras perguntas? Possivelmente deveria ter dividido isso em algumas postagens!
user916336

Respostas:


5

Não sou advogado, mas vou tentar este.

O CakePHP é licenciado sob a licença MIT , o que significa basicamente que permite a reutilização dentro de software proprietário, desde que a licença seja distribuída com esse software. É compatível com licenças GPL , sob a qual muitos projetos de código aberto foram lançados.

Quanto aos outros projetos que você "empresta", será necessário verificar os tipos de licença e a compatibilidade entre si e o tipo de licença que você decidir usar. Se algum deles usar uma licença GPL , você também precisará liberá-lo com a GPL, conforme os termos do estado da licença.

A GPL é a primeira licença copyleft para uso geral, o que significa que trabalhos derivados podem ser distribuídos apenas sob os mesmos termos de licença.

...

A GPL é a primeira licença copyleft para uso geral, o que significa que trabalhos derivados podem ser distribuídos apenas sob os mesmos termos de licença.

Minha sugestão é liberar sob a licença GNU GPL v3 , pois ela oferece direitos de propriedade adequados sobre o seu trabalho, permitindo que outras pessoas o usem potencialmente em projetos comerciais e abertos. Lembre-se, no entanto, as licenças dos projetos "emprestados" devem ser compatíveis .


Quanto às práticas recomendadas com Git e Github, use git submodulepara incluir outros projetos em sua própria biblioteca. É melhor do que incluir os arquivos diretamente, pois você não está recomendando o trabalho como seu.

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

O submódulo git também é algo em que não estou claro. Por exemplo, meu projeto usa jQuery e jQuery UI - como posso incluí-lo como um submódulo, pois a fonte no GitHub é dividida em muitos arquivos e pastas. Eu tive a mesma coisa com HTMLPurifier que também estou usando. Os arquivos que eu preciso estão em uma subpasta, mas com o submódulo git, parece que não tenho escolha, mas incluir um monte de coisas extras que eu não preciso, que aumentarão desnecessariamente meu projeto ou, como você diz, comprometer o trabalho de outra pessoa como meu próprio!

Como é a natureza do licenciamento, você não pode dividir e incluir apenas os arquivos que deseja. Você deve incluir o projeto inteiro como ele é empacotado. git submodule add git://github.com/jquery/jquery.git public/vendor/jquery
precisa saber é o seguinte

Outros parecem não fazer isso: pegue o Wordpress, eles parecem ter colocado os arquivos minificados de jQuery em uma pasta e os comprometido: github.com/wordpress/wordpress/tree/master/wp-includes/js /…

11
WordPress usa SVN para controle de versão. O repositório do Github é simplesmente um espelho. Tanto quanto sei, não há recurso de "submódulo" no SVN, portanto eles não tinham outra opção a não ser reconfigurá-lo. Em outra nota, não tome o WordPress como um exemplo de boas práticas.
adlawson

A menos que esteja faltando alguma coisa, não parece haver uma maneira de fazer isso no caso do jQuery. Dê uma olhada no repo github.com/jquery/jquery , são apenas centenas de arquivos .js individuais e um script de construção - portanto, não posso incluí-lo no meu projeto sem fazer o download de uma cópia do jquery.com e enviá-la eu mesmo. , ou eu estou errado?

0

Confira este guia de Eric S. Raymond (o restante do livro também merece ser lido).

Pessoalmente, eu não me preocuparia muito com isso - você não vai ganhar dinheiro com isso diretamente, e nem mais ninguém, pois já há uma abundância de excelentes CMSs de uso geral gratuitos. Eu sugiro que você escolha a licença mais liberal possível (MIT ou BSD), a menos que você empreste código que esteja sob uma licença viral (normalmente GPL ou uma variedade dela); nesse caso, você será forçado a entrar nessa licença de uma maneira ou de outra.

Leia com atenção todas as licenças das bibliotecas e snippets que você está usando; eles devem indicar se você tem permissão para redistribuir e modificar o código e se é necessário incluí-lo em qualquer trabalho derivado (a maioria das licenças exige, e mesmo para aqueles que não o fazem, a atribuição é o mínimo que você pode fazer para agradecer ao autores originais por seu trabalho).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.