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

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

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

本期编辑:舒敏

特别声明

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

01

创建一个开源项目

一旦企业已经参与到开源社区足够长时间,而且也建立了一定的声誉,那么这个时候就有了创建自己的开源项目的资格了。处于此阶段的企业由于参与了开源,也已经意识到从开放的协作中可以获得的益处。那么就会考虑将专有的项目开源出来,社区也许会用得着。另外一个常见做法是从头开始创建新的开源项目,并从一开始就受益于外部开发人员之间的协作。

本文旨在帮助那些已经熟悉开源的企业,他们希望学习和了解更多信息,用以启动他们自己的开源项目。全文会带着读者完成整个开源的过程:从觉得开源什么、到预算和法律的考量等等,非常细致的各个方面。读者你可能觉得创建开源项目相对比较陌生,但是要知道,Google 、IBM 、FaceBook 、Twitter 、微软等公司已经开源了很多项目了,他们早已经为我们开辟好了开源这条道路。按照本文所提供的建议和提示做,你一定不会走偏。

02

为什么要创建开源项目?

读者你所在的公司有一万个理由去开启一个开源项目。或许是想加速创新、又或者是加快上市速度、亦或是收集新的创意、还是为了增强互操作性或事实上的标准而希望雇佣有天分的开发者、以及收集多种多样的观点、再就是希望能够生产出更好的代码和更棒的产品,等等。总而言之,开源好处多多。

以上种种好处,都是建立在贵司使用和贡献开源项目所应得的,但是一个更富战略意义的开源是应该去创建自己的开源项目。

无论是从头创建的项目还是已有的项目,将其开源,是希望能够在社区找到付出与接纳的感觉,这样不仅可以进一步建立公司在开源社区的声誉,而且可以让公司在吸引人才方面更具吸引力,当然还有能够在所贡献的项目中突显自身的影响力。能够让自身的代码开放,供大家公开讨论是非常不错的起点,也可以带来更多的益处,因为这是吸引合作伙伴、供应商、以及用户等公司外部的生态的途径。

通过将公司的代码和开发实践开放,从而让外部的人们来使用和贡献,那么公司就是真正意义上的拥抱开放式创新,利用开源来将自己的业务最大化。基于开源许可证之下发布代码,允许任何人来贡献、审视、改进现有项目,这种开放式的协作开发方法是目前构建软件默认的方式,也是经过实际验证的技术创新动力。

其实,无论你身处哪个行业,金融服务、医疗保健、物流运输、零售、航空和客运、道路和桥梁等等不一而足,都面临同样的问题,这些企业当然希望能够通过提供应用和技术来为他们的客户提供核心价值,但是事实上,他们在构建自己的服务的时候,会依赖大量的代码和软件,而这些非业务的代码和软件对于这些组织来说并没有任何的竞争力,即体现出一定的差异来。那么将这些所依赖的,又不是核心业务的代码开放出来,可以为这些项目的继续增长以及创新提供进一步的机会和可能性。

“无论公司雇佣了多少聪明的员工,而总是还会有更加聪明的人没有招进来。不过我们发现了一种利用公司外部聪明的人的做法,那就是参与到开源去,我们先分享我们的代码,然后会发现收获的更多,那些外部的聪明提交的想法真是棒极了!”

– Jared Smith, Capital One 开源社区经理

企业之所以选择开源,是当他们想往前积极的推进项目的时候,公司人手紧张,希望通过开源,能够让工作进度加快,并希望和其他人协作来完成软件的实现,在降低了成本的同事,还改进了他们的产品。可谓一举多得。

开源项目提供的自由协作–甚至是同一行业内相互竞争的友商——也因为有很多的人参与,可以加速项目的开发。通过紧密的合作,开发者们可以公开的分享,收获大量的反馈,并共同构建可扩展,高效和高质量的代码。

03

什么时候创建开源项目?

贵司选择从头开始创建一个开源项目,还是将已有的项目开源,要根据自身的实际情况而定。不过无论哪种情况,贵司首先要在开源软件的使用和对现有开源项目的贡献有一定的实际成果,因为只有自己是开源软件的实际使用者和消费者,才能懂得如何利用外部的项目以及开发人员来构建自身的产品,而且已经参与了开源,不仅能够提升在开源社区的影响力,也能够对开源的文化有一定程度的了解。但是一旦在开源社区中站稳了脚跟,对其开发流程、沟通方式、文化习惯等了如执掌的时候,就应该“尽早”且“不间断”的启动一些自身的项目。

04

从哪里开始?

或许你决定创建一个新的项目是因为你所遇到的技术问题是你自己短时间内无法解决的,又或者是你找不到一个想加入的项目能够满足你想要的,不管怎么样,从哪里开始,没有绝对的答案,总而言之,就是你需要一个解决问题的项目,然而又从现实中无法找到满意的,那么就去创建一个。

对于企业来说,考虑开源项目则会多一重考量,那就是回答——“为什么要开源?”,最好是准备好一大堆问题,对于你的公司来说什么是重要的?一定要重视起来这个问题,企业开源项目一定要有充足的理由去做。否则不如不做。

“我以为对于企业来讲,考虑好新的开源项目能够实现什么目标是至关重要的,企业必须考虑项目对于社区的价值,外部开发者的意义,以及自身可以获得什么样的结果。然后,还必须去理解在社区需要做的所有的事情,以正确的方式去看待法律、治理、基础设施、创建社区等等,这些都是我经常和大家提到的,想要开源自己的项目,这些都非常的重要。”

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

项目启动,包括项目的编码部分,是不应该让企业成为该项目的权威的。更何况,开源本身就是希望有一大波来自全球的技术人员来帮助企业解决问题的。对于企业来讲,如果不是关键业务的代码,那么将之作为开源的备选是非常不错的选择。无论怎样,作为发起的企业,应该积极的进行使用和维护。这些代码一旦被其它企业所采用,形成商业上的依赖,那么就会有持续不断的反馈,如修复 bug 、打补丁、甚至是开发新的功能。

Facebook 开源出来的很多项目均是自己内部正在使用的项目,Facebook极力的推动正在生产中的代码开源,这也就意味着,正是由于Facebook的规模,说明了这些项目是经过了实际的考验的和验证的,Facebook贡献给社区的是专业级别的。还有另外一件重要的事情是,我们Facebook使用这些项目,所以不希望这些项目被遗弃或者不被支持,Facebook的工程师们太需要他们了。”

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

另外需要考虑的一个问题就是,贵司所开发的项目是否是独一无二的,亦或是其它公司因为遇到类似的问题已经开发了类似的项目。那么就要问问:此开源项目是否是贵司很重要的业务?贵司是否会作为公司的策略而进行支持和管理?是否有用户在寻求类似的问题解决方法?如果这些问题的答案都是肯定的话,那么就表明这个项目是非常有意义的。

还有,作为项目主管的你还要决定是否打算将项目捐赠给中立的、非营利性的组织,换句话说,你是否会将自己亲手打造的项目,从具有绝对控制权的位置上退下来。和以往的回答一样,我们给出的答案是这取决于你自己,以及你想要达到何种目的。

“你之所以去开源一个项目,大约是意识到潜在项目中的内容对于贵司来说不是特别的重要,但是你又不乐意放弃控制权,期望还能控制它未来的走向。这些都没有关系的,相信你明白了当其他开发者参与到项目中时,随着项目的发展和壮大,你自己会做出明智的决定的。所以,简单的平衡一下利弊,就开源吧!”

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

05

规划项目

一旦你启动了自己的开源计划,那么接下来就要考虑很多细节性的内容,从而将此开源的计划变成现实的成果。那么现在就让我们考虑下如何按部就班的实现,首当其冲的就是决定发布或捐赠那些代码。

决定发布或捐赠那些代码

对于开源一个项目来说,你首要决定的就是从下面二者之间作出抉择:

1、贵司自己来创建、发布、维护项目的方方面面

2、捐赠项目给现有的中立基金会来维护和管理

如果说是在考虑将贵司现成的项目开源,则需要考虑另外的一个问题:是将项目所有的代码都开源了呢?还是只开源部分内容?

要做此决定,请不妨退后一步来考量,对于代码来说你脑海中的目标是什么?

“作为 Facebook 的工程师决定要开源一个项目的时候,会琢磨很多事情。但是首先需要确定的是这几件事:这个项目将对 Facebook 公司以外的开发人员有用吗?且这个项目将会是变革性的吗?这是我们可以展示的东西吗?以及是否将会有一个围绕此项目建立的社区,维护此项目的人能否为社区提供支持?”

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

举例来说,你或许只是打算在非核心业务的应用程序吸引一些有新鲜见解的开发者,又或许只是想找到系统监控应用的探测日志的更优算法,相比较将产品的整个项目开源,你可能更加的倾向于将涉及到算法的那部分代码给开源了。这样可谓是一举两得,既能获得社区其他人的贡献,又能帮助到和你遇到相似问题的人们,然而最为重要的,所开源的部分也不会波及到你的核心业务。

从头开启一个项目并维护全部的控制权,也会让你拥有监督的权力,也会让你根据需要来打磨项目,以及拥有为正在做贡献的开发者们赋予自由和控制的权力,从而让他们能够更好的完成工作。

相比较而言,将项目捐赠给基金会是完全不同的体验。它意味着你放弃一些控制权,需要交接这些权力给其他的维护者和管理员。这些代码可能对于贵司来说已经过时,但可能对于其它公司还是有用处的,因为对于用户来讲,这中间是有一定的利基存在的。如此这些代码,贵司可能不会花过多的时间去维护它,但是开源社区还是非常欢迎的,而且交给开源社区,可能会发展出一个长久的项目来。当然有时候贵司所开源的代码是相当重要的,这也没有问题了,你为项目找到了一个中立的环境,可以吸引更多的参与者,并发展出一个广泛的生态系统。

以上而言都是可行的选择,但是千万不要去做一些让人看起来很不舒服的事情,如你所捐赠的项目是没有用的、不再使用的、你本身对它也没有任何兴趣的,而你只是希望社区去维护它。不要心存什么侥幸心理,想让那些过时的项目通过开源社区来重新获得活力。如果你的项目没那么的重要,你捐赠出来,则会让开源界对你失去信任,那样的话,即使你以后在贡献出好的项目来,这些开发者们也不会对你产生任何的兴趣。对于这些高傲的开发者来说,你的项目只是在浪费他的时间,这一定不是你想看到的。

“假如你今年创立了三个开源项目,而且它们货真价实,那么就会被好的社区所吸引,进而生产出高价值的项目,这要比一年创建10个开源项目强太多了。诚恳的说,开源社区是一个重视质量胜过一切的地方,开源社区不在乎数量,而且拥有自我过滤优秀项目的天然属性。假如你创建了十个糟糕的项目,你不会有任何的吸引力。你唯一的选择就是开源优秀的项目,别无他路!”

- Guy Martin

未完待续!

这些资源是与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 归档