【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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:491850
用户头像

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

关注

评论

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

软件测试/测试开发丨Pytest配置文件pytest.ini

测试人

Python 程序员 软件测试 测试开发 pytest

开源项目推荐 【SkyEyeSystem】

程序员阿杜

Java 爬虫 springboot

瞬间抠图!揭秘 ZEGO 绿幕抠图算法背后的技术

ZEGO即构

人工智能 图像处理 AI抠图 绿幕 主体分割

日本加密货币市场报告: 行业趋势和未来前景研究

Footprint Analytics

加密货币 区块链游戏 NFT Web3 游戏

传承敬老美德,志愿服务伴我行

科技热闻

全面数字化业务时代亟需升级企业数智底座

用友BIP

数智底座

软件测试/测试开发丨Python闭包函数和计时器学习笔记

测试人

Python 程序员 软件测试 函数

生成式AI下的企业:是不是该成立新部门封新官了?

FinClip

服务器安全加固 - Linux

高端章鱼哥

Linux 网络安全 运维安全

千亿参数开源大模型 BLOOM 背后的技术

EquatorCoco

开源 数据 bloom

武装你的WEBAPI-OData与DTO

高端章鱼哥

OData WebApi

基于Web的智慧交通3D可视化系统

2D3D前端可视化开发

智慧交通 智慧交通系统 智能运输系统 ITS 智慧公交

美团面试真题和答案

王磊

java面试

污点分析是什么神奇的代码检查技术?

华为云PaaS服务小智

云计算 华为云 华为开发者大会2023 代码检查

KaiwuDB 获 2023 可信数据库发展大会“双料”荣誉

KaiwuDB

KaiwuDB 2023可信数据库发展大会

Unity Joint用法及案例

EquatorCoco

Unity

探寻日本区块链游戏的未来潜力

Footprint Analytics

区块链游戏 NFT 链游

BI商业智能工具给企业带来的变化,以瓴羊QuickBI为例

巷子

SpringBoot 3.0来了,你准备好了吗? | 社区征文

bug菌

后端 年中技术盘点

大型企业全面预算管理该何去何从?

用友BIP

全面预算

技术分享 | 如何基于阿里云AIACC加速Stable-Diffusion AI绘画

阿里云弹性计算

云计算 AIGC AIACC AI大语言模型 大语言模型

如何理解低代码平台的定制化服务?

互联网工科生

低代码 软件定制

工业软件芯片国产化:数智化自主可控的重要保障

用友BIP

国产替代

用友iuap:社会级数智化底座,助力企业实现国产替代

用友BIP

国产替代

低代码平台——少量编码即可快速生成应用程序

这我可不懂

低代码 可视化 JNPF

使用 Navicat 的数据生成插入大量测试数据

hungxy

国内数据库第一梯队!柏睿数据RapidsDB通过“可信数据库”评测

新消费日报

influxdb 中得 fields 与 tag 区别总结

互联网工科生

Influxdb

超燃!用友大易走进晨光,探索人才管理创新之道

用友BIP

招聘

企业为什么需要软件的应用框架?

力软低代码开发平台

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