前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux基金会企业开源指南系列之二 -- 开始创建开源项目(下)

Linux基金会企业开源指南系列之二 -- 开始创建开源项目(下)

作者头像
开源社
发布2019-05-29 00:55:57
7160
发布2019-05-29 00:55:57
举报
文章被收录于专栏:开源社开源社

本期编辑:舒敏

特别声明

本文拥有创作共用授权之相同方式共享授权4.0版国际许可协议(Creative Commons Attribution ShareAlike 4.0 International License)授权许可。 开源之道独立精心翻译分享,欢迎同道中人商讨。

01

开始创建开源项目

治理

在项目正式启动之前,你必须为项目治理定义好所必要的技术需求。所谓的项目治理,意指项目的策略、发布、方向、以及开发优先级等需要作出决策的流程。决策的制定必须是公开和开放的,从而能够确保所有的参与者均能够了解项目的变化,并帮助项目保持永久的透明度。另外,关于项目治理还可以考虑一下解决争端的路径。

对于项目治理的主体来说,在项目的早期建立起参与的标准是非常重要的。诸如特性和缺陷如何跟踪、代码如何提交、发布流程如何管理之类的重要决定是需要很正式的规定的。

关于如何运营和维护项目的一些工具和介绍,请移步,参阅文章公司如何创建开源项目办公室

“你需要确保人们将一些事情做好,从而保证项目迈向成功。你还要注意:不要将项目的业务部分和技术部分混为一谈,它们分别需要不同的领导力。如果你忽视任何一部分,都会导致不良的后果——项目发展停滞不前。你不可能让一个外行人做出最佳的决定。技术人员获得业务部门的帮助会如虎添翼,成功的几率就会更大。”

-John Mertic, Linux基金会项目管理总监

技术流程

在开源项目正式启动之前,创建标准的发布流程来规划定期的发布代码事宜,对于项目的维护者变更和改进代码是非常有帮助的。一个良好的规划应该被良好的定义,在细节上见功夫,这无论是开发社区还是业务部门均是有益处的。

至于多久发布则要取决于你对社区的期望。如果项目是企业很重视的,而且你希望打造出相当实力的产品,你或许可以每年发布2次。如果项目的范围较小,而且也更为敏捷,且你尝试从社区获得一些零碎的内容,或许你考虑每周、每月发布一次都是可以的。规划的关键在于社区必须能够根据事情定义出时间线来,如对项目支持力度的了解、同时还要为用户提供他们需要的和期望的。

而且要根据社区本身的反馈来进行一些微调,发布的太过频繁,又或者发布的过于缓慢,均不是最佳选择,要审视自己的流程而定。重要的是一致性、可预测性、以及可见性。

领导力角色

在项目正式开源之前,对于领导力角色的设置是非常之重要的一步。不同的项目意味着不同的事情。如果你启动的将会是一个由众多企业参与的多个公司的项目,那么项目会需要更加正式的治理,如设立治理委员会、亦或是其他的管理小组。如果是较为单一的公司项目,则可以简化一些,如设立技术委员会从技术的角度来监督开源项目的各项内容。技术委员会的组成主要包括技术领导和社区经理,社区经理的角色主要是向管理团队报告关于项目进展和项目需求的最新信息。只要技术成员和管理人员认为合适,法律团队也可以随时被引入。

你的最高级别的架构智囊团一定是属于领导力角色的,当然,还有那些对代码了如执掌的工程师们,这些人共同在一起,担任技术领导角色的委员会成员要对项目有一个愿景,项目的走向是何方,以及开发者社区的支持程度等。总而言之,这些人就是参与项目规划必须的角色。

作为开源项目领导者角色的职责是为贵司做出代码的贡献,进而确保和董事会成员、股东、以及受知识产权委托的人是站在一条线上的。你必须确保他们是一致的,但是,你仍然要考虑潜在的负债、风险、等诸如导致项目失败的问题,不要轻视这点 “

– John Mertic, Linux基金会项目管理总监

基础设施

只要是业内人士都知道,你要启动一个软件项目,一定要为它准备好代码仓库。也就是能够让贡献者们全天候不间断的贡献代码的基础设施。很多项目都托管在著名的 GitHubGitLab 上,当然也有使用诸如Gerrit来自己进行搭建。你可以根据自己的实际情况进行选择,但是请记住,你所选择的代码仓库一定是易于让开发者们参与和认同的。选择平台、开设账户、为代码准备好空间、开启工作流、接下来就是“见证奇迹的时刻”。

缺陷、问题、特性等跟踪通常也是项目基础设施规划的一部分,你打算为贡献者们提供舒心悦目的地方,从而让他们能够心无旁骛的去撰写解决实际问题的代码、以及添加非常有用的酷炫功能,还有自动化的构建流程、测试系统的流程等这些都是必须的,甚至更进一步你需要保证项目的流程平滑,在你的GitHub 仓库周边添加扫描和监测代码来保证代码的质量,这些都是应该去做的。

网站

接下来就是创建公司中立的网站以及项目的维基百科页,网站应提供社区的一些信息或寻找路径,如关于项目的文档、下载代码的链接等等,当然网站也要尽可能的提供更多的细节,如项目的领导者、范围、用户和贡献者、治理方式、等等。

沟通交流渠道

为社区提供沟通交流的渠道对于人们寻问和咨询问题是很重要的通道,你得想法将这些用于沟通的工具集成到整个的开发流程当中来(如当项目有请求、代码提交、错误日志等等任务时有及时的通知),你还得提供供大家讨论话题的论坛,以及社区成员们彼此能够快速的相互提问,这些对于项目的发展都是至关重要的。对于沟通交流渠道来说,所有重要的事就是实时的帮助项目迈向成功。

其中一个可以考虑使用的工具是 Slack,它在线集成团队项目管理和及时聊天的平台,在此平台用户还可以访问和共享文件、组织工作流、信息检索等等。然而,Slack 是一家专有的公司所提供的工具,不仅闭源,而且可能需要花费一定的费用才能使用它全部的功能。当然,开源而且更为古老的工具也是可供选择的,如 IRCGitter.im 等等,这里举一些实际的例子,Hyperledger 项目使用的沟通系统叫做:Rocket.ChatRocket.Chat 是完全开源且和 Slack 非常相似的工具。另外,如果你需要较为酷炫的论坛系统,Discourse 会是一个不错的选择,不仅完全是开源的项目,而且还有几家不错的服务托管提供商。

在选用沟通交流系统的时候,谨记几点内容:

1、不能有任何形式的锁定

2、需要花费多少钱

3、在未来迁移到新的系统的难易程度

随着项目的成功,你的社区必然是人气暴涨,这个时候就需要你去不断适应新的沟通渠道,举个例子,就在不久的过去,新闻组还是很多开源项目的首选,但是现在成了保守的代名词了。总之,沟通渠道要迎合人们的习惯与口味。

“Autodesk 在其GitHub的账户上集中管理了近190多个各式各样的开源项目,要知道这190个项目是AutoDesk的至少14个部门所开源的项目,通过使用来自Twitter的开源工具,Autodesk 让这14个部门使用同一个视图、同一个入口,从公司的角度来讲,确保所有人看到正在启动的项目内容是非常重要的,而且一定要记得要让所有人能够使用同一个入口来提交问题和建议。”

– Gy Martin, Autodesk 开放总监

启动和维护

终于走到这一步了,不过还需要持续的努力,不可以有懈怠的情绪。在经历了上述那么多的规划、准备、以及多方面的审核、各方面的实操之后,你可以将项目正式的启动,那么你的开源项目从此就就进入了维护的阶段。你将通过开放的规划、开放的沟通、以及逐步完善的至顶向下的基础设施,来完善已经创建的治理、技术流程,以及介于它们二者之间的。

一旦上述所有重要的事情都均已落实,那么就到了向全世界开放项目的时刻了!也是恭迎开发者的开放时刻。当那些对项目感兴趣的贡献者们看到项目是经过了仔细打磨、而且干净利索,对他们本身也非常的有价值,那么他们就会顺利成章的参与到项目中来的,因为项目对他们意义重大。

发布之前的基本任务:

1、事先简短的启动合作伙伴

2、确保所有项目的基础设施都是可运行的、安全的和可扩展的

3、确保开发者是可以加入和查阅社区频道的(IRC、邮件列表等)

4、发布源代码

5、 遵循开源的开发模式

一定要做市场相关

众所周知,仅仅把代码开源了并不意味着工作就结束了。要想保持项目继续的受人关注,还需要做一些业务和营销方面的工作,以保持人们的眼球的活跃度。所要做的事情有:推广项目、制定成功的运营战略、提供切合实际的预算、建立项目品牌、以及创建在线的社交媒体账号、可用的域名(持久战,将眼光放得更远些)。

针对品牌就需要创建市场确认清单。这步特别的重要,其确保了在市场上的信息一致。市场确认清单如下示例:

1、设计项目的 logo 、颜色标识、网站、以及附属品等

2、正式制定品牌指南

3、为项目注册社交媒体账号(Twitter 、Facebook 、LinkedIn 等)

4、为项目注册相应的域名

走到这里,你已经将项目开源,接下来,你的工作就是去推广它,让更多的人知道这个项目,并让更多的人们去使用它,最好是能够参与进来。作为一名市场人员,这是非常有趣的一个挑战,你能够带领多少工程师来贡献代码、或论坛讨论、或修复缺陷、或提交 bug,是检验你工作成功与否的最终形式。

“正因为社区对于市场至为重要,所以你有十足的理由去用心经营社区。而如何经营则体现在一些具体而微的小事上,如快速的处理请求,确保项目提供最棒的帮助体系。所以,要做到,如果有人来到你的项目,他随便看一看,就能了解到这个项目正在做什么。”

– Christine Abernathy, Facebook 开源团队开发者布道师

构建社区

在项目启动之后,那么接下来做的事情就是社区了,关注社区的活力对于项目来说至关重要。

社区的构建是适合”佛系”经营的。在项目的早期阶段,是需要主持一些开发者聚会或赞助一些线下会议,乃至在重大会议上露脸。

另外,管理大家的期望以及履行项目治理和透明度的义务也非常的重要。

持续的活动包括:

1、任命社区经理或社区布道师

2、确保社区的变化都能够很清楚传达,诸如项目的方向变化、或者是治理方面的内容。

3、尽力吸收其它类似社区的最佳实践

4、鼓励并提供机会给面对面的社区建设

5、 参加相应的活动,并鼓励大家提交演讲

6、考虑定期的举办本地的聚会

通过构建一个多样性的贡献者群组,此时就可以和其它的一些对项目感兴趣的企业或组织进行一系列的讨论,告诉他们你的项目的价值所在,从而试图说服他们对项目投入时间、金钱或者是其它的资源,以此来进一步的扩大项目,以让项目更上一层楼。如此就能达到一个正的循环,通过获得外部的资源,项目可以扩张并获得更多的贡献者。

如此的增长意味着有更多的企业会投入更多的资金来让他们的开发者加入到项目中,以实际的行动来推动社区工作的进展,他们也许会捐赠 $10,000 或者 $250,0000 ,又或者更多的钱,当然要视项目的重要程度,以及对其它公司的意义而定。一旦你的项目开启了,如果项目可以帮助到某些公司的话,那么这些公司就会参与进来做贡献,或者是捐献现金。

这样的事情,现在看起来已经是司空见惯,因为现代的企业和组织都意识到:他们试图解决的技术问题不是任何一家独立的公司能够搞得定的。人们逐步的开始看到开源的战略价值,与其他公司一起参与供应商中立的联合项目,而这些项目恰是致力于解决企业所面临的技术难题。

采用这样的方式的开源项目例子,如 Hyperledger 由 Linux 基金会赞助合作成立的项目,旨在跨界的区块链技术,以及 云原生计算基金会,用于孵化现代公有或私有云的一系列开源软件。企业不仅可以让开发者们参与到这些大型的项目当中来,还可以提供一定经济上的资助,共同推进和驱动技术的向前发展。

写在最后的忠告

大胆启动一个开源项目可能有点神秘,甚至有些可怕,尤其是第一次尝试进入开源的时候。但是当您的企业看到并量化开源在流程中所获得的指数增长之时,那么这第一项目就有可能成为贵公司的使用开源软件战略方式的起步项目。了解其他人如何采取这种方式来帮助您的下一个开源项目取得成功。

02

启动开源项目的检查列表

慎重考虑项

1、 评估参与一个已经存在的开源项目的可能性

2、评估公司对于采用开源模式启动和维护项目的自身能力

3、评估在开始的时候,其它公司参与进来的可能性

4、评估开源项目的成功因素并设置相应的衡量值

商业战略和规划

1、为项目做出最终决定并设置目标

2、从相关干系人处收集开源的原因

3、选择要为项目考虑的代码

4、决定项目的开源部分:是应用的全部,还是部分

5、为选择的建议书建立商业案例

6、确定是否有行政人员参与此举

7、针对开发者和开销做出资源规划书

8、设置成本预算,包括开发时间,基础设施和相关费用

9、 收集高管和技术人员进行项目讨论和决策

10、辩论并最终确定项目范围和代码选择

法律审核

1、请慎重思考开源对于贵公司的知识产权影响

2、确保完全符合开源许可证

3、为源代码的发布选择一个开源的许可证,要对项目所有许可证要求作出清晰的说明

4、如果需要一份贡献者意向书的话,也请考虑

5、考虑社区可能提供的非软件输出和适当的许可证,例如文档和规范

6、考虑所有和商标有关的事情

7、决定是否还有其他因素可以纳入您的生态系统计划中,例如一致性测试

技术审核

1、将严重依赖但不能公开的组件去掉

2、请提供文档和案例

3、删除内部的注释、引用、以及其他内部的代码等等

4、确保代码风格的一致

5、在源代码文件中更新版权所有的信息

6、在源代码文件中更新许可证信息

7、在仓库的根目录中添加许可证文件

8、治理和流程

9、定义项目的治理步骤和结构

10、创建代码仓库、bug 跟踪、以及代码测试的基础设施

11、创建支持的 Slack 频道、论坛和维基

12、创立贡献者可以沟通的开放基线,以确保项目的成功

品牌和市场

1、设定市场战略以激励活跃的贡献者社区

2、设计项目logo、颜色样式、官网、以及其它附属内容

3、品牌指南具体化

4、为项目注册设计媒体账号(Twitter 、Facebook 、LinkedIn 等等)

5、为项目注册相应的域名

启动和维护

1、开放项目,并开始开发工作,以及贡献的流程开始运转

2、选定合适的社区经理或社区布道师

3、确保方向和治理的任何变动都是经过清晰的沟通过的

4、紧随其它类似社区的最佳实践

5、鼓励且提供场地让大家能够进行线下的社区活动

这些资源是与TODO(公开对话,开放式开发)小组 – Linux基金会的专业开源程序网络小组合作创建的。特别感谢那些贡献自己的时间和知识来制作这些综合指南的开源项目经理。参与的公司包括Autodesk,Comcast,Dropbox,Facebook,Google,Intel,Microsoft,Netflix,Oath(Yahoo + AOL),Red Hat,Salesforce和Samsung。要了解更多信息,请访问 todogroup.org。我们邀请您在GitHub上下载、传播,如果可以请积极的参与这些指南。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
项目管理
CODING 项目管理(CODING Project Management,CODING-PM)工具包含迭代管理、需求管理、任务管理、缺陷管理、文件/wiki 等功能,适用于研发团队进行项目管理或敏捷开发实践。结合敏捷研发理念,帮助您对产品进行迭代规划,让每个迭代中的需求、任务、缺陷无障碍沟通流转, 让项目开发过程风险可控,达到可持续性快速迭代。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档