[英]Best Practices for Setup and Management of an Open Source Project
今年晚些时候,我想发布一个我一直在开源的PHP框架。 我确实使用了源代码控制(SVN),但它的使用非常有限。 我是自学成才,我自己开发,没有与大型团队合作的经验。 关于什么可以帮助项目成功,我有一些想法,但我对一些细节很模糊。 由于它还没有发布,我想尽我所能从一开始就建立正确的基础设施。 为了设置和管理成功的项目,我需要知道什么?
我必须使一些想法成功(除了营销之外):
我的一些问题:
我很乐意从你对这些方面的经验中学习。 如果您认为我错过了任何重大内容,请分享。 您可以指向我的任何资源(最好是面向初学者)也会非常感激。
我刚刚开始参与社区项目,但我会就你所知道的事情给你一些建议。
如何设置和自动化一步提交 - 测试 - 提交 - 生成API文档 - 推送更新到网站流程?
我从来没有将它作为一个过程实现。 你可以只有一个清单,甚至可能创建一些脚本来完成某些任务。 我从来没有使用任何自动上传的源代码控制,而是由脚本完成。 大多数时候,都会涉及一些网络互动。
在官方发布之前,您不希望推送API更改。
编辑:工作环境
对于PHP,大多数时候,我要么直接在服务器上进行编辑,然后使用beta.example.com或类似方法在那里进行测试,然后再推送到example.com。 您还可以在家用PC上设置Web环境(使用XAMPP for Windows,或Linux上的标准LAMP安装)。 您可能只是在这里使用存储库的镜像,因此您可以执行svn commit
,或者适合您选择的VCS或DVCS。
有趣的部分是使用不同的PHP版本测试它。 我自己没有这样做,但是你可以使用.htaccess文件运行不同的PHP二进制文件来测试它。 我不确定这是最好的选择。
我没有做过很多API,因为我从来没有创建过一个库,但只是快速搜索我找到了http://www.phpdoc.org/ 。 它看起来像一个成熟的项目,所以这可能是一个起点。
就创建版本而言,我通常创建一个脚本,该脚本仅包含作为发行版的一部分的文件(它将过滤掉任何VCS文件,以及您在分布式文件中不需要的任何内容)。 你可以在linux上find
一个关于find
的脚本(这是我大部分时间都在做的),或者可能还有其他更好的选择。
如何处理(技术上)其他用户提交的内容? 如何确保在整合之前必须批准这些提交?
这主要由错误跟踪器处理,并且在版本控制系统中受限制。 通常,您和您允许的人可以提交VCS。 其他用户可以提交补丁,但之后您可能会有人查看补丁,测试补丁并提交。 您可以将这些任务拆分为一个团队,或者为一个人分配补丁并让他们全部完成。
在项目社区方面可以避免哪些陷阱? 我宁愿让它尽可能友好和乐于助人,没有太多的戏剧性。
我只想确保项目成员和社区尽可能保持积极态度。 会有一些分歧,它会驱使一些人离开,但只要你有一个稳定的产品,满足大多数人的需求,我认为这是所有人都可以期待的。
一个小的建议,对我来说很有效:开始使用第一人称复数代词,而不是单数代词。 也就是说,谈论“我们”和“我们”而不是“我”和“我”。 它鼓励其他人在他们感觉自己是团队的一部分时参与,而不是当他们觉得他们正在贡献自己的自我强化时。
您必须做的最重要的事情是吸引用户。 没有用户,您将无法获得任何贡献,开发人员会帮助您。 因为开发人员是用户的第一,然后他们决定扩展/修复他们使用的东西,并可能成为贡献者。
所以为了吸引用户,你应该考虑
如果你得到了所有这些,并且人们开始提交补丁,你可以使用补丁工具将这些补丁工具应用到你的来源。 根据您的版本控制系统,您可以使用GNU补丁,版本控制附带的差异/补丁工具,甚至可以使用GUI工具来帮助您完成此操作。 SVN没有补丁工具(但是),但'svn diff'将创建一个补丁文件,然后您可以使用GNU补丁工具,或者如果您正在使用TortoiseSVN,请将补丁文件右键拖动到您的工作副本并让TortoiseMerge为您应用它。
以及如何最好地与社区打交道:
而且你应该看一下“ 开源项目如何生存有毒人群(你也可以) ” - 这非常好,并且告诉你很多关于如何处理“有毒人”以及如何处理所有涉及的人在你的项目中。
我想补充一点,您应该让用户尽可能轻松地完成所有操作并修改代码 - 这些“高级用户”可以“转换”为开发人员或至少发送较小补丁的人。
不要试图自己完成 - 对于开源项目,有几个托管服务提供商可以解决大多数问题。 我推荐使用codeplex或谷歌代码。
设置构建脚本在某种程度上取决于您设置的平台,但一般情况下,一旦开始使用任何类型的构建脚本,就可以轻松地将所需的任何工具添加到脚本中。
如果您确实需要您描述的一步过程,则需要构建服务器。 我使用TeamCity,我已经设置了它来监视svn中的任何更改并在检查某些内容时触发构建/测试。构建服务器通常能够执行您在构建脚本中执行的任何步骤。
阅读Git作为SVN的替代方案
一致的API
对用户和开发人员都很有意思
您可以查看Ant或Phing来构建您的项目。 在构建中包含CodeSniffer ,您将节省检查基本格式错误/差异的时间。
这些都是关于柔软部分的技术提示......尊重他人,非常感兴趣,对他们的贡献过于兴奋,让他们觉得他们不浪费时间。 这对我很有吸引力。
看看Karl Fogel关于制作开源软件的书。 它可能包含你提出的所有问题。
您还应该计划参与社区活动。 我建议阅读Jono Bacon的社区艺术[ http://www.artofcommunityonline.org/] 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.