Open source 设置和管理开放源码项目的最佳实践

Open source 设置和管理开放源码项目的最佳实践,open-source,project-management,installation,Open Source,Project Management,Installation,今年晚些时候,我想发布一个PHP框架,我一直致力于开源。我确实使用源代码管理(SVN),但它的基础非常有限。我自学成才,自学成才,没有与大型团队合作的经验。我有一些关于什么可以帮助项目成功的想法,但我对一些细节不太清楚。因为它还没有发布,我想从一开始就尽我所能建立正确的基础设施。为了建立和管理一个成功的项目,我需要知道什么 我要使其成功的一些想法(除了营销): 良好的文档和教程 自动化的单元测试和构建 将更新推送到网站 清晰的路线图 Bug跟踪与 源代码控制 保留代码的样式指南 一致的 一个让

今年晚些时候,我想发布一个PHP框架,我一直致力于开源。我确实使用源代码管理(SVN),但它的基础非常有限。我自学成才,自学成才,没有与大型团队合作的经验。我有一些关于什么可以帮助项目成功的想法,但我对一些细节不太清楚。因为它还没有发布,我想从一开始就尽我所能建立正确的基础设施。为了建立和管理一个成功的项目,我需要知道什么

我要使其成功的一些想法(除了营销):

  • 良好的文档和教程
  • 自动化的单元测试和构建 将更新推送到网站
  • 清晰的路线图
  • Bug跟踪与 源代码控制
  • 保留代码的样式指南 一致的
  • 一个让社区参与的论坛 支持、分享想法等
  • 一个使用 框架
  • 让社区了解情况的博客
  • 保持向后兼容性 尽可能
我的一些问题:

  • 我如何设置和自动化一个 步骤提交测试提交生成API 文档推送更新到网站的过程编辑:Ant或Maven是这方面的合适人选吗?如果是这样的话,您知道使用它们来设置PHP项目的任何资源吗
  • 我如何处理(技术上) 其他用户提交的内容?怎么可能 我确保这些意见书必须 是否在整合前获得批准
  • 有哪些陷阱可以避免 在以下方面可以避免: 项目社区?我更喜欢吃 它应该尽可能友好和有帮助 可能没有太多戏剧性

我很想从你的经验中学习这些要点中的任何一点。如果你认为我遗漏了什么大的东西,也请分享。如果您能为我提供任何资源(最好是面向初学者的资源),我将不胜感激。

我刚刚开始社区项目,但我会就我所知道的给您一些建议

如何设置和自动化一步提交测试提交生成API文档将更新推送到网站的过程

我从来没有把它作为一个过程来实现。你可以有一个清单,甚至可以创建一些脚本来完成某些任务。我从来没有使用过任何自动上传的源代码管理,这样的工作需要通过脚本来完成。大多数情况下,都会涉及到一些web交互

在正式发布之前,您不希望推动API更改

编辑:工作环境

对于PHP,大多数情况下,我要么直接在服务器上编辑并在那里测试它,使用beta.example.com或类似工具,然后再推到example.com。您还可以在家用PC上设置web环境(使用XAMPP for Windows或Linux上的标准LAMP安装)。您可能会在这里使用存储库的镜像,因此您可以执行
svn commit
,或者选择适合您选择的VCS或DVC的操作

有趣的部分是用不同的PHP版本测试它。我自己并没有这样做,但您可能可以使用.htaccess文件运行不同的PHP二进制文件来测试它。我真的不确定什么是最好的选择

我对API做得不多,因为我从来没有创建过库,只是快速搜索了一下。它看起来像一个成熟的项目,所以这可能是一个起点

至于创建发行版,我通常会创建一个脚本,其中只包含作为发行版一部分的文件(它会过滤掉所有VCS文件,以及您不希望在发行版文件中看到的任何文件)。您可以在linux上编写一个关于
find
的脚本(我大部分时间都是这样做的),或者还有其他更好的选择

我如何处理(技术上)来自其他用户的提交?我如何确保这些提交的文件在整合之前必须获得批准

这主要由bug跟踪器处理,并且在版本控制系统中访问受限。通常,你和你允许的人可以向风险投资公司承诺。其他用户可以提交修补程序,但您可能会让某人查看修补程序、测试修补程序并提交。您可以将这些任务分成一个团队,或者将补丁分配给一个人,让他们完成所有任务

在项目社区中可以避免的陷阱有哪些?我更希望它尽可能友好和有帮助,而不是太戏剧化


我只想确保与项目成员和社区保持尽可能积极的沟通。会有一些分歧,会让一些人离开,但只要你有一个稳定的产品,满足大多数人的需求,我想这是所有人都能期待的。

我想补充一点,你应该让你的用户尽可能容易地运行整个程序并修改代码-这些“超级用户”可以“转换”为开发人员,或者至少是发送较小补丁的人。

不要试图自己完成所有工作-对于那里的开源项目有几个主机提供商解决了大部分问题。我推荐codeplex或google代码

设置构建脚本在一定程度上取决于您设置的平台,但一般来说,一旦您开始使用任何类型的构建脚本,就可以很容易地向脚本中添加任何您想要的工具


如果您确实需要所描述的一步流程,那么您需要一个构建服务器。我使用TeamCity,我将其设置为监视svn中的任何更改,并在签入某些内容时触发构建/测试。构建服务器通常能够执行您输入到构建脚本中的任何步骤。

一个对我很有用的小建议:开始使用第一人称复数代词,而不是单数