写点什么

微众银行 OSPO 建设之路:如何通过 OSPO 的建设推动企业开源?

  • 2022-05-29
  • 本文字数:5491 字

    阅读完需:约 18 分钟

微众银行OSPO建设之路:如何通过OSPO的建设推动企业开源?

在 DIVE 全球基础软件创新大会 2022 上,华为开源能力中心技术专家姜宁出品了《DIVE开源布道与生态建设专场》专题。本专题邀请了在开源方向具备丰富经验的专家,共同探讨面向基础软件领域如何做好开源生态建设,包括企业内部的开源布道及开源文化培育、企业外部的开源战略实施等。其中,微众银行开源管理办公室负责人钟燕清发表了题为“如何通过OSPO的建设推动企业开源——微众银行OSPO建设之路”的演讲,围绕微众银行开源管理办公室的实际经验展开分享。

 

以下是分享实录:

 

为什么企业要拥抱开源

 

数字时代,开源已经无处不在,这一事实已经成为所有人的共识。今天几乎所有的数字化成果都离不开开源软件,各行各业都在基于开源软件构建自己的产品或业务,开源软件成为构建信息社会的重要基石。

 

上升到国家层面,开源正成为我国推动科技创新的重要战略。十四五规划明确提出“支持数字经济开源社区等创新联合体发展,完善开源知识产权与法律体系,鼓励企业开放软件源代码、硬件设计和应用服务”。这是开源首次被写入国家总体规划纲要之中。在今天这个百年未见的大变局势中,要加速发展、突破卡脖子问题、发展核心科技,开源创新是非常重要和有效的手段。

 

在过去两三年时间里,国家在开源基础设施方面取得了很大突破。2019 年发布的木兰许可证是我国首次有了用中文描述的开源许可证;2020 年国内成立了第一个开源基金会——开放原子开源基金会;Gitee 作为我国最大的开源托管平台也取得了快速发展,开发者活跃度不断提高,与 GitHub 的差距在不断缩小。所有这些迹象都表明,开源已经成为我国的一项科技战略。

 

企业拥抱开源到底能带来什么好处?这里可以简单总结三点:

 

  1. 提升企业形象。开源是技术发展趋势,今天所有的先进技术几乎都是以开源的方式提供,参与开源意味着企业技术水平走在前列,代表了公司的技术形象。开源文化本身就有人人为我、我为人人的开放情怀,拥抱回馈社区也体现了公司良好的企业社会责任意识和担当。

  2. 加强技术竞争力。通过开源可以快速实现低成本创新,减少重复造轮子投入,将精力和资源优先投放在核心业务创新上。在开源社区,企业也能快速吸引到各种技术人才,优秀的开源项目自然能够吸引更多优秀人才加入。

  3. 实现商业价值。通过开源项目更容易创造技术生态,加速技术创新和应用落地。开源本身就是实现技术商业生态建设的一种有效方式,企业可以根据项目特征、自身定位去选择不同的商业路径。

 

微众银行一直在不遗余力地全面拥抱开源,原因有几个方面。首先微众银行 CIO 对开源非常重视,因为他对开源有非常深刻的理解,有非常强烈的回馈社区的技术情怀。其次微众银行是互联网银行,开放创新是银行的核心技术战略,而开源是技术领域创新的最有效手段。第三,公司内部有比较浓厚的技术文化,也会对一些前沿技术进行布局和探索,开源是能够快速完善这些技术生态的有效方式。2019 年 7 月份,微众银行宣布金融科技全面开源,并成立了开源管理办公室,进一步加速了拥抱开源的战略落地。

开源管理办公室的定位与职责

企业要做好开源并不是一件非常简单的事情,也不是一个在纯技术层面就能解决的问题。因为对企业而言,开源是一种战略优势,推进开源过程中涉及的方方面面非常广泛,需要协调、集中和清晰的沟通。如果没有有效的管理,就会产生各种混乱和风险。

企业要参与开源,从对象角度看需要核心员工参与;从内容角度看包括内部和外部,企业内部会涉及到怎样使用开源项目、发布开源项目,外部社区角度也要关注如何为开源项目做贡献、在开源项目中如何发展社区公共关系等等。只有通过开源管理办公室才能让这些角色和活动有机而紧密地关联在一起,更有效地组织整个体系。

 

开源管理办公室的职责包括以下方面:

 

  1. 开源战略规划。办公室要帮助整个公司明确看待开源的态度、在开源社区里扮演怎样的角色,然后在公司内部上下尽可能达成一致,并形成比较清晰的战略实现落地。

  2. 治理体系设计。开源涉及很多规则、流程,依赖一些平台工具,都需要相应的治理体系。

  3. 项目社区运营。要对外发布开源项目,社区运营也是非常重要的工作。没有运营就不会有效果,也就产生不了社区。

  4. 开源文化推广。这是非常重要,但也最容易被忽视的部分。企业想要真正拥抱开源,必须要所有同学都理解、认同开源文化,遵守开源法则,有开放、包容、协作的心态,才能取得一定的成绩,并且有持续性。

在企业推动开源的方方面面

围绕开源管理办公室的职责,企业内部推动开源时会涉及方方面面的事务。

根据 Linux 基金会的模型,企业引入开源的模式可以定义为阶梯型的策略。在消费者阶段,企业主要关注如何用好开源软件;参与者阶段,企业会参与社区活动,更深入了解所使用的开源软件;贡献者阶段,企业可能参与上游贡献、自己发起开源项目等;领导者阶段,企业会在社区发挥重要的领导作用,影响相关技术或组织的发展,并成为某些开放标准的制订者。

 

微众银行的开源战略愿景是希望成为金融科技领域开源生态建设的领导者。该战略的具体实现路径也包括四个阶段和四种角色,不同阶段、不同角色所关注的重点和策略也有所不同。

 

  • 作为开源软件的使用者,微众银行更关注如何基于开源软件技术建立自主安全可控的银行核心系统,利用好开源软件的技术优势。在使用开源软件的过程中,银行还需要建立完备的治理体系,防范合规和安全等方面的风险。

  • 微众银行期望成为上游社区的参与者,为此提出了上游优先的参与开源策略。银行鼓励员工深入参与在工作中使用到的各种开源技术的上游社区建设,积极反馈意见建议或贡献代码。微众也设计了内部的激励机制,鼓励大家成为社区开源项目的核心成员,树立清晰的价值导向。

  • 微众银行在努力成为开源项目的发起者。银行已经贡献了非常多的开源项目,也非常重视项目社区建设,从而尽可能保持项目发展的持续性。

  • 微众银行希望成为开源生态的建设者。公司希望积极拥抱开源社区,在开源生态中建立更广泛的联系,推动整个金融科技开源生态的繁荣。

 

对于企业内部的开源治理体系,微众提倡组织架构、流程制度、工具系统三位一体的保障体系。组织架构保障方面,公司设计了一个合理且清晰的组织架构,包含开源治理所涉及的各个部门、岗位,核心目标是确保大家都有同样的目标、明确的定位,在过程中能够高效协同;流程制度保障方面,公司有非常明确的管理制度和流程体系,确保 “有法可依,有的放矢”;另外最重要一点是工具系统平台的保障,公司有一个完善的工具平台确保治理效果落地及治理效率提升。

微众银行的开源治理组织架构体系参考和对标了开源基金会和各种大型开源项目的社区体系架构。整个开源管理工作组属于银行信息科技委直接领导。开源管理办公室主要把和开源治理相关的各个职能、岗位和角色串联在一起,统筹规划所有工作。

 

组织架构的最右边有一个 TOC 技术委员会,将公司的技术专家聚合在一起,负责纯技术层面的相关事宜。中间是开源项目的组织体系,公司针对内部每一个开源项目都建设成社区,利用社区的运营方式构建项目的组织体系,让每个项目都有一些核心成员参与,对运营方法做标准化和赋能,促进项目的良性发展。

 

这个组织架构设计的好处在于,一方面能够快速向上触达,通过会议、汇报等机制及时得到领导支持,有效传达整个开源战略;另一方面横向拉通了很多部门和组织,实现高效协同,不存在扯皮推诿的情况。

 

今天的企业要想比较系统地拥抱开源,搭建一个以开源管理办公室为核心的组织架构一定能取得事半功倍的效果。这个组织可以是实体,也可以是虚的,有相关岗位人员承担,其核心是要站在全局角度思考企业和开源的关系。

 

TOC 组织的目标是在企业内部推动由技术驱动的决策机制,TOC 技术监督委员会由各个部门选派或推举的技术专家构成。微众银行的 TOC 组织设计了以下工作职责:

 

  • 制订技术标准。标准发起者在内部 Git 平台上面发布项目,其他部门的专家和每个关注这个方面的同学都可以沟通参与,在内部协作的前提下达成共识。标准也可以根据实际情况快速改进,大家也会越来越信任标准和规范的内容。

  • 解决技术难点问题。因为 TOC 成员都是每个部门顶尖的技术专家,大家可以在一起讨论很多技术难点,共同攻克技术难题,同时分享经验,避免轮流踩坑现象。

  • 推动内部开源。内部开源是微众银行整个开源战略的一部分,TOC 能够作为每个部门的代表,连接部门内部和部门之间的内部开源项目的推广和协作等一系列事宜,同时也可以将开源协作的文化在所处的组织内更好地传达和普及,相当于开源布道者。

  • 推动公共平台建设。比如 DevOps 项目管理平台、需求管理平台、测试平台等有具体的负责部门,但也通过内部开源共建的方法,让大家以共同参与的方式建设这些公共平台。这提高了不同部门之间的满意度,还解决了传统的需求创新和开发资源冲突等方面的问题。

 

通过 TOC 在企业内部推动由技术驱动的决策机制,实现开放协同透明的氛围,是微众银行在开源建设上很重要的探索。

 

在使用开源软件的治理过程中,微众的核心目标是持续优化开源软件使用的全生命周期管理流程。去年底,人民银行联合五部委共同颁发了关于规范金融行业开源技术运用与发展的指导意见,对行业的开源治理工作做了很多具体的指引和规范。微众在应用开源软件的过程中,围绕知识产权合规、信息安全等风险体系管理,在不同阶段制订了更为细则的管理办法和流程。比如在引入阶段设计了标准的引入流程,对开源软件的选型与评估设计相应的模型,更为客观地进行分析和比较。微众也有不断丰富的开源知识库来供大家在引入过程中参考。在开发运维阶段,团队会精准识别管理所有开发系统的开源软件依赖关系,形成公司开源应用的资产台帐,从而对所有开源软件的版本进行统计分析,制订更有针对性的管理方式。微众还将开源软件运用管理流程和开发过程管理的生命周期进行集成和打通,并明确退出机制。

 

微众一直在致力于建设贯穿 DevOps 开发流程的开源治理方案。在整个阶段有开源框架和组件选型的评估,同时有整个公司的开源软件的黑白名单管理;在开发阶段开发了 IDE 插件工具,能够非常方便地自主扫描所开发系统的组件依赖关系,并且可以根据治理策略及时给开发同学各种提醒和帮助,使开发侧能够更及时处理修复问题。在构建测试阶段会做自动触发的依赖扫描,根据设定的规则自动执行各种策略。在生产部署环节有针对性的安全漏洞审查,以及生产部署策略的自动执行。

 

整套方案的目标包括以下几点:

 

  1. 适应敏捷开发,需要非常灵活地插入到各个环节中闭环管理。

  2. 尽可能安全左移,越早发现问题、越早处理,成本就会越低。

  3. 系统化,自动化,具备了这些能力才能够做到快速响应,并建立持续监控和处理的能力。

  4. 对公司内部所有研发系统都有一个非常完整和精确的开源资产的实施管理能力。

上图是微众银行权限自动化的管控策略实施落地的具体逻辑展示。

 

从企业角度该如何实现对外开源呢?微众银行首先制订了严谨的项目对外开源流程,确保开源项目的质量可靠。因为企业开源项目代表的是企业参与开源的态度和形象,必须严格审慎,哪些可以开源、哪些不能开源、对公司有什么影响,都是需要分析和考量的。

 

开源项目的质量如何保障?微众银行对外开源的流程大致划分了几个阶段。规划阶段主要希望明确项目目标,同时客观对市场上已有的类似开源项目做比较,同时审慎盘点能够投入开源的资源力量,避免后期资源投入不足造成后期无力的情况。在实施阶段要注重开发质量,给开源项目的名称、商标、知识产权保护等都需要做提前规划。开源前还需要做全方位审查,一方面要符合开源项目的基本规则,遵守所选择使用的许可证约束,另外也需要确保公司的核心定义和相关资产能够受到保护。最后一个阶段是正式开源阶段,要选择合规的代码托管平台做好代码管理,并进入正式的社区运营阶段。一个项目刚开始亮相的时候也需要做好宣传推广的工作,促进后期更好的发展,

上图是微众银行对外开源项目的内部管理流程图。图中的流程和步骤都拆得非常细致,并且每个步骤都有清晰的输入输出标准,也有很多模板供大家参考。只要团队想要发起一个开源项目,就能比较系统地了解要做的事情和关注的方面,沟通就更为成熟,质量也有一定的保障。

 

一个成功的项目需要在运营上花费的精力是非常巨大的。开源管理办公室希望能够总结各种经验,参考一些成功项目的最佳实践,不断将社区运营的套路系统化,从而提升社区运营的效率。微众希望能够通过各种途径的传播,让微众开源成为技术领域的一个优秀和知名的品牌。为此,与各种技术社区、媒体在各方面进行合作,增加宣传与曝光也是非常有效的方法和手段。

 

作为开源管理办公室,在企业内部还有个非常重要的角色,那就是作为开源布道者,在企业内部持续推广开源文化,让大家都理解开源、认同开源,同时掌握开源相关所必备的各种知识和方法,更为全面地了解开源的现状与趋势。

 

总之,企业内部也是一个社区,一个有效的运营方式能让这个社区凝聚越来越多的同学,让大家相信、热爱开源,创造出更多优秀的项目。

总结

对于企业而言,拥抱开源是一种长期主义,无法依靠某个时间点的集中投入,或者领导一声令下就取得立竿见影的效果。企业要按照一个有效的方法,一步步、一个阶段一个阶段地去实现具体目标。对企业而言,必须要弄清自身到底在开源事业里面扮演什么样的角色,整个战略上升到一定高度,后面很多具体工作才能得以开展,目标才能够逐步去实现。

 

在参与开源的过程中,合规安全是底线,这也是所有企业都需要重视的事情。构建安全可靠的软件供应链管理体系是所有企业非常重要的一项技术工作。如果还要对外开源工程社区,开放、透明、积极拥抱社区也是必须要有的基本态度。以上这些都是基于企业对开源文化的理解和持续传播才能够真正驱动和闭环发展。

 

希望大家能够一起为构建开源共同体而做出努力,谢谢大家。

2022-05-29 10:052768
用户头像
蔡芳芳 InfoQ主编

发布了 798 篇内容, 共 548.1 次阅读, 收获喜欢 2787 次。

关注

评论

发布
暂无评论
发现更多内容

一文解开java中字符串编码的小秘密

程序那些事

java安全编码 java编码指南 UTF编码

宅家三个月玩转算法,再战字节跳动,字节跳动面试官朝我比了个“ok”

编程 字节跳动 面试 算法

oeasy教您玩转linux 010211 牛说 cowsay

o

阿里培训官给新入职程序员的25条建议

Java架构师迁哥

架构师课作业 - 第十三周

Tulane

TOGAF认证课由2天变化为5天的思考

周金根

企业架构 TOGAF

LeetCode题解:232. 用栈实现队列,使用两个栈 入队 - O(1),出队 - 摊还复杂度 O(1),JavaScript,详细注释

Lee Chen

大前端 LeetCode

区块链技术发展的十大趋势

CECBC

区块链 金融 安全问题

记一种spring框架的想当然但错误的用法

小明同学

源码分析 最佳实践 Spring Framework bug

甲方日常 13

句子

工作 随笔杂谈 日常

.NET委托,事件和Lambda表达式

AI代笔

[翻译]Scalable Go Scheduler Design Doc[Go可扩展调度设计文档]

卓丁

golang scheduler Go scheduler Go 语言

澳门金沙玩赢了钱提现不了异常注单未更新有什么办法处理?

丛林里的余光

异常检测 澳门金沙 提现不了

【高并发】Redis如何助力高并发秒杀系统,看完这篇我彻底懂了!!

冰河

多线程 高并发 秒杀 电商超卖 签约计划第二季

不要以为Bug写的好就是好程序员,其实这只占不到15%

小Q

Java 学习 程序员 架构 面试

从外卖员到拼多多30K+程序员,我付出了三年的青春

小Q

Java 学习 程序员 架构 面试

从新浪数字化转型,窥见互联网的“懂行”新十年

脑极体

区块链赋能市场监管 浙江上线“黑科技”清除取证固证难题

CECBC

区块链 市场监管 取证难题

一点 Go Web 编程实践经验

Garfield

Go web Go 语言

JavaScript引擎的事件循环机制是怎样工作的?

Walker

Java 大前端 运行时栈帧 事件循环

业务架构学习内容有哪些?

周金根

BIZBOK 业务架构

朱嘉明:全球科技革命正在逼近“奇点”,区块链影响未来人类社会的走向

CECBC

人工智能 科技 科技革命

藏在Java数组的背后,你可能忽略的知识点

Java架构师迁哥

基于Goc的Golang代码VSCode实时染色方案

大卡尔

测试覆盖率 精准测试 Go 语言

Dubbo-go应用维度注册模型

apache/dubbo-go

dubbo dubbo-go dubbogo

大数据任务调度 - 有向无环图(DAG)之拓扑排序

代立冬

大数据 数据结构 DAG 拓扑排序 Apache DolphinScheduler

面试必问亿级流量优化策略之JVM调优,文档视频面试,还不收藏

小Q

Java 程序员 架构 JVM jvm调优

央行数研所推出贸易金融区块链平台

CECBC

区块链 金融

架构师训练营第十四周

Melo

LeetCode题解:232. 用栈实现队列,使用两个栈 入队 - O(n), 出队 - O(1),JavaScript,详细注释

Lee Chen

大前端

这篇文章,把中国科技的真实底子讲透了

CECBC

中国 科技 产业竞争

微众银行OSPO建设之路:如何通过OSPO的建设推动企业开源?_开源_钟燕清_InfoQ精选文章