三大招式,和祖传代码 Say Goodbye——十数载开源项目经验谈


近日,GTLC 全球技术领导力峰会全球总站·北京站顺利召开。峰会汇聚 500余位科技领导者, 16 位来自各领域的前沿观察者和亲历者,结合当前趋势带来精彩分享。

 

极狐(GitLab) 解决方案总监张扬作为主讲嘉宾之一,分享了《远离祖传代码——十数载开源项目经验谈》。

如何远离?有何经验?

这就展开讲讲,Here we go

1

祖传代码 Legacy Code )即代代相传的代码,在软件功能快速迭代演进的过程中,由于缺少有效的技术治理策略、人员素质参差不齐等多重因素下,这些代码变成了逻辑混乱、可读性差、难以维护的烫手山芋”——跑得动,看不懂,改不得。

这样的烫手山芋既制约组织发展,又影响员工体验,如何规避它?

第一式——通过开源建立模式

开源和祖传代码有什么关系呢?

或者换一个思考方向:为什么许多历经多年的优秀开源项目,不但没有受到祖传代码的制约,反倒一直保持着强劲的演进能力?这里面一定有值得探讨的地方。

首先,开源的核心是开放,是接纳、包容和发展,求同存异,互利共赢。

在开源世界中,开放核心(Open Core)模式是当前成功的商业开源软件公司使用的主要商业模式。这也是极狐(GitLab) 所秉承的理念——每一个企业、团队或个人都参与到开源社区中来,人人参与,人人贡献,帮助开源项目不断迭代版本、功能升级,与不断演进的开源社区一道发展壮大。

2

其次,选择不同的开源跟随策略也会带来不同的结果。

开源软件跟随策略一般分为两种,一种是私有分支策略,一种是上游优先策略(Upstream First)。

私有分支策略即在公司内建立基于开源社区某个版本的私有的产品版本分支。

它的优势在于完全自定义,可以在开源版本上增加定制功能,相对迅速响应用户需求,同时作为差异化功能,增强产品竞争力。

但当社区更新了功能,私有分支的版本与社区版本进行合并时,将产生巨大的工作量,并且可能出现版本功能不兼容的风险。

这是私有分支跟随策略的劣势。

上游优先策略又叫社区先行策略,指商用产品中所需的所有功能均首先在开源社区中进行开发,并贡献到开源项目。商用版本直接继承开源社区版本的功能,并根据产品需要进行模块和功能裁剪。

上游优先有助于增进上下游之间的兼容性,避免版本跟随合并时消耗大量工作量,也保证了企业用户可以使用到更成熟稳定的开源技术产品。

劣势是依赖开源社区对相应功能需求的优先级决策和开发,从而导致商用版本在响应用户需求方面有时会滞后。

极狐GitLab 秉承上游优先的理念,凭借与 GitLab 社区密切合作的基础,参与到功能开发优先级的决策,规避掉上游优先策略带来的劣势。

3

最后,从个人层面而言,开源带给我们被看见的力量

作为开源的贡献者,参与到开源软件项目中,自己的贡献能够被全世界看到,这是让人振奋的事情。同时,开发者会自发的写出高质量的代码,打造优质的个人品牌和行业影响力。

极狐(GitLab)通过践行开源软件研发的最佳工程实践,汇聚一群秉持开放理念的人共同构建开源社区。大家因为分享而相聚,为共同的目标去贡献、共同进步。众多维护者如同工匠一般,专注于精简代码、减少错误或其他维护工作,这些工作有效提升了代码质量。

4

基于对开源的探索,极狐(GitLab) 成立17个月以来,收获颇丰:
•极狐GitLab 已经发行了17个版本
•极狐(GitLab) 也成为了 GitLab 全球排名第二的贡献者
•极狐(GitLab) 工程师入选 GitLab 月度发版MVP

5

第二式——通过 DogFooding 打磨产品

如何避免祖传代码,把产品打磨好?

吃自己的狗粮。

Eating your own dog food,略称为DogFooding,这是一句英语俚语,常用于描述公司,尤其是软件公司使用自己生产的产品这一情况。

6

DogFooding 实践方面,极狐(GitLab) 使用极狐GitLab 研发极狐GitLab

听起来很拗口,换句话说,极狐(GitLab) 作为软件公司,产品给用户使用之前,我们自己要首先使用。极狐团队是极狐GitLab 的第一批用户。

极狐GitLab 的产研团队使用极狐GitLab 来管理极狐GitLab 自身的DevOps生命周期,活动覆盖极狐GitLab 126个功能,基本上主要的核心功能都在使用。

7

工程师文化是规避祖传代码的有效手段,而 Code Review 则是落地工程师文化的最佳实践之一。

简单而言,即代码要合并到某一个对象分支时,会有一个代码评审过程,这样能够非常有效地帮助我们规避一些祖传代码,因为烂代码合不进去;也可以在一定程度上识别出一些软件的缺陷,还能够消除技术栈;最重要的是在团队内部对高质量的代码达成一致的认知,通过代码评审过程中的知识和经验传递,打造一支高水准的研发团队。

8

同时,极狐(GitLab) 基于Handbook 协作,使用了Git Repo 管理更多内容和流程。极狐GitLab 某些功能异常或者需要改进时,我们内部更有可能第一时间注意到,并在影响用户之前就解决它;有助于主动进行产品创新;通过但凡有事提 Issue,人人都会Markdown”的原则和实践,构建起起企业知识库,将企业发展过程中所有的宝贵经验沉淀下来。

第三式——通过远程办公广纳人才

远程办公和祖传代码又有啥子关系咯?

远程办公不对地域做限制,能够吸引更多优秀的人才。而人才是企业的核心资产,如果能够占领人才的高地,企业的竞争力将更加强劲。对于软件公司而言,优秀的人才造就优秀的产品,进一步透视产品——优秀的人才也将出更高的代码质量。

极狐(GitLab) 自成立伊始,就采用全员远程办公(All remote)的模式,如今已有 150 多名员工遍布全国 21 个城市,从公司文化建设,到远程办公的工具运用、管理方案、实践经验等都由全国各地的员工远程协作完成,并总结形成了一套完整的远程办公体系。��� 如何让企业更有竞争力?国内首个远程办公高级管理课程来袭!

01

在极狐(GitLab) 远程办公的文化下,吸引到了这样一群志同道合的人:他们既是布道师、推动者,也是主事人、超越者。通过这 4 个关键词,我们可以判定出这是一个自驱力非常强的人。自驱力意味着团队效率的增强,从而反馈到企业中,带给企业生机型文化,带动企业快速发展。

02

今天我们从祖传代码切入,分享了让软件公司更有竞争力的组合拳。总结而言,开源是商业软件公司的护城河,DogFooding是保持产品持续领先的最佳实践,而远程办公是吸引人才的有效方式。