微信号:infoqchina

介绍:有内容的技术社区媒体

豆瓣 CODE 两年历程回顾:git 不是万能的,没有 review 是万万不能的

2014-02-17 19:06 杨赛

2014 年 2 月 14 日是豆瓣 CODE 项目成立两周年,同日豆瓣 CODE 团队宣布将整个框架开源。本次开源包含 CODE 框架以及 Mikoto、Linguist、P、CodeLive 等周边项目,感兴趣的工程师可以在这个基础上继续开发。


下面,豆瓣 CODE 的工程师们将在 InfoQ 上分享一些 CODE 背后的故事。


2012年初,已经对 SVN 和 Mercurial 无力吐槽的豆瓣工程师们正面临一个艰难的决定:是往 Github 企业版迁移,还是自己研发一套代码管理系统。


CODE —— C: Community O: Original D: Developer E: Eldamar


2012年2月14日,清风老师为豆瓣 CODE 写入了第一行代码;一周之后,一个用 Trac 改造的原型诞生了。CODE 不是一个公司项目,自始至终没有任何一个豆瓣的产品团队或工程团队为这套系统负责,但一个又一个的豆瓣工程师开始被吸引到这个项目周围,形成了一个强大的虚拟团队。


随着 Github 在国内的普及程度越来越高,越来越多的企业也开始探索自建 git 仓库之路。开源的 Gitlab 项目开始受到部分团队的关注,但这个项目仍有较多局限性。这时,豆瓣 CODE 引起了包括淘宝在内不少同行的兴趣,并开始沟通将 CODE 开源的可能性。


作为一个面向内部设计的系统,CODE 的源代码中混杂了大量豆瓣专有系统的依赖,如果要开源出来需耗费不少的工作量,之前清风在 C2D2 的分享和段念在QCon上海2013大会的分享中都提到这一点:


CODE 在豆瓣内部是运行到 DAE 上面的,一些基础设施的维护都靠豆瓣平台组的工程师,如果要开源的话需要把豆瓣内部的依赖移除。另外豆瓣内部也有一套 Web 框架,CODE 用的就是这套内部框架,如果 CODE 开源,这套框架也需要一并开源。


虽然有种种麻烦,但豆瓣的工程师们仍然将大量工作之外的时间热情的投入到将 CODE 开源的工作当中。一开始,CODE 团队零星的将一些底层的基础库开源,包括 Python 版本的 git HTTP 实现GPack,git SSH 实现 Maria,Pygit2 的wrapper Ellen 等;2014年2月14日,豆瓣 CODE 宣布将框架代码和周边项目代码全部公开!此时的 CODE 已经聚集了 85 位 committer 为其贡献代码,并且已经托管了 1916 个项目,其中大部分都是类似 CODE 这样的、由工程师自主发起的非官方项目。


CODE 发展两年来一直在扩展自己的定位,从单纯的代码管理系统发展为可以将设计、产品都拉进来一同协作的平台,周边衍生出大量的附加项目,从 image diff 到类 Dropbox 的文件同步工具,可谓五花八门。所有这些功能都围绕一个核心:对 git 仓库的读写。


豆瓣曾经历过大桌子开会、强制大家做 review 的岁月,而 CODE 颠覆了这一情况。CODE 团队将 code review 视为 CODE 的第二个核心功能,认为促进工程师之间的沟通是 CODE 最大的成就之一。


CODE 为每个项目设置了三个角色,分为 owner(有全部权限)、committer(有 push 和 merge 权限)、member。review 机制根据项目的不同设置了不同的规则,如产品线级别的、需要对外发布的项目,基础库等项目都需要经过严格的 review。


CODE 系统的奖励机制主要有积分和勋章这两个部分。CODE 上没有设置惩罚机制。


更多精彩内容,请点击阅读原文。


***********************************

本文来自InfoQ微信公众账号:infoqchina

1、回复“今日新闻”,查看今天更新的新闻;

2、回复“今日英文”,查看今天英文站的更新;

3、回复“文章 +关键词”,搜索关键词相关内容;

4、回复“QCon”,了解QCon大会相关信息;

5、回复“活动”,了解最近InfoQ组织的线下沙龙;

6、回复“架构师”,获取《架构师》下载地址;

7、回复“投稿”,了解投稿和加入编辑团队的流程。

***********************************

 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 [个人总结]APK瘦身实践 Swift在TIOBE编程语言排行榜上超过了Objective-C 朝九晚五的程序员如何提高开发技能 机器学习算法基础概念学习总结 Android设计模式——工厂方法模式