站长之家用户 - 传媒 2021-12-30 19:43

极狐GitLab|参与开源的正确方式:Upstream First

近年来,“开源”成为了国内科技公司对外传播技术实力的热门词汇。从闭源到开源,从低调发展,到今年三月国家将“开源”写入十四五规划,这一年,我们共同见证了开源的历史时刻。毋庸置疑,开源正在加速成为中国未来技术发展的关键路径,而开源的发展和生态繁荣离不开多方力量(个人、企业、组织、高校等)的共同参与,一直以来,“Upstream First”被认为是参与开源的正确方式。

什么是Upstream?

Upstream(上游)这个术语通常指数据流,对应的是Downstream(下游)。对于开源项目来说,Upstream指开源参与者贡献开源项目以及此项目版本发布的地方。参与者在Upstream做贡献(功能特性、缺陷修复、决策制定等),最后流向(分发)Downstream,为用户所用。

为什么Upstream First很重要?

Upstream是开源项目贡献者共同协作的地方,功能特性的添加、缺陷的修复、相关决策的制定都发生在上游,其重要性不言而喻。Upstream First可以:

1、降低成本

如果采用Upstream First的模式,积极与Upstream进行沟通,将功能特性都贡献进Upstream,不管后续如何迭代发布,版本中都会包含有自己想要的功能特性。这就省去了维护臃肿的Downstream的成本。

2、保证软件供应链安全

软件安全攻击在近些年已经发生了转变,从对既有漏洞集中攻击的传统软件攻击转变为了软件供应链攻击,也就是说攻击开始向着Upstream转移。如果所有的贡献都在上游,缺陷、漏洞、补丁都发生在Upstream,只要Upstream的安全性能够得到保证,Downstream的安全性也将得到足够的保障。Upstream和Downstream的有效协同,将构建起软件供应链的安全屏障。

3、助力良好开源文化的构建

Upstream First一直是众多优秀开源项目践行的开源参与方式。坚持Upstream First的理念,有助于构建良好的开源文化,培养更多的开源人才,让个人、企业或组织从开源这种协作创新中获益。从而推动整个开源的良好发展。

极狐(GitLab):Upstream First的践行者

极狐(GitLab)研发团队从2021年初开始组建,虽然成立时间不长,团队规模也不大,但我们对GitLab上游社区的代码贡献量已经取得了非常不错的进展。以最近的一次GitLab release(GitLab14.5,发布时间为2021年11月22日)为例,GitLab上游社区总计有201个来自社区贡献者的代码合并请求(Merge Request)被成功合并,如下图所示:

而在这个release中,有40个来自极狐(GitLab)研发团队,如下图所示:

由此可知,在GitLab14.5release中,极狐(GitLab)的代码贡献量占到了社区总贡献量的20%。另外,在下图中我们可以看到各大公司对GitLab14.5所做出的代码贡献量(极狐(GitLab)暂未被统计在其中),图中显示的第二名,其代码合并请求数为10个,远低于极狐(GitLab)的40,据此我们可以推断在最近的GitLab release中,极狐(GitLab)研发团队对GitLab的代码贡献量已仅次于GitLab Inc. 达到了全球第二位。

另外,有两位来自极狐(GitLab)研发团队的工程师进入了个人贡献者榜单的Top10,其中曹宝栋以16次代码合并请求位于榜单的第二位。数据来源同上图。

极狐(GitLab)研发团队前端研发人员的Upstream First实践

极狐(GitLab)研发团队前端开发人员Jeremy Wu作为极狐(GitLab)Upstream First的践行者,在工作中发现了GitLab的一些security问题,直接贡献到了Upstream(GitLab),最后获得了Upstream的赞赏。以下是Jeremy Wu关于Upstream First的故事:

Jeremy Wu是极狐(GitLab)研发团队的前端开发人员,主要工作是前端方向基于XSS攻击的防范。简单的来讲就是“不相信用户的输入”,通过一系列方法将用户的输入“消毒”,并展示到用户界面上。关于安全性问题的发现,Jeremy Wu是通过issue里的 ~security标签来查找的,而且完成的安全性相关的代码修复都是基于~security和~easy for new contributor来做的。他以onboarding warm up为出发点,去找寻“潜在的安全问题”,这些安全性问题可能导致用户的输入内容劫持网站。

因为安全性问题的发现与修复是一个长期的过程,在代码提交的时候需要由专业的安全团队去做代码审查,防止有代码会存在潜在的安全性问题,在这个前提下安全团队会定期去检查代码和通过一系列的CI自动化扫描来查找是否有潜在风险。对于GitLab来说,更是有着严格的代码安全审核流程,而Jeremy Wu是非常熟悉这个流程的。他把security贡献的Upstream First归纳为三个步骤:

1. 首先需要去对应的issue下面找到对应的issue owner,然后询问是否可以着手修复这个对应的 issue,owner如果觉得可以会把这个issue assignee改为“你”,接下来就可以开始修复工作。而Jeremy Wu对修复流程也是驾轻就熟,他用如下三步就会完成问题的修复:

a. 找到未经“消毒”的内容片段;

b. 将该片段引入“消毒”代码;

c. 把“消毒”后的代码替换到源片段。

通过以上三步即可完成安全性问题的修复。

2. 如果在做的过程中遇到了一些技术性的困难,可以直接在issue里与issue的owner进行沟通,讨论如何解决。沟通大致为:

• 当前所遇到的问题的一段详细描述

• 如何复现遇到的问题

• 如果描述且复现步骤清晰,一般不需要经过第二轮沟通则可以解决。但在实施过程中,Jeremy为了更加熟悉GitLab本身,他选择先去找到代码对应的页面(找入口),然后通过上述方法给代码补丁之后再对对应页面进行观察,是否与之前渲染的内容有出入,若无出入则可以将代码提交,并进行Merge Request。

3. Merge Request

当Merge Request做好之后,GitLab Dangerbot会自动为“你”推荐对应的MR reviewer。一般来说是三个(frontend/backend/database + maintainer + security),然后Jeremy Wu会手动在MR的channel里ping上述的issue owner。如果在MR review的过程中有一些代码建议以及修改,在与对应的reviewer进行交涉以及代码修改之后代码即可以被合进Upstream的仓库。

一般来说,到这个阶段某个issue就可视为结束了。如果需要后续的跟进,Upstream owner会创建对应的 follow up issue来跟进。

Jeremy Wu一直使用这种工作方式与 Upstream(GitLab)进行协作,其出色的工作获得了Upstream的赞赏。

Upstream First:培育真正开源文化,构建良好开源生态

开源是开源参与共同体(community)通过协作创新的极致体现。也被视为能够解决国内“卡脖子”问题的有效手段。Upstream First理念是能够培育真正开源文化,构建开源生态的基石。

极狐(GitLab)自成立之日起就秉承“开源开放,人人贡献”的理念,鼓励所有极狐人积极参与开源贡献,努力践行Upstream First,期望能够通过极狐人的努力来夯实开源发展基础,完善极狐GitLab开源生态发展;打造开源软件品牌,构建生态完善的开源社区、开放联盟;推广普及开源文化,培养更多开源人才,扩大开源生态发展;促进产学研协同创新,释放“软件定义”创新活力,助力国内软件产业的开源开放、创新发展,提升国际竞争力,从而加速全球化布局。

相关话题

特别声明:以上内容(如有图片或视频亦包括在内)均为站长传媒平台用户上传并发布,文章为企业广告宣传内容,本平台仅提供信息存储服务,对本页面内容所引致的错误、不确或遗漏,概不负任何法律责任,相关信息仅供参考。任何单位或个人认为本页面内容可能涉嫌侵犯其知识产权或存在不实内容时,可及时向站长之家提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明(点击查看反馈联系地址)。本网站在收到上述法律文件后,将会依法依规核实信息,沟通删除相关内容或断开相关链接。

推荐关键词

24小时热搜

查看更多内容

大家正在看

蔚来拟在新加坡二次上市