发布开源PHP应用程序的最佳实践


10

我是一名以PHP为生的开发人员,但之前从未从事过任何开源项目或为任何开源项目做出过贡献。

我正在开发自己使用的CMS。我有一个可以正常工作的原型,我认为一旦准备就绪(可能需要几个月的时间),PHP社区可能会对这感兴趣。

我是一个相当有信心的开发人员,但是在某些领域我缺乏知识,尤其是在涉及开源问题时:

  • 公开项目和/或找到其他可能对协作感兴趣的最佳方法是什么
  • 我的CMS由CakePHP提供支持,并且基本上位于其之上。我在GitHub上创建了CakePHP项目:我以前使用过版本控制系统(SVN),但对于GIT来说还很陌生,因此请确保我以“最佳方式”进行操作
  • 如何找到许可问题?哪个开源许可证最适合我的应用?另外,我的项目是从许多其他开源项目中借用的,例如,我有一些代码段(我对此进行了重大修改),但是其中有版权/许可声明-我不知道我在履行方面的义务保留这些

这些只是我所遇到问题的几个例子,但我觉得那里必须有一些对我有用的资源。哪里是最好的入门场所,哪些是覆盖这些问题的最佳社区/站点?我环顾四周,但想不出太多...


在许可方面有两个很好的答案,其他问题有什么想法吗?可能应该将其拆分为几个帖子!
user916336 2011年

Answers:


5

我不是律师,但我会尝试一下。

CakePHP是根据MIT许可获得许可的,这基本上意味着,只要许可是与该软件一起分发的,它就可以在专有软件中重用。它与GPL许可证兼容,GPL许可证是在其中发布了许多开源项目。

至于您“借用” 的其他项目,则必须检查它们的许可证类型,并检查它们之间的兼容性以及您决定使用的许可证类型。如果其中任何一个使用GPL许可证,则您还必须随GPL一起发布,作为许可证状态的条款

GPL是第一个通用的Copyleft许可,这意味着派生作品只能在相同的许可条款下分发。

...

GPL是第一个通用的Copyleft许可,这意味着派生作品只能在相同的许可条款下分发。

我的建议是根据GNU GPL v3许可发布,因为它为您提供了对作品的足够所有权,同时允许其他人潜在地在商业和开放项目中使用它。但是请记住,“借用”项目的许可证必须兼容


至于使用Git和Github的最佳实践,请使用git submodule来将其他项目包含在您自己的库中。这比直接包含文件要好,因为您不会自己重新提交工作。

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

git子模块也是我不清楚的东西。例如,我的项目使用jQuery和jQuery UI,因为GitHub上的源代码分为许多文件和文件夹,所以我如何将其作为子模块包含在内。我在使用HTMLPurifier时也遇到了同样的问题。我需要的文件位于一个子文件夹中,但是对于git子模块,我似乎别无选择,只能包含我不需要的大量额外内容,这些不必要的内容会不必要地占用我的项目,或者就像您说的那样提交其他人的工作我自己的!

由于许可的性质,您不能拆分,仅包含所需的文件。您应该包括打包好的整个项目。git submodule add git://github.com/jquery/jquery.git public/vendor/jquery
2011年

但是其他人似乎没有这样做:以Wordpress为例,他们似乎只是将jQuery所需的缩小文件粘贴到一个文件夹中并提交了它们:github.com/wordpress/wordpress/tree/master/wp-includes/js /…

1
WordPress使用SVN进行版本控制。他们的Github存储库只是一个镜像。据我所知,SVN中没有“子模块”功能,因此他们没有其他选择,只能重新提交。另一方面,请勿将WordPress作为最佳做法的示例。
adlawson 2011年

除非我缺少某些东西,否则就jQuery而言似乎没有一种方法可以做到这一点。看看他们的回购github.com/jquery/jquery,它只是数百个单独的.js文件和一个构建脚本-所以我不能将其包含在我的项目中,而不仅仅是从jquery.com下载副本并自己提交,还是我错了?

0

查阅Eric S. Raymond的本指南(本书的其余部分也值得一读)。

就我个人而言,我不会为此担心太多-您不会直接从中赚钱,其他任何人也不会赚钱,因为已经有许多出色的免费通用CMS。我建议您使用最宽松的许可证(MIT或BSD),除非您借用的是病毒许可证(通常是GPL或各种许可证)下的代码,在这种情况下,您将被迫以某种方式获得该许可证。

请务必仔细阅读您正在使用的库和摘要的所有许可证;他们应该说明是否允许您重新分发和修改代码,以及是否需要将它们包括在任何派生作品中(大多数许可证都要求这样做,即使对于那些不需要的许可证而言,归因是至少您可以做的,以感谢原作者)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.