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

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

关注

评论

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

iZotope RX 10 for mac(音频修复和增强软件) 10.4.2完美激活版

mac

苹果mac Windows软件 iZotope RX 10 音频修复和增强软件

软件测试/测试开发/全日制 | 从HTML到React:Python全栈开发中的前端框架应用

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

测试

软件测试/测试开发/全日制 | Python全栈开发:利用Docker实现应用容器化

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

测试

CloudXR在农业领域的用例表现

3DCAT实时渲染

CLOUDXR 云化XR

云渲染电脑可以关吗?瑞云渲染客户端能断开网络吗?

Renderbus瑞云渲染农场

云渲染 渲染农场 瑞云渲染

想要了解华为IPD,先要了解需求如何管理!

华为云PaaS服务小智

需求管理 软件开发 华为云

多策略深度智能分货拣货,助力快消品企业提升核心竞争力

用友BIP

深入理解经典红黑树 | 京东物流技术团队

京东科技开发者

软件开发项目延期,这么做项目保证按时交付

软件开发-梦幻运营部

如何将支持标准可观测性协议的中间件快速接入观测

观测云

可观测性 HBase

软件测试开发/全日制丨redis击穿、穿透区别,如何设计用例及测试

测试人

redis 软件测试 测试开发

海外网络加速:突破地域限制,畅联全球

Ogcloud

网络 网络加速 vpn 网络VPN

软件测试开发/全日制丨面试题:中间件-淘汰缓存还是更新缓存

测试人

redis 软件测试 面试题 中间件 测试开发

强大防护:如何选择最佳美国高防服务器租用服务

一只扑棱蛾子

美国服务器 美国高防服务器

软件测试/人工智能/全日制 | Python全栈开发:理解HTTPS加密机制与安全传输

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

测试

Sound Control for Mac(mac应用音量控制软件) 2.6.4中文激活版

mac

苹果mac Windows软件 sound control

强大好用的低代码开发工具

这我可不懂

软件开发 crud 低代码开发 JNPF

AI大模型与低代码开发应用的完美融合

EquatorCoco

人工智能 AI 低代码 大模型

专业开发者的软件开发神器——低代码

高端章鱼哥

软件开发 低代码

码上加速,低代码解锁高效交付案例

京东科技开发者

专业PDF编辑软件Acrobat Pro DC 2023 for mac中文破解版下载

影影绰绰一往直前

制造业企业使用SD-WAN的意义

Ogcloud

网络 SD-WAN 组网 组网网络

圣诞节来临,如何用海外云手机给亚马逊店铺引流?

Ogcloud

云服务 手机云服务 云服务商

React Native 打包 App 发布 iOS 及加固混淆过程

软件测试/测试开发/全日制 | 实现实时通信:Python全栈开发中的WebSocket实践

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

测试

Microsoft Office LTSC 2021 for Mac(office全家桶)v16.80中文正式版

影影绰绰一往直前

Axure RP 10 for Mac(交互式原型设计)v10.0.0.3912官方汉化版

影影绰绰一往直前

CSIG青年科学家会议圆满举行,合合信息打造智能文档处理融合研究新范式

合合技术团队

科技 大模型 合合信息 GPT-4

软件测试/测试开发/全日制 | Python全栈开发中的前端工具与构建流程

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

测试

Downie 4 for Mac(mac视频下载)兼容14系统v4.7.2中文版

影影绰绰一往直前

免费部署试用的低代码开发工具分享(100%源码)

互联网工科生

低代码 JNPF

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