PART ONE
互联网IT技术发展至今,流传广泛的架构图可谓成千上万,但真正称得上整个互联网的底层基石的,或许只有唯一的“LAMP架构”——Linux操作系统、Apache服务器、MySQL数据库、PHP/Perl/Python等编程语言。
这个架构的特征是——开源。开源技术吞噬了闭源软件,又成为了商业软件的基石,以此衍生的开源社区更是缩短了世界的边界、开发的边界,促进了全球化的软件研发与创新。随着近年来开源技术的快速发展,越来越多的企业、组织与开发者参与到开源之中。与此同时,开源治理逐渐进入人们的视野,成为开源领域的一大热点话题。
12 月 18 日,腾讯云 TVP 与腾源会联合主办的「开源的“内外兼修”」TVP开源闭门会正式召开,本期主题聚焦开源的对内修炼:开源治理,通过三场开源分享与一场圆桌尖峰对话,为行业内的你我探索开源的“内功心法”。
PART TWO
会议伊始,我们请出了开放原子开源基金会TOC副主席、腾讯云TVP、腾源会导师 谭中意老师为大家带来了题为《内部开源(InnerSoure)国内外大企业实践》的主题演讲,为与会者从内部开源的定义;起源、好处和难点;国内外情况;大厂实践等维度出发,深入浅出地解构了内部开源的前世今生。
什么是内部开源
谭老师表示,内部开源,是指从开源社区的软件研发中吸取经验,并将其应用于公司内部软件研发团队的一种软件开放模式。简单来说,就是在内部开放代码,并接受外部门的贡献,用国际内源基金会主席的说法,就是在内部实践“Apache Way”。谭老师用一个浅显易懂的例子解释了内部开源的发生场景:
Team A使用了Team B的一个API服务,现在A有新需求Team B做了排期,但不符合Team A的预期。现在Team A有如下几个选项:
等待
自己做
找上级领导协调
内部开源
在这样的场景下,内部开源无疑成为了一种最理想化的选择。
内部开源的起源
事实上,内部开源并不是一个新鲜的事物,早在2000年,便有了最初形态的探索。世界知名的开源活动家Tim O’Reilly在1999年创立了咨询公司CollabNet,给很多传统企业提供开源的工具和咨询,其中一个最典型的案例就是给HP做内部开源咨询,将分散在HP多个部门的120个打印机驱动软件通过内部开源的方式,最后缩减到10个。这是内部开源的缘起之时,但由于当时整个开源社区都还没有兴盛起来,内部开源慢慢归为沉寂。
时至2015年,另一位开源专家Danese Cooper的出现,让内部开源走向了复兴。2015年,Danese Cooper受雇于PayPal,负责公司整体开源事务,她推行了很多开源的措施,其中一项就是内部开源。后来她还牵头成立了InnerSource Commons开源社区,后来成为国际内部开源基金会,专门去推动内部开源的普及,到今年已经有7年的时间。
2021的当下,内部开源正当时!无论是国际上的微软、谷歌、IBM、NASA等企业/组织,还是国内以腾讯、华为、百度为代表的一线大厂,都在发力内部开源。
具体而言,内部开源的好处有:
提升代码质量
提高人员能力
提升员工满意度
打破部门墙
减少重复造轮子
激励创新
除此之外,在很多企业中,内部开源也成为了外部开源的孵化器,同时也能与DevOps文化相互促进,打造更开放、透明、协作的研发文化。
虽然内部开源很美好,但其也存在各种各样的难题,谭老师总结了以下几个亟待解决的问题:
对变化的普遍恐惧
“not inventedhere”恐惧症
认为外团队的技能不够
不愿意做导师或缺乏做导师的知识
中层管理的冲突
国内外大厂内部开源实践
分享最后,谭老师为我们介绍了包括微软、谷歌、Bosch、华为、腾讯、百度等在内的大厂内部开源实践。每家企业的内部开源实践出发点各不相同,推进的步骤也各有差异,但都通过内部开源打造了良性的研发文化,推动了产品和技术的创新,减少了重复造轮子,提升了效率。
谭老师最后总结道,推进内部开源,首先要获取CTO级别的领导支持,同时要去争取内部工程师社区的支持,然后从单一项目发展到一个BU/BG,最后形成一个全面的内部开源文化。只有这样,才能真正让内部开源的文化沉淀下来,延续下去。
PART THREE
腾讯开源办公室执行总监、腾讯技术委员会委员、腾源会导师 许勇老师,带来了题为《腾讯开源治理实践》的主题演讲,系统性地介绍了腾讯在开源治理方面的体系化思考与全方位实践。
推动开源创新发展的三股力量
许老师首先分析了开源创新发展的时代背景,这背后的推手来自于三股力量:政府、开源组织与企业。
政府,在顶层设计上,为开源创新的生态发展制定政策法规,以及指导和牵引;
开源组织,一类是开源基金会例如Apache、Linux基金会;一类是汇聚大部分开源项目托管而形成的开源社区,例如GitHub;
企业,无论是创新的开源技术的出现,还是在业务中的大规模应用和不断进步都离不开企业。其中一类是科技公司例如Google,腾讯,华为等是开源最大的受益者也是贡献者;另外一类是以开源项目为核心提供服务为商业模式的开源软件厂商,典型的如红帽。
而在这其中,企业的作用至关重要。许老师以云计算产业的蓬勃发展为例,剖析了这背后的原因。
随着云计算和云原生的发展,在众多科技公司、开源软件厂商、基金会博弈过程中逐渐形成了下图中展示的云开源生态,并且随着时间推移还会继续演进和变化。
可以看到,从底层操作系统,到IaaS、PaaS再到云原生,每个细分领域都衍生出了众多的头部开源项目,随着被科技企业和软件厂商的大量使用、迅速推广,并通过自身的不断迭代进步形成了事实上的行业标准,比如Hadoop、K8s。与此同时,企业也成为了开源软件的重要贡献者,很多开源项目最早就诞生于企业内部,比如Hadoop源自Yahoo,K8s来源于Google。企业不仅是开源技术最大的使用者,同时也是开源技术最大的贡献者。
腾讯开源发展历程
许老师向与会者梳理了腾讯在开源领域的十年发展历程。从2010年至今,腾讯的业务发展受益于开源技术,也回馈了开源社区。这其中的关键节点是2018年腾讯“930”变革,把开源协同写进了变革战略,让开源创新在腾讯变得越发关键。此后,腾讯技术委员会的成立,“开源,协同,云上生长”的新代码文化的诞生,腾讯对外开源管理办公室的设立等等,都让腾讯开源在公司内外部引发高度关注。
截至目前,腾讯已经成为全球开源贡献前十的企业,覆盖了包括AI、大数据、云原生、移动开发、Web开发等五大技术领域,GitHub官方账号下收获超33.5万Star,贡献110余个开源项目,开源贡献者人数超2000人,并在多个主流的国内外开源基金会中承担重要角色。
腾讯开源的新变化
许老师表示,2021年腾讯开源有四个非常明显的变化:
开源协同常态化
开源技术核心化
开源贡献多元化
开源人才年轻化
许老师分析道,腾讯开源的成绩,可以归因于930变革以来有了顶层设计和自上而下的推动,使得腾讯开源的治理形成由内到外和由外到内的双向流动,内部开源和对外开源相辅相成的良性循环。
内部开源内循环,通过内部代码开源、开源协同的方式,减少重复投入、提升研发效率、降低运营成本。通过“开源内循环”,孵化出的新秀项目以及毕业优秀的开源项目,然后可以输送至外部开源社区。
外部开源外循环,是以产品、社区、商业的形式进一步创造社会价值及商业价值、促进技术发展及科技创新、提高研发质量和降本增效。通过“开源外循环”,引入外部优秀的开源项目,通过外部的新鲜血液促进内部技术持续的创新。
在这个过程中,形成了腾讯开源治理在组织、工程、文化、合规四个方面的深度实践,汇聚的点滴力量也积水成河最终让腾讯开源实现了从量变到质变的历史性转身,开始注重社区的治理和生态的建设。
在腾讯“科技向善“的使命和愿景激励下,腾讯开源也在探索和尝试更大的社会价值和意义,例如在2020年的全球抗疫过程中,腾讯开源也参与其中,贡献了开源的力量。今年,腾讯开源还在开源人才培养方面有了一些探索和实践。
PART FOUR
Apache软件基金会Member、ASF IPMCMember、腾讯云TVP、腾源会导师 郭炜老师带来了题为《Apache基金会项目从孵化到顶级毕业》的主题演讲,从开源软件基金会的视角为参会者带来了不一样的体验。
开源项目的初心和初衷
郭老师表示,初心和初衷在对待开源上,其实是一个态度和第一步的问题。回顾过去的软件开发模式,无论是瀑布式开发还是敏捷开发,都是从需求出发,到产品定义到技术开发再回到用户需求的模式。而开源是下一代软件开发的核心,从社区出发,用户既可以是需求的提出者,也可以是需求的实践者,同时还能帮助更多的人用上,打破了软件开发的边界。基于这个视角,郭老师指出,开源的初心就是让大家在全球范围内不去重复造轮子,凝聚全球顶级智慧,打破技术的边界,把全球科技拉到同一平面。
然而开源毕竟不是慈善,初心决定能走多远;初衷决定你能不能启动起来,尽管结果可能与初衷会不相同。郭老师总结道,做开源的初衷无非以下几种:
炫技
获得感
联合解决问题
技术影响力
技术品牌
商业
KPI
“只要初心足够高远,初衷是什么并没有关系,因为你把项目启动以后,就会要不停地打磨。无论哪一种方式,只要你愿意拥抱开源,我觉得都值得鼓励。”
如何定义优秀的开源项目
郭老师总结了定义优秀开源项目的四个关键因素:
定位:一句话说明你开源项目是什么,痛点明确,边界清晰;
产品:产品需要有自己的调性,要像“火锅”一样做开源;
团队:核心团队驱动,吸纳社区成员,保持团队开源理解力和韧性;
技术:重点关注架构设计,不要痴迷于性能,专注于创新和社区。
由此引发对开源创新来源的探讨,郭老师表示创新来源于很多方面,有的人认为技术大牛会是最重要的出口,但实际上用户反馈、社区内开发者、社区外专家都是创新的源泉,开源,发动的是群策群力的力量。更进一步,中高级的社区用户和贡献者的力量远远大于1-2个技术大牛,否则根社区自身都会陷入不稳定状况中。
因而,一个健康的开源生态尤为关键。开源基金会为开源项目提供了很多支持,首先就是足够且专业的导师帮你梳理开源项目,其次是第三方中立的姿态帮助你的开源项目真正地全球化,第三是给予生态内的合作与联系,比如多个项目之间会联合Meetup,相互支持,相互发现和帮助。
进入Apache孵化器的流程
Apache基金会的孵化流程看似简单,从Proposal到Discussion到Voting不过三步,项目毕业的时候也是提出Discussion,全球的Apache Member来投票决定毕业与否。然而这看似简单的流程背后,每一步都可能是很多开源项目最难跨过的槛。
郭老师指出,进入孵化器最重要的3件事情分别是:
开源项目(定位、调性、团队、技术)
软件所有权(包括公司SGA,代码情况)
Apache 的Mentor和Champion
而这其中又重点涉及到了Apache导师们如何看待你的开源项目的问题。这背后的整体逻辑和投资人逻辑类似,导师们投入的不是金钱而是时间,个人喜好不同,资源不同,可能依据也各不一样。郭老师以自己的判断举例,他个人最看重
这几个方面:
团队
产品本身定位,当前的状态
对于开源的初心和初衷
一个具备潜力的开源项目,要进入Apache孵化器也面临诸多的难点,首先要解决的是找到足够的Apache Member背书;其次是要厘清软件的归属权,到底归个人还是公司;第三,是否获得组织长期的支持(CCLA);最后,项目的名字要求全球唯一。
向顶级项目进军——Apache Way
“Community over code”,社区重于代码是最为人所知的Apache Way。但其实除此之外,Apache Way还有六大关键特征:
精英治理
同侪社区
共识决策
开放沟通
责任监督
厂商中立
很多开源项目普遍都有“用户运营”的角色或者职能存在,而郭老师个人认为优秀的开源产品不需要运营,只需要布道就足够了。布道的方式也可以归纳为两种,一种是以 DolphinScheduler 为代表的“农村包围城市”模式,另一种是以 ClickHouse 为代表的“城市辐射农村”模式。
对于开源项目而言,针对开发者的“运营”工作尤为重要。首先你需要让外部开发者成为你的产品用户,才能慢慢将其转化为你产品的开发者。
最后,郭老师指出向Apache顶级项目进军最重要的事情是——坚持,坚持,坚持!一般一个孵化器项目毕业在1.5年-2年,期间会经历很多事情:现实和初衷不一致;团队KPI拿到之后;公司不支持了;社区分裂了…...只有牢记自己开源的初心,这条路才能走得更长、更远。
分享最后,郭老师以SeaTunnel和DolphinScheduler为例,解析了一个开源项目在Apache基金会中孵化所遇到的各种问题与挑战,最终成为顶级项目的完整历程。
“整体来讲,开源不是你赢我输的零和博弈,而更像一个无限的游戏。开源会吸引越来越多的人加入,只要有一个人在里面不停地玩,它就一定可以进行下去。”
PART FIVE
圆桌对话 | 社区重于代码:
如何建立繁荣的社区生态
本场圆桌对话聚焦于如何建立繁荣的社区生态,由中国电子技术标准化研究院木兰开源社区运营负责人、腾讯云TVP、腾源会导师 耿航老师主持,邀请了开源社理事&联合创始人、Apache基金会Member、腾讯云TVP、腾源会导师 刘天栋老师;腾讯开源联盟主席、腾源会导师 单致豪老师;支流科技CEO、Apache基金会Member、腾讯云TVP、腾源会导师 温铭老师共同对话。
刘天栋:什么是好社区,如何建立好社区?
从我个人观点出发,我认为可以归纳总结为以下几个方面:
人:以人为本,凝聚成社区
道:社区拥有共同的愿景和使命感
法:具备良好的治理原则
术:与时俱进,不断优化组织流程与服务
器:所有社区都要有价值的产出
如果一个开源社区能够深入思考以上所说的人、道、法、术、器几个方面,那么具备了这些原则的社区就有机会成为一个好的社区。
对于社区生态从0到1的建设,我有三点建议:一是多看多学,借鉴成功社区的方式,找到自己的方式。二是多多参与其他开源社区,在贡献和参与中学习,这是更快更有效地建立社区的方式。三是社区跟代码是一样的,不要一开始就追求完美,憋大招,而是要快速更新迭代,用最小可行方案的方式来建立它,同时避免独裁者的社区治理模式,敢于授权和放手。只有不完美的代码和项目才有可能成为一个不断成长和进步的社区。自己当英雄和代码英雄不重要,帮助更多的人成为英雄,这个社区才可以持续。
单致豪:国内开源现状与机遇、挑战
基本上今年Apache基金会孵化的项目都来自中国,国内的开源项目已经在往国际化方向走。GitHub上中国开发者的数量已经达到全球第二的规模,包括中国企业的贡献在世界范围内也开始排到前列。整体而言中国开源从以前的学习和使用,到现在参与和创新,已经是处于一个快速发展的阶段。
面临的挑战也有很多,比如很多开源项目在捐赠时遇到的开源许可证的问题,知识产权的风险等。另外在开源的过程中,包括在个人发展中都存在导师专业指导的缺位,同时也得不到一些资金和资源的支持,陷入单打独斗的局面,竞争力不足。这个背景也是腾讯成立腾源会的初衷,承担桥梁的作用帮助开源项目,为开源爱好者和作者提供学习交流、孵化指导的平台。在未来,腾源会承担一个拍档的角色,借助资金、云资源等,为开源项目提供各类支持。
温铭:开源运营经验谈
早年间我们觉得Apache运营的模式在海外已经得到了很好的验证,我们想能不能在中国的开源项目上有自己的软件基金会,通过自己亲身参与,从零搭建一个软件基金会去更好地熟悉整个软件基金会从募资、慈善到整个治理结构的全流程。我们希望自己能亲身参与进去建立一个中国自己的软件基金会,但受困于当时国内相关政策条款的不完善,最终我们选择在中国香港做相应的尝试。
我们在一年多的时间里,向香港税务局递交了各种资料,类似于我们要进Apache孵化器的时候,要写一个说明,我为什么要成立这个基金会,我的宗旨理念,我的计划是什么等等。最终成立以后相对运行还比较顺利,反而最难的是老罗给我们捐赠的100万怎么接收的问题,前前后后也跑了一年左右的时间。这个过程就是让你对国内及中国香港的各种慈善、税务的条款非常清晰的一种体验,这是我们在港建立开源公益基金会的经验。
关于在APISIX社区运营中踩的坑,我个人觉得最大的坑是发展得太快了,很多的PMC并没有完整参与过整个孵化的过程,导致很多人还没完全理解Apache Way的时候,项目就已经毕业了。对商业化公司而言也是如此,我会发现成立公司以后跑得太快了。在这个时候一定要回头补足落下的东西,我现在做的很多事都是在填补以前的坑。
开源社区与商业化
刘天栋:我个人对开源的理解在于,开源是一种社会生产力进化的模式,一种区别于其他主导模式之外的自下而上、去中心化、开放共享与协作、以人为本的社会生产力解放的模式。这种模式跟其他的主导模式可以形成相辅相成的完美互补。开源社区就是开源生产力落地实践的共同体,因此,开源社区与开源商业化完全可以相辅相成。
我个人认为这背后还有很多工作要去解决,让商业化跟开源社区能够做到相濡以沫,而非因 KPI 而结合,因了解而分离,最后相忘于江湖。
单致豪:开源和商业化的结合其实是非常紧密的,大家可以关注目前国内开源初创企业的融资情况,就可以看到资本对开源项目的重视度是很高的,这本身就体现了开源项目的商业价值所在。另一方面,大家也可以发现,很多开源基金会自身也处在一个入不敷出的状态,这说明做开源这件事也是需要烧钱的。
这背后我们重点要关注的,是开源与商业化结合的模式,如何去通过商业模式实现盈利,如何提供服务的模式,如何通过PaaS的模式做出商业化产品,如何招募人才、寻找资源、搭建技术架构等,都是需要关注的重点。
温铭:我个人觉得目前国内很多开源创业从现状来看,不管是开源项目还是资本投入都会有一点过热的感觉。商业公司最终的目的一定是要盈利,而资本也许并不能给开源创业公司太久的等待时间。
我个人认为开源其实并不是一种商业模式,开源只是说我能够用最低的成本快速吸引开发者的注意力与使用,但如何将这些贡献者的使用吸引到付费的版本上去,这就是商业上需要考虑的问题。如何组建销售团队、产品团队、SaaS服务等等。我们还在一个刚开始探索的阶段,前途光明,但道路曲折。
圆桌交流结束后,本场主持人耿航老师感慨颇深,他总结道:其实无论是社区还是基金会,都需要不断地持续迭代、不断地完善自身,才能最终成为一个相对比较理想的平台。而在前面提到的方方面面中,最核心的还是人。开源项目在前期选人的环节非常重要,因为总会有一些一时头脑发热想要参与,或者因为各种不纯粹的目的想要分一杯羹,但最终没有坚持下来,这样对开源项目的影响也非常大。
PART SIX
开源不是一场认真的消遣,也不是一个人的狂欢,它既可以是一个开放投放、协作共享的崇高理念,也可以是一个八方来贺、资源重组的商业契机。
国内的开发者对开源的认知正在迅速革新,从产品使用到代码贡献再到社区维护,这套开发者为本的发展路径也在被逐渐接受。当开源文化、社区文化在各大企业、高校得到广泛的传播,本土开发者参与开源的人群也会越来越庞大,未来每一天对中国开源而言可能都是新的一天。
TVP 自成立之初,便希望能够“用科技影响世界”,让技术普惠大家,践行科技向善的初心与本心,这何尝不是另一种意义上的“开源”呢?
腾源会(WeOpen)是腾讯云成立的汇聚开源项目、开源爱好者、开源领导者的开放社区,致力于帮助开源项目健康成长、开源爱好者能交流协助、开源领导者能发挥领袖价值,让全球开源生态变得更加繁荣。
还想要深度学习大咖干货?扫描下方二维码关注腾源会公众号,回复关键词「闭门会PPT」即可获取嘉宾分享PPT!
欢迎关注「腾源会」公众号,期待你的「在看」哦~