写点什么

Esty 的开源项目运营经验

  • 2015-08-03
  • 本文字数:2172 字

    阅读完需:约 7 分钟

在 Etsy(译者注:一家以交易手工制品和旧物品为主的 P2P 电商),我们是开源的忠实粉丝。在互联网上,无数的人解决了无数个问题,并使用开源许可证发布了他们的代码,没有这些人,就没有 Etsy。我们在 Linux 上运行 Apache 网页服务器,来保持 etsy.com 的运作,我们服务端的代码多数是用 PHP 写的,我们使用 MySQL 来保存数据。为了保持与时俱进,我们使用 Ganglia Graphite 生成的可视化数据来度量我们的系统状态,同时使用 Nagios 来监视系统的稳定性。当然这只是一些主要的例子,我们技术栈里面的每个边边角角,你都能发现开源代码的身影。

在 Etsy,“慷慨精神(Generosity of Spirit)”是每个人工作的一部分,它的意思是要给行业以回馈。对工程师来说,这意味着至少每年一次,或努力在某个会议上做一次演讲,或在本博客上写一篇文章,或给开源项目做点贡献。当我们解决了一个问题时,如果我们觉得解决方案或许对他人有用,我们很乐意把它回馈给开源社区。

维护与分化

这个问题一直困扰着我们公司的很多开源项目,因为源源不断的贡献同时来自于我们的工程师和开源社区。我们从不羞于开源我们技术栈的核心部分。我们一直在公开开发我们的部署系统统计数据收集器团队即时管理工具以及代码搜索工具。我们甚至开源了我们的原子部署系统的关键部分。开源确实很有好处,我们广泛地收到来自社区的新功能和bug 修复,我们的软件变得越来越成熟和稳定。

我们开源的项目越来越多,当我们想快速搞定某些新功能的时候,显然很有理由为项目创建一个内部的分支。这些建立内部分支的项目,很快就和它们的开源版本发生了分化。这意味着,维护好这些项目的工作量会翻倍。内部的任何修复或者新功能,都要在开源版本中重新做一遍,反之亦然。在一个商业公司中,内部版本的优先级往往高于开源版本。看看我们的 GitHub 主页,很难搞清楚哪些项目还在频繁维护中的,甚至我们自己的工程师也搞不清楚。

所以我们的结局就是,手上捂着一大堆“年久失修”的项目。开源社区的人花时间报告了一个 bug,却等不到任何答复,有时候甚至几年都等不到,这使潜在的开源用户心寒。没人能说得清楚,某个开源项目是一个持续维护的软件,还是仅仅是验证完某个想法后就被丢弃了。

向前走

我们想把开源社区建设得更好,因为我们从现有的开源软件中受益良多。为了使我们的开源项目的状态更清晰,我们对此来了一次“春季大扫除”。我们的开源项目将会被清晰地标注为:维护中、停止维护、已归档。

维护中

维护中是默认的状态,所以不会特别标注。维护中,说明我们要么内部就在使用开源版本,要么正在把内部版本的修改同步到开源版本中。我们已经对我们的部署工具完成了这项工作。我们正在处理所有维护中的项目:对pull request 进行合并或给出我们的看法,答复问题报告,以及添加新功能。

停止维护

我们也有一些项目已经几年没有公开更新过了。通常这是因为虽然我们想在内部也使用开源版本,但我们不能拖慢开发周期,我们难以找到两全的办法。但是,代码还是在那儿,依然可以视作是对某种创意的展示,诠释我们如何解决某个问题。或者,这原本是一个研究项目,但我们放弃了它,因为长久以来它都无法解决我们的问题,但是我们仍然希望展示我们曾经做过的尝试。那些项目就保持原样放在那儿,很有可能不会再有更新。我们会关闭问题报告,不再接受pull request,并且会在README 中清楚地说明此项目仅作展示之用。

已归档

我们开源的项目中也有一批是我们在特定时期用过的,但是目前已经不再使用。很可能我们对某个问题找到了更好的解决方案,或者是老方案从长期来看并不能真正解决问题。在此类情况下,我们会往主分支上提交一个commit 来删除所有的代码,仅留下README 用于描述项目及其状态。README 会指向源代码删除前的最后一个commit。这样代码不会真正消失,但项目的状态却明白无误。此类项目同样会关闭问题报告和pull request。

除了这些归档的项目外,我们也在某些时间fork 了别人项目,里面有些我们也不再维护,我们也在着手清理这些项目。

结束语

在过去几年中,我们在维护开源项目方面学到了很多。我们想分享的最大教训就是,一定要在内部直接使用软件的开源版本,这很重要,有可能其他开源开发者也想使用此软件,这可以给他们带来更好的体验。我们一直在努力学习,力求把每件事情做得更好。如果你在等我们对某个问题做出回应,或合入某个pull request,希望本文能帮助你深入理解当下在发生什么,为什么等个回复这么久,并且我们希望新的项目分类方式能帮你梳理清楚我们开源项目的状态。我们希望成为开源世界的典范,我们希望以一种众人受益的方式来给予回馈。给项目做一次春季大扫除总是一件好事,即便当下已是夏季。

你可以在Twitter 上关注 Jared Daniel

https://codeascraft.com/2015/07/09/open-source-spring-cleaning/

本文由作者 Daniel Schauenberg 发表在 codeascraft.com 上: Open Source Spring Cleaning 。经授权,在 InfoQ 中文站翻译共享。本文在 Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License 许可证下发布。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-08-03 07:492135
用户头像

发布了 77 篇内容, 共 38.0 次阅读, 收获喜欢 26 次。

关注

评论

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

精彩演讲实录|在确定性和不确定性中探索AIOps的适用性

TRaaS

技术文章

从原理剖析带你理解Stream

华为云开发者联盟

开发 企业号九月金秋榜

我们做了一个云原生成本优化产品

TRaaS

宏杉科技加入阿里云PolarDB开源数据库社区

阿里云数据库开源

阿里云 polarDB 阿里云数据库 PolarDB-PG PolarDB for PostgreSQL

易观分析&Pangle联合发布《全球新兴市场移动应用报告》

易观分析

新兴市场

软件测试 | 测试开发 | 常见接口协议解析

测吧(北京)科技有限公司

TCP

软件测试 | 测试开发 | app自动化测试(Android)-- Capability 使用进阶

测吧(北京)科技有限公司

Andriod

软件测试 | 测试开发 | 测试人员必须掌握的测试用例

测吧(北京)科技有限公司

测试

内核实战教程第四期 _ 带你走进数据库 SQL 引擎

OceanBase 数据库

开源治理的基本实践与指导原则

SEAL安全

开源 开源安全 软件供应链安全 开源安全与治理

fastposter v2.9.2 最简海报生成器

物有本末

海报生成器 电商海报 图片生成

软件测试 | 测试开发 | AppCrawler 自动遍历测试实践(三):动手实操与常见问题汇总

测吧(北京)科技有限公司

测试

为什么资源隔离对HTAP至关重要?

OceanBase 数据库

不信谣不传谣,亲自动手验证ModelBox推理是否真的“高性能”

华为云开发者联盟

人工智能 企业号九月金秋榜

软件测试 | 测试开发 | 如何使用代理配置快速定位接口测试脚本问题?

测吧(北京)科技有限公司

测试

新书上市 | 十分易上手的图解教程,全系列累计销量20万册!

图灵社区

程序员 计算机 图论

开学季 | Y 省教育厅这张卷,融云答出了100分!

融云 RongCloud

通讯协议

RPC接口测试技术-Tcp 协议的接口测试

霍格沃兹测试开发学社

TDengine3.0计算查询引擎的优化与升级

TDengine

数据库 tdengine 时序数据库 企业号九月金秋榜

边缘服务网格 osm-edge 概览

Flomesh

Service Mesh 服务网格

一文带你了解K8S 容器编排(上)

霍格沃兹测试开发学社

新书上市 | 十分易上手的图解教程,全系列累计销量20万册!

图灵教育

程序员 计算机 图论

最新版!955、不加班、双休的公司名单

千锋IT教育

TiFlash 源码解读(七)TiFlash Proxy 模块

PingCAP

TiDB TiDB 源码解读

【译】日志:每个软件工程师都应该了解实时数据的统一抽象【一】

Rae

架构 分布式 日志 原理

【译】YouTube 架构

Rae

数据库 架构 youtube 后端技术

hive on spark 还是 spark on hive?

一生要强的查数姑

大数据 hive spark SQL 大数据仓库

软件测试 | 测试开发 | 一文搞定 uiautomator2 自动化测试工具使用

测吧(北京)科技有限公司

自动化测试

TiDB v6.2 发版

PingCAP

#TiDB

Python代码用在这些地方,其实1行就够了

华为云开发者联盟

Python 开发 企业号九月金秋榜

你的秋日好运正在派件,请查收9月月更活动!

InfoQ写作社区官方

热门活动 9月月更

Esty的开源项目运营经验_语言 & 开发_曹知渊_InfoQ精选文章