Qwen3 惊喜上线阿里云百炼,8款模型全开源!点击免费领取 800万 tokens! 了解详情
写点什么

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

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

关注

评论

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

手把手教你华为鸿蒙开发之第十二节

The Wang

华为

镜舟科技荣登 CCFA 2024 年度零售科技新锐企业榜单

镜舟科技

开源 数据分析 分析型数据库 StarRocks

RAG分块策略:主流方法(递归、jina-seg)+前沿推荐(Meta-chunking、Late chunking、SLM-SFT)

汀丶人工智能

rag

避免故障逃逸最佳实践

FunTester

如何动态调试线程池?

江南一点雨

一站式在线打字学习平台-巧手打字通

巧手打字通

键盘 打字练习 打字软件 打字练习软件 打字训练

手把手教你华为鸿蒙开发之第十一节

The Wang

华为

是观察者,也是实践者!|华为云开源开发者大前端技术论坛完满结束

OpenTiny社区

OpenTiny TinyVue TinyEngine 前端开源 DevUI

手把手教你华为鸿蒙开发之第十节

The Wang

华为 huawei

Lumoz的ZK算力网络,加速以太坊3.0的到来

股市老人

HAMi已在云厂商、互联网等数十家企业应用 异构算力利用率提升5-10倍

极客天地

惊艳!全网首份“架构师成长笔记”GitHub狂澜9000星

Summer

Java 编程 程序员 面试 架构师

来自阿里大佬的洗礼!全网独家的SpringBoot核心文档,讲的太清晰了

Summer

Java 程序员 面试 架构师 架构师大厂

AI测试 前 OpenAI 音频 AI 负责人获投 4000 万,打造情感通用智能;TEN Agent 一键让 Coze Bot 开口对话

声网

Lumoz的ZK算力网络,加速以太坊3.0的到来

BlockChain先知

有哪些值得推荐的AI人工智能网站?这10个一定要知道!

职场工具箱

人工智能 效率工具 办公软件 AIGC AI生成PPT

虚拟化世界,正上演一场「星际穿越」

脑极体

AI

豆包Marscode 课程回顾 | AI 编程课「入门开发者系列」

Trae

为什么ETH 3.0需要Lumoz的ZK算力网络?

石头财经

文字稿 | MatrixOne2.0.0:AI向量与高可用能力的重磅升级

MatrixOrigin

数据库

为什么ETH 3.0需要Lumoz的ZK算力网络?

加密眼界

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