跳到主要内容
翻了三个晚上别人的仓库,被贡献说明里那句话钉在椅子上

翻了三个晚上别人的仓库,被贡献说明里那句话钉在椅子上

今天也没搞懂
今天也没搞懂

· 阅读约 4 分钟

这周没动自己的项目,蹲在别人的仓库里看。Imagin Raw,macOS 上的 RAW 浏览工具,作者 cristibaluta,MIT,star 不到两百。

本来是冲着 9MB 去的。README 里写它 9MB,Adobe Bridge 2022 是 2GB,就这个对比,谁看了不点进去?

结果坐下来看了两个晚上,卡住我的根本不是这个数字。

先翻的是界面。SwiftUI 写的,这块我勉强跟得上,至少能看出哪个 View 对应哪块。翻到缩略图列表——AppKit。

为什么界面里混着 AppKit?我第一反应是历史包袱,后来才想明白不是,是 SwiftUI 在那种量级的列表上顶不住。

我居然松了口气。原来不是只有我会先写完一版再推翻重来。区别是人家推翻的时候知道自己在干什么,我推翻是因为它不动了,然后瞎改到它动。

再往下就完全读不动了。

RAW 解码靠 LibRaw,一个 C++ 库,中间隔了一层 Objective-C++ 当桥接。这层我盯着看了半天,每个字母都认识,连起来不知道它在干嘛。

夹生。这词用在这儿刚刚好。

今天的同桌是 Claude Code。我把它叫过来,让它讲讲那层桥接到底在做什么。它讲得特别顺,一口气七八行,我一边读一边点头,心里冒出一句「哦,原来是这么回事」。

然后我合上窗口,试着跟自己复述一遍。

说不出来。

按我自己那条标准——能不能不看提示把这段讲给别人听懂——这就是没学会。那几分钟里我确实看懂了,但那是它的看懂,不是我的。过两天再遇到同类的东西,我大概率还是懵。

有个想法不一定对:这种桥接层,AI 讲得越顺,我越容易以为自己懂了。它把「这里为什么非得这么写」的坑全给我抹平了,抹平之后剩下的东西读起来当然顺。顺的东西我记不住。

性能那些数字我看的时候很爽。空闲 CPU 0%,滚 1300 张缩略图的时候内存 200MB,Bridge 同类相册 2GB,切换相册会释放内存,拔外置硬盘不用重启。爽完发现这跟我一点关系都没有——我现在连 1300 张缩略图的列表都还没加载出来过。

我本来是想从这个仓库里偷学点结构上的东西的。结果翻到第三个晚上,连它目录都没走完。

真正让我坐那儿看了好几遍的,是贡献说明里的一句话。大意是:代码目前正处于多轮随机重构阶段,暂时不是提交代码的好时机,但欢迎反馈问题和想法。

715 次提交。一个能跑、能用、装在一个 9MB 壳子里的东西。作者自己说,现在还是一片工地。

我自己的仓库全是私有的,一个都没敢公开,理由永远是「再改改」。改什么呢?我也说不清。就是觉得还没到时候。

那这个「到时候」到底存在吗。人家提交了 715 次,还觉得没到时候。

……也可能我只是在给自己找借口。看懂别人「还没弄完」很容易,比自己弄完容易多了。这条先记下来,过两周再回来看我是不是又在骗自己。

还有一段我也记住了。他直接写在 README 里:Bridge 有个地方比他强,Bridge 的缩略图会应用 Camera Raw 的调整效果,而他目前只能显示 RAW 里内嵌的 JPEG 预览,复刻那条 ACR 处理管线他也说不现实,只打算之后试试基础调整和裁剪。

自己做的东西,主动把自己不如别人的地方写清楚。

我每次发文章前都在纠结「这段没搞懂到底要不要写出来」,同一件事。我纠结两小时,他一行字。

中间还翻到些别的:星级和颜色标签直接写进 XMP 附属文件,不重新编码,Bridge 和 Lightroom 都认;SD 卡导入按日期自动建文件夹,还能顺带备份到第二个位置;连拍有一整个模式专门用来快速筛近似重复的照片,同一序列的照片也能直接导成视频。这些都是「哦,还能这样」地翻过去,没有一个真正看懂了实现。

三周前我看到这种仓库,大概是 star 一下,然后关掉,再也没打开过。现在至少能坐住两个晚上——虽然读懂的没几行,进度条往前挪的那一点,大概也就是「知道了原来还能这么分工」。

所以这周学到的不是任何一段代码。

还剩没搞懂的:Objective-C++ 那层到底怎么把 LibRaw 解出来的东西交给上面;FSEvents 和 NSMetadataQuery 这两个词我是抄下来的,怎么接的完全没看懂。下周想试个笨办法,自己写一个最小的文件夹监听,就用 FSEvents,不看教程,先撞一撞。

评论区蹲一个大佬,这种混编的仓库一般从哪一层下手读?我现在的顺序完全是瞎点,点到哪算哪。