建立和管理开源项目的最佳实践

     2023-03-06     4

关键词:

【中文标题】建立和管理开源项目的最佳实践【英文标题】:Best Practices for Setup and Management of an Open Source Project 【发布时间】:2010-04-02 16:23:03 【问题描述】:

今年晚些时候,我想发布一个我一直致力于开源的 PHP 框架。我确实使用源代码控制 (SVN),但它的基础非常有限。我是自学成才的,我自己开发,没有与大型团队合作的经验。我对什么可以帮助项目成功有一些想法,但我对一些细节很模糊。由于它尚未发布,我想尽我所能从一开始就设置正确的基础架构。为了设置和管理成功的项目,我需要了解什么?

我必须让它成功的一些想法(除了营销它):

良好的文档和教程 自动化单元测试和构建 将更新推送到网站 清晰的路线图 错误跟踪与集成 源代码管理 保留代码的样式指南 一致 供社区获取的论坛 支持、分享想法等。 一个很好的示例应用程序 框架 让社区了解最新动态的博客 保持向后兼容性 尽可能

我的一些问题:

如何设置和自动化一个 步骤提交测试提交生成 API 文档推送更新到网站流程? 编辑:Ant 或 Maven 会是很好的候选者吗?如果是这样,您知道使用它们设置 PHP 项目的任何资源吗? 我该如何处理(技术上) 来自其他用户的提交?怎么能 我确保这些提交必须 在整合之前获得批准? 有哪些陷阱? 可以避免的方面 项目社区?我宁愿有 它像友好和乐于助人一样 可能没有太多戏剧性。

我很想从您在这些方面的经验中学习。如果您认为我遗漏了任何重要内容,也请分享。您可以向我指出的任何资源(最好面向初学者)也将不胜感激。

【问题讨论】:

一次一个问题在这里是个好主意。 在这一点上,关于自动系统设置的第一个问题可能是我主要关心的问题。 无耻插件:openprojectguide.org 我正在那里写一些关于开源项目的启动和“维护”的博客文章,主要是从人的角度来看 【参考方案1】:

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

如何设置和自动化一步提交-测试-提交-生成 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 做出承诺。其他用户可以提交补丁,但您可能会让某人查看补丁、测试补丁并提交。您可以将这些任务拆分为一个团队,或者将补丁分配给一个人并让他们完成所有工作。

就项目社区而言,有哪些可以避免的陷阱?我希望它尽可能友好和乐于助人,而不需要太多戏剧性。

我会确保尽可能对项目成员和社区保持积极的态度。会有一些分歧,会赶走一些人,但只要你有一个稳定的产品,可以满足大多数人的需求,我想这就是任何人都可以期待的。

【讨论】:

API 文档的要点。也许想要一步完成所有这一切的希望太大了,但您能否更详细地了解您是如何分多个步骤完成的?你用了什么工具等等? 参见我上面的“工作环境”部分。【参考方案2】:

一个对我很有效的小建议:开始使用第一人称​​复数代词,而不是单数代词。也就是说,谈论“我们”和“我们”而不是“我”和“我”。它鼓励其他人在他们觉得自己是团队的一员时参与,而不是在他们觉得自己在为自己的自我扩张做出贡献时参与。

【讨论】:

这对我来说是一个公认的答案似乎很奇怪。它只回答了一个问题,甚至没有完全回答。哦,好吧,我不会记仇(抱怨) :)【参考方案3】:

你要做的最重要的事情就是吸引用户。没有用户,您将无法获得任何贡献和开发人员的帮助。因为开发人员首先是用户,然后他们决定扩展/修复他们使用的东西并可能成为贡献者。

所以要获得用户,你应该考虑

在项目页面顶部用一两句话描述您的框架的作用 提及您的框架可以如何使用,在什么情况下最有用 添加大量使用示例 提及您的框架是稳定的、beta 版还是 alpha 版。这很重要,因为用户在开始使用之前需要知道这一点 还提到你是否想继续改进它并继续努力——大多数用户不想使用一个被废弃的框架(还要记住,很多用户检查你的提交以查看你是否真的在工作就可以了 - 如果您对存储库的最后一次提交是几个月前,那么您并没有真正致力于它,所以作弊是不可能的)

如果您掌握了所有这些,并且人们开始提交补丁,您可以使用补丁工具将这些应用到您的源代码中。根据您的版本控制系统,您可以使用 GNU 补丁、版本控制附带的差异/补丁工具,或者甚至可以帮助您解决此问题的 GUI 工具。 SVN 还没有补丁工具,但是 'svn diff' 会创建一个补丁文件,然后你可以使用 GNU 补丁工具来应用它,或者如果你使用 TortoiseSVN,右键将补丁文件拖到你的工作副本中并让 TortoiseMerge 为您应用它。

以及如何最好地与社区打交道:

及时回答问题,不要等待超过两三天才能回答问题 尽量表现友善,即使面对不高兴和愤怒的人。只有当他们继续打扰时,才告诉他们(如果可能的话,还是以一种很好的方式)去别处 始终在邮件列表中保留有关项目的讨论。您不想一遍又一遍地重复相同的讨论 - 如果您有一个邮件列表,只需在重新开始讨论之前将用户指向存档

您应该观看“How Open Source Projects Survive Poisonous People (And You Can Too)”讲座——它真的很好,它告诉您很多关于如何处理不仅是“有毒的人”,还包括如何处理所有参与您项目的人。

【讨论】:

【参考方案4】:

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

【讨论】:

【参考方案5】:

不要试图自己做所有事情 - 对于开源项目,有几个托管服务提供商可以解决大部分问题。我推荐 codeplex 或谷歌代码。

设置构建脚本将在一定程度上取决于您设置的平台,但一般来说,一旦您开始使用任何类型的构建脚本,就可以轻松地将所需的任何工具添加到脚本中。

如果你真的需要你描述的一步过程,你需要一个构建服务器。我使用 TeamCity,我已设置它来监视 svn 中的任何更改,并在签入某些内容时触发构建/测试。构建服务器通常能够执行您放入构建脚本中的任何步骤。

【讨论】:

TeamCity 看起来很有趣。您将它用于 PHP 项目吗?你知道有什么类似的东西可以比较吗? 我没有将它用于 php,但它不是特定于语言的。它有一个命令行运行器以及 msbuild、ant 等,所以只要你有某种构建脚本可以在服务器上运行它就可以工作。 CruiseControl 也很受欢迎,虽然我自己没有使用过。【参考方案6】:

阅读 Git 作为 SVN 的替代方案

Github(托管 symfony 和 PHPUnit 等)中的免费公共存储库/错误跟踪器/wiki/fork 社区 “我如何处理(技术上)来自其他用户的提交?我如何确保这些提交在被集成之前必须得到批准?” - 使用 Git,提取您/您最近的团队发现的内容对 master 分支最感兴趣

一致的 API

受到其他公共 API 的启发:s 仅在主要版本中发生变化 可以猜测的

对用户和开发者都很有趣

明确的目标(您的路线图 - 出色) 有用,与其他所有可用的相反 易于使用,但仍然不够容易编写/维护自己

您可以查看 Ant 或 Phing 来构建您的项目。在构建中包含CodeSniffer,您将节省检查基本格式错误/差异的时间。

这些都是技术技巧,关于软的部分...尊重人类,充满兴趣并过度对他们的贡献感到兴奋,让他们觉得他们没有浪费他们的时间。这对我很有吸引力。

【讨论】:

【参考方案7】:

在Producing Open Source Software 上查看 Karl Fogel 的书。它可能包含您所要求的一切。

您还应该计划让社区参与进来。我建议阅读 Jono Bacon 的社区艺术 [http://www.artofcommunityonline.org/]。

【讨论】:

【参考方案8】:

你有很多很棒的想法可以开始。您可能必须从修剪它们开始!问问自己第一次发布需要什么。

    为了自动化构建和测试,可以使用 ant、maven 或 phing 为 PHP 项目编写脚本。

    您可能需要一个主机来演示产品。对于 PHP,很容易找到。

    您需要一个开源托管服务提供商——尤其是github(还有谷歌代码、源代码伪造等)。 Github 提供错误跟踪、默认许可证、博客和接受来自社区的更改的强大机制。它基于 git 构建,非常适合分布式项目。

虽然一步构建和安装到位很好,但自动集成其他更改可能并不重要(或可取)。

祝你好运!

【讨论】:

最佳管理实践msp

MSP是最佳实践系列刊物中项目组合的一部分(统称为最佳管理实践或BMP)旨在帮助组织或个人管理项目、项目群和服务的一致性及有效性(图1.5)。MSP可以在很好的融入其他BMP产品,不论是国际标准还是组织内部标准。在适当情... 查看详情

什么是项目管理中的pmo

...理办事处,简称PMO在企业这涉及到项目管理,规划和执行建立并实施最佳实践和维护标准,一组或部门。该项目办努力规范和项目执行中引起了重复的经济体。PMO还充当组织的中心枢纽,以提供项目文档,指导和成功指标。大多... 查看详情

《开源安全运维平台-ossim最佳实践》已经上市

...了作者10多年的OSSIM研究应用成果,重点展示了开源安全管理平台OSSIM在大型企业网运维管理中的实践。国内目前也有各式各样的运维系统,经过笔者对比分析得出 查看详情

项目管理学习总结——项目管理最佳实践入门

前言:项目管理的作用对象是项目团队(当然也有项目外部的干系人,本文只针对项目团队),最好的项目管理应该是让团队有清晰统一的目标、亲密无间的团队协作,团队成员各司其职,在舒适的心理状态下(良好的人际关系... 查看详情

artifactory仓库架构和命名最佳实践(下)

在上篇文章中,我们已经建立了基本的仓库命名结构,在JFrogArtifactory中,仓库管理的最佳实践应该考虑三个因素:安全性,性能和可操作性。大多数情况下,这些因素跟你的团队规模密切相关,在较小程度上跟仓库成熟度等级... 查看详情

pmp-06-项目组合管理和醒目集管理

一、项目组合是为了实现战略目标而组合在一起管理的项目,项目集、子项目组合和运营工作。二、项目集是一组相互关联且被协调管理的项目子项目集和项目集活动。三、项目组合管理的工作可以分为几个部分,包括业务战略... 查看详情

项目版本管理的最佳实践:云效飞流flow篇

简介:飞流Flow的最佳实践(使用阿里云云效)为了更好地使用飞流Flow,接下来将结合阿里云云效来讲解飞流Flow的最佳实践目录一、分支规约二、版本号规约2.1主版本号(首位版本号)2.2次版本号(迭代号)2.3小版本号三、云效... 查看详情

google开源allstar,为github项目持续实施最佳安全实践

导读如今,安全漏洞日益困扰着大型开源项目。根据RiskSense的统计数据,与2018年相比,2019年开源软件漏洞的数量增加了一倍多。考虑到近91%的商业应用程序包含过时或废弃的开源组件,因此安全漏洞的影响是深... 查看详情

什么是pmo

...点,为组织量身定制项目管理流程、培养项目经理团队、建立项目管理信息系统、对项目提供顾问式指导、开展多项目管理等,以此确保项目成功率的提高和组织战略的有效贯彻和执行PMO关注于与上级组织或客户的整体业务目标... 查看详情

Django项目工作目录结构的最佳实践[关闭]

...确的方法。但是,我发现很难创建一个对每个开发人员和管理员都运行良好且保持干净的目录结构。github上的大多数项目都有一些标准结构。但它没有显示在电脑上组织其他文件和所有 查看详情

在实际生产项目中部署(管理依赖)django 可重用应用程序的最佳实践是啥?

】在实际生产项目中部署(管理依赖)django可重用应用程序的最佳实践是啥?【英文标题】:What\'sthebestpracticetodeploy(managedependency)thedjangoreusableappsinarealproductionproject?在实际生产项目中部署(管理依赖)django可重用应用程序的最... 查看详情

在具有大量依赖项的项目中进行依赖项管理的最佳实践

】在具有大量依赖项的项目中进行依赖项管理的最佳实践【英文标题】:Bestpracticefordependencymanagementinaprojectwithahugenumberofdependencies【发布时间】:2014-07-1804:00:05【问题描述】:我们的项目就像一个适配器/外观接口,用于大量不同... 查看详情

腾讯公司pmo是个啥部门,中文全称是啥?如果能简单介绍下具体职能就更好啦!谢谢

...项目管理办公室。项目管理办公室(PMO)在企业中担当着建立规范项目管理标准、总结最佳实践、解决资源冲突、培养项目经理团队、项目评审以及建设组织级项目管理体系等责任。参考资料:首届中国项目管理办公室(PMO)发... 查看详情

受控环境下的项目实践(prince2)

...管理委员会导向的。项目启动流程(IP)的目的,是为项目建立坚实的基础,使组织在承诺大笔投入前,能够了解为了交付项目产品需要完成的工作。项目启动流程中的活动是项目经理导向的。阶段控制流程 查看详情

开源大数据olap引擎最佳实践

本篇内容将通过六个部分来介绍开源大数据OLAP引擎最佳实践。01开源OLAP综述如今的开源数据引擎多种多样,不同种类的引擎满足了我们不同的需求。现在ROLAP计算存储一体的数据仓库主要有三种,即StarRocks(DorisDB),Cli... 查看详情

使用 Win32 和 UWP/Xbox 平台支持管理 C++ 应用程序的最佳实践?

】使用Win32和UWP/Xbox平台支持管理C++应用程序的最佳实践?【英文标题】:BestpracticesformanagingC++appwithWin32andUWP/Xboxplatformsupport?【发布时间】:2021-06-0506:05:50【问题描述】:我正在开发一个项目,特别是一个游戏引擎,它支持Windows... 查看详情

pmp-07-运营与项目管理的关系

1.运营和项目管理是两种性质不同的工作,运营是按照原有的最佳实践把工作做好,为企业带来现金流。2.当日常运营中,事情做到一定程度的时候,可能就会发起一个项目,目的是找到一个更好的最佳实践和工作方式。3.运营和... 查看详情

apache顶级项目ranger和alluxio的最佳实践(附教程)(代码片段)

...Ranger二、Alluxio和ApacheRanger三、最佳实践选项一:Ranger管理Alluxio文件系统权限选项二:Alluxio执行现有的Ranger策略四、总结介绍Alluxio让计算引擎实现在任何云环境中的数据编排。Allu 查看详情