企业开源指南:开源项目管理工具

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了企业开源指南:开源项目管理工具相关的知识,希望对你有一定的参考价值。

参考技术A 为了让开源项目办公室顺利运行,您需要正确的工具。这些关键的任务工具将用于追踪各部门的目标与指标,从工程部门和法律部门到行政领导部门、公关部门与营销部门,同时给予员工收集数据、提供开源软件运行快照和管理公司内部开源软件日常使用所需要的全部资源。

-- Todo

开放源代码的战略性应用之路,起始于一个精心策划、组织与授权的开源项目办公室,以指导和管理开源的创建、分发和使用。但这仅仅只是第一步。为了让开源项目办公室顺利运行,您需要正确的工具。这些关键的任务工具将用于追踪各部门的目标与指标,从工程部门和法律部门到行政领导部门、公关部门与营销部门,同时给予员工收集数据、提供开源软件运行快照和管理公司内部开源软件日常使用所需要的全部资源。

本指南提供了如何开始您的开源工具集建设的详细信息和场景,包括用于跟踪和管理您的开源项目的最重要工具的信息。指南中提及的许多工具已由Linux基金会和该领域的其他领导者创建并开放源代码,可以免费且便捷地为您的项目所使用。您还可以找到一个仪表盘安装程序的示例,该程序融合并展示了多种工具的信息。

一旦您的开源项目办公室启动运行,就应该同时收集合适的软件工具,这些工具允许您的开发团队管理、跟踪、指导和推进其开源项目、开源贡献与开源发布。

在您开始您的开放源代码之路时,使用正确的目标工具还将使开发人员和其他员工的工作更为轻松,也将提供更好的结果,并将成为公司开源项目的成功协作与沟通的基础。

公司所需的开源工具有哪些?早期的讨论大多认为,这取决于公司的业务、产品和服务,以及公司如何服务它的客户和员工。由于开源项目办公室制定了规划流程和战略地图,因此可以选择那些能整合进公司的目标、流程和基础架构的工具。

最终,知道您将需要使用哪些工具的唯一方法,就是了解您想要对开放源代码进行何种操作。

以下是开源项目办公室选择所需管理工具的基本步骤:

这些工具一旦被选定,在落地使用之前,还需要一些额外的准备:

当您在选择工具时,实施操作有助于记忆,当然这也可能会影响您的决定。例如,具有陡峭学习曲线的工具可能需要更多的培训。

在认识到达成组织的目标上你团队的需求,以及自身情况和基础架构的潜在限制之后之后,接下来要做的就是要 探索 并了解那些已准备就绪且可供您使用现有工具。由于大多数工具本身就是开源的,所以如果它们一开始并不能满足您的确切需求,您的开发团队可以联系这些工具的开发者,看看他们是否可以协作根据新的用途添加一些特性。

讽刺的是,许多开源项目办公室并不经常直接使用其他公司开发的工具,或与其他公司合作来开发他们管理开源项目所需的工具。通常,他们想要这样做,但包括 Facebook 和微软在内的许多企业已经拥有现有的工具套件,这些工具套件在真正成为一个合作议题之前就已经实现。由于他们已经拥有了自己的工具集并进行了投资,他们似乎并没有很大意愿采用其他公司的工具。

这就是现在才刚开始构建自己的开源项目的公司具有显著优势的地方。由于他们现在正在建立自己的开源项目办公室并进入开源领域,因此他们不必为受到这样的限制而烦恼。

相反,他们可以聪明地利用别人的成功经验与失败教训,并利用近年来领先的公司所创建的成熟工具来构建自己的开源工具箱。 Linux 基金会的开源行业组织,TODO Group,一直致力于组装一个装满工具的 “Open Source Program Office in A Box” 入门套件,这将使公司能够通过一套紧密结合的预先组装工具开展开源工作。入门套件目前尚未开发完善,但希望最终可以让公司付出更少的初始努力,更轻松地部署和配置他们所需的工具。从事这个项目的 TODO Group 成员包括 Adobe、Capital One、Comcast、Facebook、谷歌、eBay、IBM、微软、三星和 Twitter。

除了适当的工具之外,公司还应该有中央仪表板,以便他们实时监控和跟踪他们的开源项目和开发情况。许多公司可能已经拥有了用于现有开发工作和应用程序的仪表板,并且能够将现有仪表板与其开源工作整合在一起。否则,他们应该创建或采用新的仪表板来改进其开源部署的管理。

正在出现越来越多的用于管理和报告开源项目的工具,这一趋势已经非常明显。如果您的开源项目刚刚开始,那么将您的研究集中在几个您启动和运行所需的基本工具上会更有帮助。

随着您的项目不断发展,以及使用这些工具的经验越来越丰富,您可以开始采用新的工具,来帮助自动化并简化您的流程,响应业务需求的增长。切记,新选择的工具将用于内部文化和流程的补充和支持——而不是引导它们。

以下章节列出了几个基本的工具类别,几乎所有开源项目日常使用的工具都可以划分到这些类别。这有助于您对该研究有系统性的认识。

为满足公司的更多需求,自动化工具变得越来越庞大且规模化。它们可以准确地告诉您谁正在为您的项目做出贡献,并且可以帮助您消除那些减慢项目进度的程序摩擦。

据微软表示,在其开源项目办公室里,大约有 8000 个仓库在 GitHub 上托管,涉及约 11,000 名贡献者,而在 2016 年约有 40,000 个内部请求应用于开源项目。为了管理这些请求,以及所创建的代码和正在更新的代码版本,公司转而使用可以自动化解决混乱的工具。不仅如此,由于数百个项目中很可能会共用同一段代码,因此必须对其进行仔细跟踪,以便在出现安全错误时,可以快速绘制并修复所有的软件影响。在如此大规模的情况下,自动化非常关键,手动更新几乎是不可能的。

那些有助于管理关键任务的工具,也是需要考虑和获取的。例如用于项目管理、跟踪项目质量状况,以及确保开发人员、开源社区和其他公司内部人员之间的清晰且快速沟通的。

大多数通过开源项目办公室开发的企业软件项目都使用 GitHub 作为其集中托管和开发的平台。

GitHub 是一个在线源代码管理站点,它允许开源开发人员在一个中央“存储库”或存储空间中管理和存放他们的代码,参与者可以协作并开发他们的代码。如今,大约有 6400 万个开源代码项目在 GitHub 上托管,涉及大约 2300 万个开发人员。

GitHub 用户可以添加代码、查看已提交的代码、申请更改、获取并提供反馈,以及使用该服务提供项目管理。GitHub 使用 Git Version Control System ,这是由 Linux 创建者 Linus Torvalds 开发的开放源代码项目,为代码和合作开源人员提供了组织机构。每位“贡献者”都有他们正在处理的项目存储库的副本,他们可以在自己计算机中的副本里进行更改,然后将其提交回项目以供未来纳入。然后,“ 拉取请求(pull request)”( 示例 )或代码贡献会被项目组织者审查、讨论、修改,最后批准或拒绝。

代码扫描和合规工具也很重要,它们有助于追踪代码起源和许可要求。关注被引入自身基础架构、产品和服务中的开放源代码以确保符合许可证的要求,对于公司来说是很重要的。

例如,您的应用程序可能包含数千个开源组件。为了保护您的公司免于法律纠纷,了解这些细节是至关重要的。在风险较高的情况下,用户必须根据其业务在风险谱中的所处位置,深入了解代码,从而深入地审核并验证他们所说的许可证。(请参阅我们关于使用和分发开放源代码的指南。)

如前所述,GitHub 是服务于目前大多数开源项目办公室的专业源代码管理系统。但是 GitHub 本身并不能满足项目代码管理的所有需求——特别是当您大规模发展的时候。

开源世界中所使用的一些工具旨在通过添加欠缺的功能来改进GitHub本身,例如支持检查开发者原产地证书(DCO)语句,以确保代码可以被合法授权且应用于开源项目中。

GitHub 在代码审查方面也存在一些不足之处,所以有其他可用的工具可以自动将有问题的代码发回给创建它的贡献者,然后要求他们检查并做出必要的修改。GitHub 没有办法强迫任何人检查他们的代码,而这些聪明的工具解决了这一问题,使工作流程得以改善。

其他 GitHub 特定工具的功能用于提高 GitHub 的性能指标,这些功能通常针对特定项目,而不是提供给整个组织详细信息。对于在多个 GitHub 项目中维护许多开源代码库的公司而言,需要更好的工具来组织和汇总它们,使之有意义。亚马逊、Netflix 和微软提供了大量这样的工具来帮助完成这些任务。

以下是一些最流行和实用的源代码管理工具,可以简化并帮助您的 GitHub 运作:

随着开源项目的发展和成熟,监控和跟踪开源项目的整体质量是企业开源项目的核心任务。为了实现这一目标,您必须收集相应的工具,这些工具应当能够反映单独的开源项目的执行过程并反映单独的开源项目在数十、数百甚至数千个项目中被它们的社区接收的过程。同时,这些工具还必须兼具转化能力, 能够将收集的数据转化为体现整个开源组合中整体项目性能的有意义的、实用的且可操作的信息。

这其中的关键是,您收集到的数据应当可以转化为关键且有用的信息 – 而不是些无用的指标,例如详细说明项目已记录了多少“观察者”明星,自项目开始以来有多少贡献者参与了该项目,亦或是缺乏重要背景资料的其他指标。

最好的项目质量监测工具还必须帮助项目团队对支持他们工作的社区做出回应,同时鼓励贡献开发者的参与和多样化。这意味着这些工具可以帮助保持人员快速响应社区成员发布的问题或反馈,以便他们保持热情参与,且不会感到厌倦并转向其他项目。

一些开源社区有大量的贡献者,而其他一些开源社区则成员较少。项目质量监测工具需要能够适用于各种规模的项目。

以下是一些最受欢迎且实用的项目数据统计和项目质量跟踪工具:

TODO Group 还提供了一个 很好的附加工具列表 :

当然,开源的发展并不仅仅关于代码的开发。它还需要在企业内外部从事项目工作的不同群体之间以及公司开源项目办公室的工作人员之间建立良好的沟通与合作。

为了达到上述目标,开发人员可以依靠他们可能已经应用于其他项目的工具,例如 Internet Relay Chat(IRC) ,开发人员可以发布 与开源开发相关的问题并快速收到回复 。另一个例子是 TWiki ,它是一个开源企业 Wiki 和 Web 协作的平台,开发人员可以在其中讨论代码和项目及相关主题。

此外,企业还可以通过社交媒体平台,门户网站,开源项目存储库和其他能够进行输入、提问和讨论的平台促进沟通交流。

其他有用的工具还包括 Facebook 公司的 mention-bot ,它可以通过自动关联潜在审查者来获得拉取请的快速输入周转以审查代码。当 GitHub 目变得太大导致社区成员无法订阅项目的所有通知时,这一工具尤其值得推荐。

然后是 Slack ,这是一个在线团队项目管理与沟通平台,在这一平台中用户可以访问和共享消息和文件,管理工作流程,搜索信息等等。Slack可以通过设置接收支持请求、代码签入、错误日志和其他任务的通知。

除此之外,当谈到公司参与和支持开源时,不要忘记您公司的公关与营销人员。包括 Twitter、Reddit、Facebook、LinkedIn、Google+ 等网站在内的社交媒体帐户以及企业内外部的博客和网站的使用都是非常重要的。客户关系管理(CRM)软件以及电子邮件群发和新闻简报可以帮助公司让客户了解他们的开源进展。

当谈到企业为开源项目提供并应用的工具时,按理说最重要的是那些帮助企业管理自身企业规模 GitHub 操作的工具。GitHub 是一个可以提供许多操作的完美平台,但对于谷歌、微软、脸书、Twitter、LinkedIn 等大型的复杂公司而言,使用标准的 GitHub 产品可能会有很多限制。

大型企业通常需要更多的功能,包括如身份管理、设置和权限管理,安全性和双重身份验证执行,以及深入理解和跟踪代码存储库的方法。

因此,这些大型企业常需要构建专门的自动化工具来处理诸如入职、离职、安全策略执行以及给予开发人员请求的存储库访问权限等任务。

为满足自身的特殊需求,微软构建了自己的工具来处理诸如此类的任务,以简化和改进其开源项目。微软在 GitHub 上运行良好 ,拥有约 1,345 个存储库,迄今为止涉及约 3,580 名开发人员。

微软创建了一款定制的自助服务—— GitHub management and onboarding portal ,用于组织其项目、存储库和团队。在其最简单的层次上,基于 Web 的门户允许开发人员将他们的微软公司ID映射到他们的GitHub ID,这可以提高系统安全性并帮助简化参与大量重要项目的大量开发人员的组织工作。

该门户还允许员工使用 GitHub 和微软进行身份验证。其创建了员工身份的一个“虚拟链接”,以便根据他们的工作角色向他们提供任务所需权限以完成工作。如果员工离开公司,可根据需要调整系统以删除或重新分类其访问权限。

门户运行在一台或多台云服务器上,并依靠缓存来帮助进行会话和减少 GitHub API 的压力。微软门户平均每天可提供约 1000 名独立用户作为其工程师的工具,这是该公司不断发展的开源工作的一部分,该工作现在包括超过 10,000 名正在使用、贡献和发布开放源代码的工程师。

没有人认为使公司进入开源世界是一件简单的事情。但其他许多公司,包括微软和谷歌等巨头已经在您前面这样做了,而且已提供了详细的路线图、代码和建议等,这将使您自己的开源旅程变得更加轻松。

开源项目办公室的创建和选择一系列关键工具来开始开源工作,选择权掌握在您手中。它们很可能已经激发了开发人员的极大期望,开发人员中的许多人可能已经自发为开源项目做贡献(或在工作中,隐秘地)。

通过开源项目的合作并邀请其他人与您合作,您的公司可以获得不可估量的收益,且能通过节能和创新推动公司发展。

拥有正确的工具对于授权贵公司的开放创新至关重要。

基于Vue和Electron企业级开源接口管理工具

参考技术A

【快乐摸鱼】是一款基于Vue和Electron的开源接口管理工具。

GitHub地址
Gitee地址
完整文档
在线体验

最初构建这个项目的时候是为了学习Node.js和解决团队前后端协调问题。社区中有 YApi 、Rap2、Doclever、 Nei、Swagger、Apidoc等开源解决方案,同时也存在 Postman、Eolinker、ApiPost等商业解决方案。

在这之前团队尝试了YApi和Rap2等社区方案,他们能够满足一些基本的需求,但是在深入使用以后,还是出现了一些影响效率的问题。当时使用这两个工具最大的问题就是接口无法支持多级嵌套,某些项目接口多了以后会导致检索效率大大降低。于是尝试从头开始写一款接口管理工具。

非常核心的一个功能,在前后端分离情况下,一套简洁的团队管理策略会大大提高分工效率。我们将权限分为 只读、读写、管理员三类。

上面的三种角色可以满足大部分日常使用需求。在一些特殊情况下你可能需要更加细粒度的权限控制,比如:拥有读写权限的用户你只希望他能编辑文档,但不希望他能导出全部文档。我们提供了自定义角色功能,可以精确到每一个接口和路由(一般情况下用不到)。

非常核心的一个功能,设计一个方便并且易使用的目录导航能够大大增强录入体验。我们从其他开源项目issue中总结了一些常见需求。

工具实现了上面的全部功能,同时也扩展了一些实用的功能。

标签导航是为了方便开发人员在多个接口之间快速切换,开源的产品这块做的并不是很完善,我们在实践中总结了这些需求。

大部分商用的接口工具都具备导航标签功能,但是开源产品这块大都不具备标签导航功能或者功能完成度不高

大部分的接口工具都会内置接口调试功能,这样开发人员只需要使用一个工具就能完成接口调试和接口录入。不过由于浏览器本身的限制(同源策略),直接在web端发起HTTP请求大概率会失败。这里列举了一些常见的解决方案。

从技术上来说,使用客户端来规避同源策略是一种比较好的实践,同时依托客户端强大的api还能完成很多web端无法完成的事情,当然安装客户端也会给用户带来一些不方便。目前主流的商业项目大都采用客户端的形式来为用户提供接口调试功能,部分工具甚至不提供web端的使用。我们采用了客户端的方式来实现接口调试,同时也保留了web端的使用功能,除了接口调试和Mock功能无法使用外,web端和客户端在功能上没有其他区别。我们也会在未来提供浏览器插件功能,这样用户就可以在web端使用接口调试功能了

我们总结一些常见的接口调试需求

对接口的增删改查是整个接口工具最核心的部分,常见的开源产品对 请求参数(Body),多个返回参数方面支持比较弱。我们总结了在典型业务场景下,接口录入应该包含以下核心模块。

【接口录入工作区】

除了完善必要的接口模块,工具还在录入效率方面想了很多办法。我们从Yapi、Rap2等开源项目issue中整理用户常见的录入需求。

目前市面上接口工具总类繁多,在处理导入的时候会有以下几个主要问题。

目前比较稳定和被普遍认可的规范是 OpenAPI 规范,很多商业化的工具都是支持这种规范的。postman这类工具拥有非常大的市场占有率,大部分工具也都支持这种类型数据导入。我们收集了一些常用的接口工具,并且列出了工具对导入的支持情况。

在常规导入需求上面,我们扩展了一些功能,提高了部分项目内迁移效率。

导出功能一方面是方便用户分享文档给第三方用户,另一方面也提供了一定的迁移和备份能力。下面是一些常见的导出场景

日志功能是团队管理和安全操作中非常重要的一环,工具对接口的每一步操作都做详细记录。

除了基本的记录以外,工具也提供非常丰富的检索。在某些操作上面用户可能希望获取更加详细的日志信息,例如:对于编辑文档,用户可能更希望知道具体改变了哪些内容。工具目前在这方面的支持度有限,未来会继续完善这块内容。

工具区分 接口录入 接口预览 两个状态,接口录入的目的是达到高效录入,接口预览的目的是达到高效检索。和其他工具导出数据不同,工具在检索和预览方面做了一些优化。

在实际项目开发的时候,联调人员更关心某某人修改的最近几条数据,通过过滤条件能够非常高效的进行数据检索。

相对于表格形式的json展示,下面这种呈现形式对开发人员来说是非常友好的。

可以使用Mock功能来进行快速开发,和大部分接口工具一样我们支持 Mock.js 语法,同时我们简化了整个mock过程你无需做任何额外的配置。工具会在本地启动一个Mock服务器,你可以简单的把这个服务器当作后端的服务器。

非常遗憾,目前还不支持这个功能,不过我们已经开始开发这个非常重要的功能了。

客户端技术栈

服务端技术栈

目前开源类的接口工具大都只提供使用以及部署文档,二次开发对于用户来说会比较困难。为了延长项目寿命,同时也为了吸引更多开发者参与,我们把完善 开发文档 产品设计思路 作为了最重要的开发任务之一。由于项目本身的复杂性,完善的开发文档将会占据大量的开放时间,文档会有一定的滞后性。

产品设计思路
开发文档
部署文档

我们希望给正在寻找接口管理工具的用户多提供一种选择,同时也不断完善产品设计和开发文档,希望吸引更多的人参与到项目中来。

以上是关于企业开源指南:开源项目管理工具的主要内容,如果未能解决你的问题,请参考以下文章

企业必备的开源商业智能分析工具和报表工具 Top7

6大开源SIEM工具,安全信息和事件管理的“利器”

测试管理工具的soapUI开源测试工具

面向敏捷开发团队的 7 个开源项目管理工具

微软开源项目提供企业级可扩展推荐系统最新实践指南

Halo开源建站工具