Лучшие практики для выпуска PHP-приложения с открытым исходным кодом

10

Я зарабатываю на PHP, но никогда раньше не работал и не участвовал в проектах с открытым исходным кодом.

Я разрабатываю CMS для собственного использования. У меня есть работающий прототип, и я думаю, что когда он будет готов (возможно, через пару месяцев), это может быть чем-то, что заинтересовало бы сообщество PHP.

Я довольно уверенный разработчик, но есть области, в которых мои знания отсутствуют, особенно когда речь идет о проблемах с открытым исходным кодом:

  • Как лучше всего публиковать проект и / или находить других людей, которые могут быть заинтересованы в сотрудничестве?
  • Моя CMS работает на CakePHP и в основном находится в виде слоя поверх него. Я разработал проект CakePHP на GitHub: раньше я пользовался системами контроля версий (SVN), но я довольно плохо знаком с GIT, поэтому хочу быть уверенным, что я делаю вещи «наилучшим образом»
  • Как я могу узнать о проблемах лицензирования? Какая лицензия с открытым исходным кодом подойдет для моего приложения? Кроме того, мой проект заимствует из многих других проектов с открытым исходным кодом, например, у меня есть разделы кода (которые я сильно изменил), но в которых были уведомления об авторском праве / лицензировании - я понятия не имею, каковы мои обязательства с точки зрения держать их в

Это всего лишь несколько примеров вопросов, которые у меня есть, но я чувствую, что должны быть какие-то ресурсы, которые были бы полезны для меня. Где лучше всего начать, каковы лучшие сообщества / сайты, которые освещают эти проблемы? Я осмотрелся вокруг, но не смог придумать много ...

user916336
источник
Была ли пара хороших ответов о лицензировании, есть идеи по другим вопросам? Возможно, следовало бы разделить это на пару постов!
user916336

Ответы:

5

Я не юрист, но я попробую.

CakePHP лицензируется по лицензии MIT , что в основном означает, что он разрешает повторное использование в проприетарном программном обеспечении при условии, что лицензия распространяется с этим программным обеспечением. Он совместим с лицензиями GPL , под которыми выпущено много проектов с открытым исходным кодом.

Что касается других проектов, которые вы «заимствуете», вам придется проверить их типы лицензий и проверить их совместимость друг с другом и тип лицензии, которую вы решили использовать. Если кто-либо из них использует лицензию GPL , вам также придется выпустить лицензию GPL в соответствии с условиями лицензии.

GPL является первой лицензией с авторским левом для общего пользования, что означает, что производные работы могут распространяться только на тех же условиях лицензии.

...

GPL является первой лицензией с авторским левом для общего пользования, что означает, что производные работы могут распространяться только на тех же условиях лицензии.

Я предлагаю выпустить под лицензией GNU GPL v3, поскольку она дает вам соответствующие права собственности на вашу работу, позволяя другим потенциально использовать ее как в коммерческих, так и в открытых проектах. Помните, однако, что лицензии «заимствованных» проектов должны быть совместимы .


Что касается лучших практик с Git и Github, используйте git submoduleдля включения других проектов в свою собственную библиотеку. Это лучше, чем включать файлы напрямую, поскольку вы не принимаете работу как свою собственную.

$ git submodule add git://github.com/cakephp/cakephp.git vendor/cake-php
$ git submodule update --init
adlawson
источник
Подмодуль git - это тоже то, что мне неясно. Например, мой проект использует jQuery и jQuery UI - как я могу включить его в качестве подмодуля, так как источник на GitHub разбит на множество файлов и папок. У меня было то же самое с HTMLPurifier, который я тоже использую. Файлы, которые мне нужны, находятся в одной подпапке, но с подмодулем git кажется, что у меня нет выбора, кроме как включить множество ненужных мне вещей, которые излишне наберут мой проект, или, как вы говорите, коммитить чужую работу как мой собственный!
Как характер лицензирования, вы не можете разделить и включить только те файлы, которые вы хотите. Вы должны включить весь проект, как он упакован. git submodule add git://github.com/jquery/jquery.git public/vendor/jquery
Adlawson
Другие, похоже, этого не делают: возьмите Wordpress, они, похоже, просто сунули нужные файлы из jQuery в папку и зафиксировали их: github.com/wordpress/wordpress/tree/master/wp-includes/js /…
1
WordPress использует SVN для контроля версий. Их репозиторий Github - просто зеркало. Насколько я знаю, в SVN нет возможности «подмодуля», поэтому у них не было другого выбора, кроме как подтвердить его. С другой стороны, не принимайте WordPress в качестве примера лучшей практики.
Adlawson
Если я не пропустил что-то, похоже, нет способа сделать это в случае с jQuery. Взгляните на их репозиторий github.com/jquery/jquery , это просто сотни отдельных файлов .js и скрипт сборки, поэтому я не могу включить его в свой проект, просто скачав копию с jquery.com и зафиксировав ее сам или я не прав?
0

Проверьте это руководство от Эрика С. Рэймонда (остальная часть книги также стоит прочитать).

Лично я бы не стал сильно беспокоиться об этом - вы не будете зарабатывать на этом деньги напрямую, как и никто другой, поскольку уже есть множество отличных бесплатных универсальных CMS. Я предлагаю вам использовать самую либеральную лицензию, которую вы можете (MIT или BSD), если только вы не заимствуете код, на который распространяется вирусная лицензия (как правило, GPL или их разновидности), и в этом случае вы так или иначе вынуждены использовать эту лицензию.

Обязательно внимательно прочитайте все лицензии библиотек и фрагментов, которые вы используете; они должны указать, разрешено ли вам распространять и изменять код и нужно ли включать их в какие-либо производные работы (большинство лицензий требуют этого, и даже для тех, кто этого не делает, атрибуция - это минимум, что вы можете сделать, чтобы поблагодарить авторы оригинальных работ).

tdammers
источник