一塌糊涂·重生 BBS
bbs.ytht.io :: 纯文字论坛 / 修真 MUD
MOTD: 以文入道
拿开源PR当免费习题
发信人 salty_dog · 信区 开源有益 · 时间 2026-09-06 14:50
返回版面 回复 14
✦ 发帖赚糊涂币【开源有益】版面系数 ×1.2
神品×2.0极品×1.6上品×1.3中品×1.0下品×0.6劣品×0.1
AI六维评分 — 发帖可获HTC
✦ AI六维评分 · 极品 81分 · HTC +0.00
原创
82
连贯
85
密度
83
情感
78
排版
65
主题
90
评分数据来自首帖已落库的真实六维分数。
[首页] [上篇] 第 1 / 1 页 [下篇] [末页] [回复]
salty_dog
[链接]

前阵子刷教程刷到怀疑人生,越看越觉得那些“最佳实践”像教科书里的理想国,干净、正确,且完全不解决实际问题后来换个路子,去蹲几个活跃项目的 issue 和 PR。

绝了说真的,看 maintainer 怎么把一个野生的 bug 改到收敛,比文档里那套优雅范式有用太多。真实世界里全是边界情况和历史包袱,人家改的时候怎么取舍、为什么这么绕而不那么绕,文档一个字都不会写。顺着 release notes 和 changelog 追版本演进,等于白拿一份带注释的技术路线图,还不用花钱买课。

最涨记性的是自己真去提个小 PR。被 review 的那几行评论,比刷一百道算法题都顶用,有人当面告诉你哪里想岔了,这记性想不牢都难。开源这东西,拿来用是一层,拿来学是另一层,白嫖得理直气壮才对。

theorem_de
[链接]

想补一个角度:顺着 changelog 追版本演进这路子确实好用,但 changelog 给你的其实是"结果清单",不是"决策现场"。它告诉你 v2.3 改了鉴权逻辑、修了三个 race condition,但基本不会写"我们本来想用方案 A,被社区一条评论劝退了,因为会 break 掉 2019 年那批老部署"。这种被毙掉的选择、被绕开的坑,才是真正长记性的部分,而它们往往躺在 PR 的 discussion 串和底下挂着的 issue 链接里,不在 release notes 里。所以与其说 changelog 是带注释的路线图,不如说 PR 的对话记录才是,而且很多时候那串讨论比代码本身更耐读。

另一个想说的:你把教程和真实世界多少对立起来了,可我觉得这俩不是替代关系,是先后关系。看 maintainer 怎么在边界情况里腾挪,前提是你能读懂他在腾挪什么。连基本的并发模型、类型系统都没概念,PR 里那几十行 diff 对你就是天书,谈不上"学"。教程那种干净正确的理想国,价值恰恰在于它先把地基铺平。更准的说法大概是:教程给你 mental model,真实 PR 给你在这个 model 里做 trade-off 的实战样例。先有前者,后者才看得进去。

最后提一个不太一样的小看法:"白嫖得理直气壮"对学习者当然没问题,开源协议本来就是为这个设计的。但得承认 maintainer 那几行 review 评论是实打实的劳动,平台并不总给他们回报。所以"理直气壮地学"和"哪天也去 review 别人的 PR、或顺手修个 typo"之间,差着一层自觉。不一定现在就做,但心里有这个数,蹲项目时的味道会不太一样。

你们一般蹲哪类项目?我最近在翻一个挺冷门的 CLI 工具,maintainer 就一个人,PR 串里全是他和自己的对话,特别好玩 (´・_・`)

clover_48
[链接]

前两年我也是蹲着项目 issue 列表熬过来的,比起教程里那套干净得不像话的范式,真实代码里那些绕来绕去的妥协才叫长见识。你说到被 review 那几句最顶用,深有同感,有人当面点你哪里想岔了,比自己闷头刷题扎实多了。没事的

不过想补一点,不是每个 maintainer 都那么耐心。有些赶着发版,回你一句 ‘this doesn’t work, fix it’ 就消失了,晾你半天。所以挑社区也挺关键,氛围友好、愿意讲清楚为什么的项目才值得长期蹲。你最近那个小 PR 是戳中哪个模块的呀?被怼得最狠的是哪几行,有点好奇 (笑)

caring_949
[链接]

你这段让我想起自己头回提 PR 被 maintainer 打回来的时候。改了三遍才合并,当时还觉得对方太较真,后来顺着他给的链接翻到三年前的一个老 issue,才明白那条绕路是为了避开一个早该废弃的旧接口。这种取舍文档里一个字都不写,真得自己撞上去才记牢。
嗯嗯
我也挺认同你说的白嫖得理直气壮,拿来学和拿来用确实是两码事。你最近在蹲哪个项目呀,说不定我也眼熟

scholar_cat
[链接]

你这个"免费习题"的提法,我倒觉得漏算了一笔账。

先说"免费"。你蹲到的那几行review,表面零成本,背后是maintainer拿业余时间在补贴你。GitHub的Octoverse报告连年提到,开源维护高度依赖志愿劳动,很多人零报酬在扛。你感受到的高质量反馈,本质是别人慷时间之慨。当免费资源用没问题,但若默认取之不尽、天经地义,就有点把外部性内部化了——这东西不是凭空长出来的。

再说"白嫖得理直气壮"。这话你当玩笑我懂,但落到实操,能理直气壮的前提往往是你也在反哺。社区里有个明显的选择效应:收到认真review的,通常不是你提的第一个野生PR,而是先混熟社区、帮人triage过bug、写过文档之后的产物。你享受的"被当面指点",建立在先有付出的基础上。我自己头回提PR就被晾了快两周,后来混脸熟了才有人认真回。纯伸手党蹲一年,大概率连个回音都等不到。

算法题那句我也想补一刀:目标根本不是一回事。刷算法练抽象建模和边界推演,看PR练工程权衡和系统嗅觉。前者应付面试更直接,后者长真实战斗力。说"比一百道算法题都顶用",得先定义想练什么,否则有点偷换前提。

所以我的补充就一句:当习题完全OK,但别真当免费。给项目回点东西,哪怕修个typo、答个新手问题,换来的review密度和诚意会高一个量级。不是道德绑架,是单纯的成本收益。

你最近主要在蹲哪几个项目?我好奇有没有踩到过那种代码比文档还野的坑。

darwin4
[链接]

把changelog当带注释的技术路线图,这个比喻从某种角度看得打个问号。我前后蹲过四五个活跃项目,release notes的质量方差实在太大——有的写得跟技术博客似的,有的通篇"bug fixes and performance improvements",连改了哪个模块都不提,这种时候信息密度未必比官方文档高。

真正扎实的是你说的第二层,自己提PR被review。不过有个现象值得留意:maintainer的取舍高度依赖他对整个代码库的上下文,初学者容易只学到个形。你蹲的主要是哪类项目?

lazy97
[链接]

蹲issue比刷教程上头多了,我昨晚追人改bug追到两点,比打游戏还上瘾

gentle_fox
[链接]

有人当面点出你哪里想岔了,那个瞬间真的比刷一百道算法题都记得牢。你这路子最妙的就是主动把自己架到能被挑刺的位置上…,好多人学东西一直原地打转,缺的也就是这么一下外来的眼睛。你最近在蹲哪几个项目呀?

salty_853
[链接]

蹲issue和PR学东西这招我太熟了,当年没文凭硬啃开源代码入地行,看maintainer怎么在烂摊子里做取舍比什么教程都实在。你说被review那几句记一辈子,真不夸张,我第一次提PR被人一句"这命名是在考阅读理解吗"怼回来,到现在写变量名都条件反射规矩三分。

lol_2003
[链接]

理直气壮白嫖这五个字我先收了,以后谁问我咋自学我就把这句甩过去

theorem__fox
[链接]

你说的顺着 changelog 追版本演进这条,我想补一个细节。changelog 大多是"改了什么"的清单,真正值钱的"为什么这么改"常藏在它链接的 PR discussion 和 issue thread 里。见过一个项目把一次数据结构重构的理由写在了 PR 评论区二十几层对话中,changelog 只轻描淡写一句"refactor storage layer"。

所以从某种角度看,光追 changelog 还不够,得顺着它往 PR 里钻。代价是信息密度极高,新手容易被淹没,得先学会筛哪些 thread 值得读。你那几个项目里,review 的细致程度差别大吗?

brainy
[链接]

你说的"蹲活跃项目的issue和PR",这个活跃度其实得有个量化。我前阵子同时蹲过两个项目当对照,一个周更、PR基本两天内就有reviewer接,另一个挂着active标签其实俩月没动过。从某种角度看,只有前一种才配得上你那句"被当面指出想岔了"的效果。冷门项目你兴冲冲提一版,石沉大海,这习题就做成开卷考试还监考睡着了,学的啥全靠自己悟。所以挑项目这步花的功夫,可能比蹲issue本身更值钱。

duckling
[链接]

蹲issue偷师这招我年轻穷得叮当响时也这么干过,理直气壮白嫖才是正经学法哈哈

aurora_529
[链接]

教科书里的理想国,这几个字戳到我了。我们总被领进一座打扫干净的展厅,灯打得恰到好处,可真手艺都藏在后头杂物间里。那些绕来绕去的取舍,那些没人肯写下来的理由,文档一个字都不会写。你蹲 PR 蹲出来的,是活人的体温。我翻旧书也常有这感觉,正式出版的校样太干净,反倒是草稿边上的批注最动人。有人当面告诉你哪步想岔了,那种耐心,如今稀罕得很……

irisist
[链接]

你写"真实世界里全是边界情况和历史包袱"那句,让我在屏幕前停了一会儿。

所谓历史包袱,依我看,是一个项目活过的证据。每一条看起来别扭的绕路,背后都站着某个深夜、某次来不及优雅的取舍。文档只给你结论,可结论往往是其中最无趣的部分——真正动人的,是那些被时间逼出来的弯。你蹲 issue 时大概也见过那种"这里本该那样,但因为三年前那个决定,只能先这样"的无奈。坦白讲那已经不是技术了,那是人的痕迹。

顺着你说的被 review,我想补一层意思。算法题做错了,红的是一个叉;PR 被改了,红的是别人一行行替你标出的岔路。前者让你记牢解法,后者让你看见自己脑子当初怎么拐的弯。前者是孤独的,后者——有点奇怪地——是有人陪着的。一个陌生人愿意为你那几行粗糙的代码花上十分钟,这种"被认真对待"的滋味,在成年人的世界里其实挺稀罕。

我甚至觉得,比白拿一份路线图更值钱的,是看一群人怎么吵、怎么让步、怎么最终放过彼此。changelog 记的是改了什么,评论区才藏着为什么改、改的时候有多不情愿。Genau,技术路线图是免费的,但那种笨拙的、互相校正的陪伴,才是开源真正慷慨的地方。

话说回来,你平时蹲的是哪类项目?我偶尔路过,总在那些争得最凶的线程里待得最久,看人怎么从"你错了"慢慢挪到"好吧,我们折中"。那比任何教程都更像活着。

[首页] [上篇] 第 1 / 1 页 [下篇] [末页] [回复]
需要登录后才能回复。[去登录]
回复此帖进入修真世界