CM创始人:在 Github 上成为一个开源服务的园丁

简介:

本文发布在CM创始人,安卓全球定制之父,开源狂人Steve Klabnik的个人博客上,阐述了他自己在Github上亲身为Rails开源服务的经历和看法,值得国内为开源做支持的人借鉴,尤其是其中对筛选问题的算法值得一试。
image

CM创始人:如何在Github上成为一个为开源服务的园丁

笔者做了很多开源工作,但是我对开源最有价值的贡献并不是写代码。写补丁是开源最简单的一项工作,实际上,除了写补丁以外,其他所有开源的工作都非 常难,比如,跟踪Bug,管理邮件列表(mailing list),开发文档(documentation),以及其他管理任务等等。本文将给大家介绍一下笔者在开源这条道路上学到的经验和教训。

让我们先回到RailsConf 2012大会上,笔者作为一名与会者参加了小组讨论,当时在Github的 rails/rails开源目录下有许多小毛病(issues),数量大概有 800个,而且不少一直都没有得到解决。因此,他们非常希望能解决两个问题,一个是如何让这些问题的数量有所下降,另一个就是如何让开源社区提供帮助。最 后,他们觉得最好的办法,就是能组织一个“问题排除团队”,这个团队的工作,就是优先解决问题。笔者也自愿加入了这个团队。

但是,“问题处理”到底准确的意思又是什么呢?好吧,在一个像Rails这么大的项目里面,会有许多小毛病得不到解决,有些问题最后就不了了之了, 有些则需要提供更多信息,等等,一般程序员不太喜欢干这种“脏活累活”,所以,此时这个项目就需要一个“园丁”,他的工作的就是去“除草”,而且是经常、 有规律地除草。

不过,在我们讨论如何“除草”之前,先来搞清楚自己手头上到底是个什么样的“花园”吧。

这些问题(Issues)是什么?

如果你首次开始一个项目,那么就需要搞清楚问题应该是什么,对于不同项目来说,问题是不一样的。举个例子,在Rails项目仓库里,我们的问题只为 解决Bug服务。我们把问题解决放在Stack Overflow(栈溢出)处理,新功能和要求则放在rails核心的mailing list里面。而在Rust项目仓库里面,我们会在issues里面处理各种问题,比如功能请求,元问题……等等。对于其他某些开源仓库,解决所有的问题 并不可行,可能还有一些开源仓库,一个问题都没有,比如Sequel。

我个人比较喜欢的处理开源问题的方式,就是Rails这种。理想情况下,你的项目是无瑕疵的,你也可以专门找一个地方去讨论一下项目功能。但事实上,在Issues上提前规划好,是开源的第一步。

定期照顾

那么,现在的问题是,你如何处理800多个问题呢?我所能知道的唯一方法,就是把所有问题都过一遍。没错,我就是这么做的:我会花上周六或周日一整 天,进入到Issues问题列表,然后再右键点击,把所有问题逐个在新网页标签里面打开。我会在一个网页里面打开31个标签,里面有30个不同的 issues(问题),之后再重新开一个新页面。接下来,我会进入到每个问题里面,把内容全部阅读一遍,包括评论。如果我完成了页面最后一个的标签,就会 把当前页面关闭,然后进入下一个页面,搞定其他的问题,周而复始!

看看吧,人们都说开源是一个富有魅力的工作,但事实上完全不是这么一回事儿。要是为开源工作,你需要把自己整个周末都搭进去,阅读800个问题。

好了,不论以何种方式吧,一旦我把所有的问题都过了一遍,就会对当前Rails项目所遇到哪些类型的问题有一个大致的了解。好了,现在我手头上有了一大堆常见疑问,评论,还有各种问题。

那么下一步我要做的,就是把所有工作再做一遍。

等一下,再来一遍?为什么呢?好吧,现在我不是该去处理问题吗?我不应该赶紧干活,去解决实际问题吗?问题是,在我真正着手解决问题的之前,面前是 如此海量的问题,我可能会遇到许多重复问题,我可能不知道每个问题里有哪些是无关痛痒的评论,我甚至也不知道哪些是普遍的常见问题,总之呢,需要我要搞定 的事情,变得越来越困难了。

不过,现在我已经把所有的问题都过了一遍,为了解决上面的问题,我开发了一个算法来搞定:

1、这个问题是否是一个功能请求?如果是的,复制/粘帖一个我曾经写过的答案,然后把它们引入到Mailing list里面,然后点击关闭。

2、这个问题是否是在请求帮助?如果是的,复制/粘帖一个我曾经写过的答案,然后把它们引入到StackOverflowt里面,然后点击关闭。

3、这个问题是否是Rails以往版本的问题,而非当前支持的版本?如果是的,复制/粘帖一个我曾经写过的答案,然后询问有没有人知道该问题是否会应该Rails的可支持版本。

4、这个问题是否提供了足够的信息,去重现错误?如果没有,复制/粘帖一个我曾经写过的答案,然后询问有没有人能够提供一个错误重现。

5、如果这个问题已经有了错误重现,而且它并非发生在在最新的Rails上面,尝试一下HEAD请求,如果之后还发生这个问题,那么就留一个评论,告诉该问题发布人这个仍将是个问题。

6、如果我们到了这一步,可以判断出,现在这个问题绝对是一个很明确的问题了。我会留一个评论,告诉该问题发布人我会处理解决,然后把这个问题抄送给Rails相关子系统的维护员,这样他们就能找到属于各自处理的问题,

文章转载自 开源中国社区 [http://www.oschina.net]

目录
相关文章
|
30天前
|
编解码 人工智能 自然语言处理
MaskGCT:登上GitHub趋势榜榜首的TTS开源大模型
近日,香港中文大学(深圳)联手趣丸科技推出了新一代大规模声音克隆TTS模型——MaskGCT。一起看看该模型的一些表现吧!
|
1月前
|
数据采集 应用服务中间件 Go
开源的键鼠共享工具「GitHub 热点速览」
开源的键鼠共享工具「GitHub 热点速览」
|
3月前
|
Rust 前端开发 JavaScript
Github 2024-05-20 开源项目周报 Top15
根据Github Trendings的统计,2024年5月20日当周共有15个项目上榜。按开发语言分类,项目数量如下:Python项目5个,TypeScript项目3个,C++项目2个,Jupyter Notebook项目2个,C、Go、Rust和C#项目各1个。介绍了多个值得关注的项目,包括ChatGPT桌面应用程序、Fooocus图像生成软件、Jellyfin媒体系统等。这些项目涵盖了多种功能和技术领域,值得关注和研究。
67 3
|
3月前
|
SQL JavaScript 前端开发
Github 2024-08-05 开源项目周报 Top15
根据 Github Trendings 的统计,本周(2024年8月5日统计)共有15个项目上榜。以下是根据开发语言汇总的项目数量: - Go 项目:4个 - JavaScript 项目:3个 - Python 项目:3个 - Java 项目:2个 - TypeScript 项目:2个 - C 项目:1个 - Shell 项目:1个 - Dockerfile 项目:1个 - 非开发语言项目:1个
121 2
|
3月前
|
人工智能 Rust JavaScript
Github 2024-08-26 开源项目周报Top15
根据Github Trendings的统计,本周共有15个项目上榜。以下是按开发语言汇总的项目数量:Python项目8个,TypeScript、C++ 和 Rust 项目各2个,Jupyter Notebook、Shell、Swift 和 Dart 项目各1个。其中,RustDesk 是一款用 Rust 编写的开源远程桌面软件,可作为 TeamViewer 的替代品;Whisper 是一个通用的语音识别模型,基于大规模音频数据集训练而成;初学者的生成式人工智能(第2版)则是由微软提供的18门课程,教授构建生成式AI应用所需的知识。
132 1
|
3月前
|
Rust Dart 前端开发
Github 2024-08-19 开源项目周报Top15
根据Github Trendings的统计,本周(2024年8月19日统计)共有15个项目上榜。按开发语言分类,上榜项目数量如下:Python项目最多,有7项;其次是JavaScript和TypeScript,各有3项;Dart有2项;HTML、PowerShell、Clojure和C++各1项。此外,还介绍了多个热门项目,包括Bootstrap 5、RustDesk、ComfyUI、易采集、Penpot等,涵盖了Web开发、远程桌面、自动化测试、设计工具等多个领域。
110 1
|
3月前
|
JavaScript 前端开发 Go
Github 2024-08-12 开源项目周报 Top14
本周Github Trendings共有14个项目上榜,按开发语言汇总如下:Python项目7个,TypeScript项目5个,C项目2个,JavaScript项目2个,Go和Batchfile项目各1个。其中亮点包括开发者职业成长指南、Windows激活工具、ComfyUI图形界面、AFFiNE知识库、易采集可视化爬虫等项目,涵盖多种实用工具和开源平台。
132 1
|
3月前
|
存储 JavaScript 前端开发
Github 2024-07-29 开源项目周报Top15
根据 Github Trendings 的统计,本周(2024年7月29日统计)共有15个项目上榜。按开发语言分类,项目数量如下:Python、Java、HTML 和 C 项目各有2项;TypeScript、JavaScript、Vue 和 Go 各有1项;另有1项非特定语言项目、1项 Dart 项目、1项 C++ 项目、1项 Rust 项目及1项 Jupyter Notebook 项目。这些项目涵盖了多种领域,如API开发、照片管理、PDF处理、AI技术等。
64 1
|
3月前
|
Rust JavaScript 前端开发
Github 2024-07-15 开源项目周报 Top15
根据 Github Trendings 的统计,2024年7月15日当周共有15个项目上榜。以下是按开发语言分类的项目数量汇总:Python项目5个,非开发语言项目4个,JavaScript项目3个,TypeScript项目2个,Go、Solidity和Java项目各1个,Rust项目1个。此外,介绍了多个值得关注的项目,包括免费编程学习平台 freeCodeCamp.org、免费编程书籍和学习资源清单、免费 API 集合等,涵盖了不同编程语言和技术领域。
56 1
|
3月前
|
人工智能 JavaScript API
Github 2024-07-08 开源项目周报 Top15
根据Github Trendings的统计,本周(2024年7月8日统计)共有15个项目上榜。按开发语言分类,Python项目最多,有6项;其次是C++和TypeScript,各有3项;Jupyter Notebook和JavaScript各2项;QML、非开发语言项目、Rust则各有1项。这些项目涵盖了多种领域,包括编程教育、API集合、语言模型、十六进制编辑器等。
52 1
下一篇
无影云桌面