今年晚些时候,我想发布一个我一直在开源的PHP框架。我确实使用了源代码控制(SVN),但它的使用非常有限。我是自学成才,我自己开发,没有与大型团队合作的经验。关于什么可以帮助项目成功,我有一些想法,但我对一些细节很模糊。由于它还没有发布,我想尽我所能从一开始就建立正确的基础设施。为了设置和管理成功的项目,我需要知道什么?
我必须使一些想法成功(除了推广它):
我的一些问题:
我很乐意从您对这些观点的经验中学习。如果您认为我错过了任何重大内容,请分享。你可以指出我的任何资源(最好是面向初学者)也会非常感激。
答案 0 :(得分:5)
我刚开始参与社区项目,但我会就你所知道的事情给你一些建议。
如何设置和自动化一步式提交 - 测试 - 提交 - 生成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
写一个脚本(这是我大部分时间都在做的),或者可能还有其他更好的选择。
如何处理(技术上)其他用户提交的内容?如何确保在整合之前必须批准这些提交?
这主要由错误跟踪器处理,并且版本控制系统中的访问受限。通常,您和您允许的人可以提交VCS。其他用户可以提交补丁,但之后您可能会有人查看补丁,测试补丁并提交。您可以将这些任务拆分为一个团队,或者为一个人分配补丁并让他们全部完成。
项目社区可以避免哪些陷阱?我宁愿让它尽可能友好和乐于助人而不会有太多的戏剧性。
我只想确保项目成员和社区尽可能保持积极态度。会有一些分歧,它会驱使一些人离开,但只要你有一个稳定的产品满足大多数人的需求,我认为这是所有人都可以期待的。
答案 1 :(得分:5)
对我来说效果很好的一个小建议:开始使用第一人称复数代词,而不是单数代词。也就是说,谈论“我们”和“我们”而不是“我”和“我”。它鼓励其他人在他们感觉自己是团队的一部分时参与,而不是当他们觉得他们正在贡献自己的自我扩张时。
答案 2 :(得分:4)
您必须做的最重要的事情是吸引用户。没有用户,您将无法获得任何贡献,开发人员会帮助您。因为开发人员是第一个用户,然后他们决定扩展/修复他们使用的东西,并可能成为贡献者。
为了吸引用户,你应该考虑
如果您完成了这一切,并且人们开始提交补丁,您可以使用补丁工具将这些补丁工具应用到您的来源。根据您的版本控制系统,您可以使用GNU补丁,版本控制附带的差异/补丁工具,甚至可以使用GUI工具来帮助您完成此操作。 SVN没有补丁工具(但是),但'svn diff'将创建一个补丁文件,然后您可以使用GNU补丁工具,或者如果您正在使用TortoiseSVN,请将补丁文件右键拖动到您的工作副本并让TortoiseMerge为你申请。
关于如何最好地与社区打交道:
你应该看一下“How Open Source Projects Survive Poisonous People (And You Can Too)”的演讲 - 这真的很好,并告诉你很多关于如何处理'有毒的人',以及如何处理你项目中涉及的所有人。< / p>
答案 3 :(得分:2)
我想补充一点,您应该让用户尽可能轻松地让整个程序运行并修改代码 - 这些“超级用户”可以“转换”为开发人员或至少发送给他们的人较小的补丁。
答案 4 :(得分:2)
不要试图自己完成 - 对于开源项目,有几个托管服务提供商可以解决大多数问题。我推荐使用codeplex或谷歌代码。
设置构建脚本将取决于您设置的平台的数量,但一般来说,一旦开始使用任何类型的构建脚本,就可以轻松地将任何所需的工具添加到脚本中。
如果您确实需要您描述的一步过程,则需要构建服务器。我使用TeamCity,我已经设置了它来监视svn中的任何更改,并在签入任何内容时触发构建/测试。构建服务器通常能够执行您在构建脚本中添加的任何步骤。
答案 5 :(得分:1)
在Git上阅读以替代SVN
一致的API
对用户和用户都很感兴趣开发者强>
您可以查看Ant或Phing来构建您的项目。在构建中包含CodeSniffer,您将节省检查基本格式错误/差异的时间。
这些都是技术提示,关于软性部分...尊重人们,引起很多人的兴趣,并且对他们的贡献感到非常兴奋,让他们觉得他们不会浪费他们的时间。这对我很有吸引力。
答案 6 :(得分:1)
看看卡尔福格尔关于Producing Open Source Software的书。它可能包含你提出的所有问题。
您还应该计划参与社区活动。我建议阅读Jono Bacon的社区艺术[http://www.artofcommunityonline.org/]。
答案 7 :(得分:0)