写点什么

InnerSource: 来自 PayPal 内部的开源实践

  • 2015-11-04
  • 本文字数:1409 字

    阅读完需:约 5 分钟

InnerSource 仅仅是一个名称,它是一种在企业内部应用开源软件实践的软件开发方法。来自 PayPal 的技术带头人 Cedric Williams,在开源大会OSCON 上解释了在PayPal 如何使用InnerSource 来打破孤岛、加强合作、增加生产力。

实践开始于18 个月以前,清算平台的团队当时大概需要花2/3 的时间来重写由区域团队所提交的代码。而区域团队,有一个很重要的职责,那就是确保PayPal 能够在不同国家符合当地的一些规定。这种情况对于谁都没有益处。清算团队没法做好自己的本职工作,而区域团队所话费时间写的大量代码而别人又用不上。

PayPal 从开放源代码软件中汲取了灵感,尤其是来自 Apache 软件基金会的实践。他们发现了开源软件的组织原则,即每个项目都有各个金字塔的层:用户,在最底层;贡献者;可信任的提交者;最上层是架构师/开发者的领导者。PayPal 评估了这些个情况后,作出最大的变化是引入“可信任的提交者”角色。

找到合适的可信任的提交者可不是一个简单的决定:清算团队中只有 10% 的人是这样的角色。Williams 在此回答了人们一个问题,成为可信任的提交者需要哪些技术技能?首先必须有深厚的技术功底,然后对于代码库的核心了如指掌,即使有了这两样也不能成为最出色的。可信任的提交者还必需拥有良好的人际交往能力,他们要成为教练员。他们需要以积极、清晰的方式来沟通。举例来说,不要说“这些代码无法接受”,而是需要这么去说“这是我需要你去做的方可接受你的代码,这里有几点原因[…]”。

不出所料,引入可信任提交者角色带来了政治上的扯皮风险,所以不得不小心的去处理,无论是清算团队内部还是外部。为了使全局能够接受变化,可信任提交者不仅仅要审核来自区域团队所提交的代码,还要审核来自清算团队其他成员所提交的代码。

实施 6 个月之后效果出来了,清算团队再也没有花时间去重写别人的代码了,而仅仅花了 10% 的时间去做审核代码的工作,该团队进行了一次大规模的重构,且在没有做任何计划的情况下提升了 4 倍的性能。团队成员的心态也从排斥转变为积极的接受。一个最大的副产品是所有相关的沟通都通过写作来完成,多数是在 Github 上:PayPal 使用 Github 来托管他们的开源软件,使用企业版 Github 来托管他们的闭源项目。这使得能够在所有的团队之间进行知识共享和传播。

在 InnerSource 之前,PayPal 尝过不同的方法,它们是:自顶向下的强制和驻场。

第一种方法,即自顶向下,是比较传统和古老的了。定义严格的规则和利益相关者,自顶向下,让人们承担责任。这无法解决问题,但是可以产生很多的会议。

驻场的情况会好一点。来自各个区域团队的高级工程师们都被租借到圣荷西,和开发团队的成员们在一起工作。驻场能够达到知识的共享,且能够对彼此团队的行为有所了解。非常遗憾的是 ,一旦这些工程师们回到了各自的区域团队之后,他们就会成为瓶颈。他们发现找不到时间或者是没有所需要的技能将他们所学到的传授给他人。

Williams 为 InnerSource 的入门者提供了一些建议。在第一步,在你的工程师团队中将可信任提交者限制在 10%,要求所有的代码都须公开审核,且要确保代码的审核要聚焦于完成什么从而使代码更加的良好;第二,要求所有的对话都是成熟的、得到尊重的;第三,分享你的经验。PayPal 将于 11 月 9 号在加利福尼亚的圣荷西举办首届 InnerSource 峰会。PayPal 还为此赞助了一本小,目标读者是哪些想进一步学习此方法的人们。

查看英文原文: InnerSource:Internal Open Source at Paypal

2015-11-04 18:002545
用户头像

发布了 30 篇内容, 共 12.7 次阅读, 收获喜欢 0 次。

关注

评论

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

CSS布局(六)之居中布局

Augus

CSS 11月日更

C#中的yield

喵叔

11月日更

数据分析从零开始实战,Pandas读写TSV/Json数据

老表

Python json 数据分析 11月日更

如何通过mock数据提高前端开发效率?

石云升

大前端 Mock 职场经验 11月日更

【高并发】朋友去面试竟然栽在了Thread类的源码上

冰河

Java 并发编程 多线程 高并发 异步编程

[Pulsar] Persistent Topic持久化消息

Zike Yang

Apache Pulsar 11月日更

【死磕Java并发】-----J.U.C之读写锁:ReentrantReadWriteLock

chenssy

11月日更 死磕 Java 死磕 Java 并发

工具 | pg_recovery 设计原理与源码解读

RadonDB

数据库 postgresql 源码 RadonDB

掘金新大陆——最后一个十亿蓝海

Python Qt GUI设计:QPainter、QPen、QBrush和QPixmap窗口绘图类(基础篇—17)

不脱发的程序猿

Python GUI设计 PyQt5 绘图功能

如何使用 MySQL Workbench 自动生成 ER 图、同步更新远程数据库 - MySQL Workbench 使用教程

蒋川

MySQL 数据库 数据管理工具

Go语言学习查缺补漏ing Day8

Regan Yue

Go 语言 11月日更

Apache ShardingSphere 5.0.0 内核优化及升级指南

SphereEx

数据库 开源 架构 ShardingSphere SphereEx

非科班毕业生,五面阿里:四轮技术面+HR一面已拿offer

热爱java的分享家

Java 架构 面试 阿里 经验分享

26 K8S之Service资源调度

穿过生命散发芬芳

k8s 11月日更

linux如何将输出重定向到文件和标准输出

入门小站

Linux

在线VLOOKUP数据查找工具

入门小站

工具

如何使用 Workbench 远程连接到 MySQL 数据库 -MySQL Workbench 使用教程

蒋川

MySQL 数据库 MySQL 数据库

为什么Git用SHA做版本控制,而非像SVN用int数字或者是时间戳

吴脑的键客

git 学习

7张图揭晓RocketMQ存储设计的奥妙

中间件兴趣圈

RocketMQ 存储 消息队列 Apache RocketMQ

分享8个可以编译为JavaScript的语言

devpoint

typescript 函数式编程 11月日更 ClojureScript Clojure

充分挖掘数字人民币的三个隐性价值

CECBC

ExoPlayer播放在线TS文件无声音问题分析

Changing Lin

11月日更

超强实时跟踪系统首次开源!支持跨镜头、多类别、小目标跟踪!

百度开发者中心

AI 实时跟踪

献出我的膝盖!这份“基础-中级-高级”Java程序员面试集结,看完我是说直接跪了

热爱java的分享家

Java 架构 面试 程序人生 经验分享

水晶球“数据洞察”正式上线:洞悉用量趋势变化,觉察互动体验细节

声网

人工智能 水晶球 数据洞察

虚拟偶像,人类探索元宇宙的萌芽

CECBC

Prometheus Exporter (十二)Consul Exporter

耳东@Erdong

Prometheus Consul exporter 11月日更

猫,量子力学,和手机人像摄影之变

脑极体

如何使用 Flutter 创建桌面应用程序【Flutter专题1】

坚果

flutter 签约计划第二季

在 Flutter 中使用 http包【Flutter专题2】

坚果

flutter 签约计划第二季

InnerSource:来自PayPal内部的开源实践_开源_João Miranda_InfoQ精选文章