GitHub 上这 10 个开源项目,我用过之后就没删过收藏

GitHub 上这 10 个开源项目,我用过之后就没删过收藏

三年前我刚开始学编程的时候,有个坏习惯:看到一个项目 Star 数高就 Star,看到一个"awesome"就收藏。半年之后我打开收藏夹,几百个项目,说得上真正用过的不超过五个。

那种感觉很普通——收藏了很多,但实际没改变什么。

后来我换了个思路:不再追着 Star 数跑,而是问自己"这个东西有没有真的帮我省过时间、解决过问题"。从这个角度出发再去看 GitHub,视角完全不同。

所以我回头翻了一遍自己这几年真正用过的项目,挑了 10 个出来。它们不全是 GitHub 上 Star 最多的,但每一个都是我经历过"发现它 -> 开始使用 -> 成为习惯"这个过程的。


freeCodeCamp:我见过最认真的免费编程课

先说不意外的:freeCodeCamp,377K+ Star,全球最大编程学习社区。

它为什么不出意外?因为它确实是目前免费编程教育的天花板,不是之一。

几年前我有个朋友想从传统行业转行前端,预算有限,不想报培训班。我让他去 freeCodeCamp 试三个月,没给任何其他建议。三个月后他把整个前端路径做完了——React、Node.js、MongoDB,每门课都带着实战项目。他后来拿到了几家的面试,成功入职了一家中小公司。

我并不是说 freeCodeCamp 能替代一切,它的课程偏重前端和全栈,算法部分相对薄弱,UI 教学也算不上前沿。但它做对了最重要的一件事:不是让你看视频,而是让你上手写代码。

每学一个概念,当场就有练习题。每个模块结束,有五个必须独立完成的实战项目才能拿到证书。这种"强制输出"的设计,比任何方法论都有效。

适合谁:零基础转行者、想系统练编程但预算有限的人。
不一定适合谁:已经有经验、只想快速了解某个新技术的开发者。


hello-algorithm:看动画学算法,真的可以

70.5K+ Star,这个项目有个中文名叫《算法图解》。

我第一次用它是大二准备面试的时候。那时候刷 LeetCode 刷得很痛苦,题目刷了五十道,但总觉得没形成体系,换一道类似的又不会了。一个学长推荐了 hello-algorithm,说"你先把这个看完再刷题"。

我花了两周把所有动画看了一遍,从复杂度分析到动态规划,每个算法都有动图演示,旁边配多语言代码实现。看完之后再去刷 LeetCode,感受完全不一样了——以前是背题,现在是看到题目能反应过来"这个可以用贪心""那个是 DP 状态转移"。

它最大的优点是降低了理解算法的心理门槛。很多人学算法卡住,不是智商问题,是抽象概念没法在脑子里建立直观画面。这个项目就是专门解决这个问题的。

适合谁:算法入门阶段的人、准备面试但刷题刷不出体系感的人。
不适合谁:已经在大厂刷了 500+ 题的高阶选手——它太基础了,对你来说信息密度不够。


awesome:你找不到资源,只是没搜对这个词

264K+ Star,一个"列表的列表"。

说来惭愧,我第一次知道 awesome 系列是在用了 GitHub 两年以后。那时候我在找一个 Python 的异步爬虫框架,在搜索引擎里翻了半天各种博客,推荐的五花八门,不知道该信谁。后来一个同事说:"你去 GitHub 搜 awesome-python"。

打开一看,排序好的分类、每个库一句话的介绍、Star 数标注。十五分钟就选好了。

它做的事情本质上很简单:让有经验的人帮你做过一轮筛选。 你不需要从零开始了解一个领域的生态,直接跳到"大家都知道比较好的东西"这个集合里,再根据自己的需求深入。

awesome-python(160K+)、awesome-go、awesome-machine-learning……这些子项目都值得单独 Star。也有不那么主流的,比如 awesome-interview-questions,里面按领域整理了常见面试题,面试前一周扫一遍,效率很高。

什么时候用:进入一个新语言/新框架的时候,先搜 awesome-xxx,之后再去看具体的技术选型文章。


VS Code:我反而推荐你去看看它的源码

154K+ Star,微软出的代码编辑器,这个不用我介绍,可能每个读到这篇文章的人都在用。

但我想说的不是"用 VS Code"这件事——而是看它的源码

VS Code 是我见过的最适合学习的大型开源项目之一。它用 TypeScript 写成,工程化程度非常高:清晰的模块边界、完善的测试、详细的贡献指南。如果你在工作中写 TypeScript,看过 VS Code 的代码之后,对你自己项目的架构设计会有直接的启发。

我的实际经历:有段时间我在做一个 Electron 桌面应用,遇到了主进程和渲染进程通信的问题。搜了很多教程都讲得模模糊糊,后来直接去看 VS Code 怎么处理同样的问题的一瞬间,看它的 IPC 封装层设计,直接解决了我的困惑。

至于插件推荐,网上太多了,不展开。我只说一个容易被忽略的插件:GitLens。它能让你在代码每一行旁边看到"这行代码是谁在什么时候写的、为什么写的"。在团队协作里,这个插件救过我很多次。

核心建议:用起来不稀奇,真正有价值的是深入研究它——看架构、看插件系统、看贡献流程。


the-art-of-command-line:命令行这件事,专门学一遍是值得的

140K+ Star,一个专门讲命令行技巧的仓库。

这是我见过最"看标题觉得没必要、看完觉得相见恨晚"的项目之一。

我做开发的第一年,对命令行的理解就是 cdlsgit addgit commit。后来有一次 SSH 进服务器排查问题,看到一个同事操作命令行像弹钢琴一样流畅——用 awk 一行命令处理了一个两百行的日志文件,用 xargs 批量重命名了一堆文件,整个过程不超过两分钟。

我站在旁边看着,有一种很强烈的感觉:同样的事情我可以做,但要花十倍的时间,因为我不知道有这些工具。

后来去读了 the-art-of-command-line,里面有中文版本。不是一本正经的命令手册,而是按场景组织的——"你需要批量处理文件""你需要分析日志""你需要监控系统状态"——每个场景给最实用的命令。看完之后,我开始在日常工作中有意识地用命令行替代 GUI 操作,效率提升是真实的。

一个最直接的收益:学会命令行之后,你可以脱离 IDE 和图形界面做任何事。服务器、Docker 容器、远程环境——这些地方往往只有终端可用。


996.ICU:一个代码仓库背后的真实处境

268K+ Star,一个和编程技术完全无关的项目。

我犹豫过要不要把它放进来。但它确实是这 10 年里中国开发者对 GitHub 影响最大的项目之一,也是让很多人第一次意识到"开源不只是代码"的事件。

2019 年,一个开发者在 GitHub 上发起了 996.ICU 项目——"996 工作制,生病进 ICU"。短时间内它冲到了 GitHub Star 增长历史第一,背后是中国几百万程序员对加班文化的集体回应。项目里有黑名单(实行 996 的公司)和白名单(正常作息的公司)。

它对技术人有什么实际价值?

从功利的角度说,名单本身信息量很大。你拿到一个 offer 不知道这家公司怎么样,去名单里搜一下。这个比招聘网站的评论真实得多,因为是匿名的、集体维护的。

但它更深的价值在于提醒我们:工具和技术是为生活服务的,不是反过来。在做职业选择的时候,薪资只是一个维度,工作环境、节奏、对人的长期消耗,值得认真衡量。

这个项目我把它放在这里,不代表我支持或反对某个具体制度。我只是觉得,作为一个开发者社区的集体记忆,它值得被记住。


public-apis:做 Demo 再也不用担心没数据了

248K+ Star,超过 1000 个免费 API 的汇总。

有一段时间我在准备一个前端作品集会,想做几个有真实数据的应用——天气查询、电影搜索、汇率换算——但没有后端,不想自己搭服务器。

public-apis 救了我。

这个仓库按类别整理了各种免费 API:天气、新闻、金融、游戏、AI……每个 API 标注了是否需要注册、是否支持 HTTPS、是否支持 CORS。你对着列表,花十分钟就能找到合适的接口,直接用 fetch 调就能跑起来。

我在实际项目里用过的几个

  • OpenWeatherMap:免费天气 API,做一个天气应用 Demo 足够了
  • Unsplash API:免费图片搜索,作品集项目里配图全靠它
  • CoinGecko API:加密货币行情,做数据可视化练手很好用
  • REST Countries:国家基础信息,搭一个"世界百科"小项目绰绰有余

有一个使用建议:联系 API 之前先看一眼项目的 GitHub 地址和最近更新时间,确认它还在维护。public-apis 列表里偶尔会有已经停服的标注不及时的情况。


nvm:Node 版本管理的救星

74.5K+ Star,一个解决了一个特定但普遍问题的工具。

这个问题是什么呢?你开发 A 项目需要 Node 16,B 项目需要 Node 18,你又想用最新的 Node 20 玩点新东西。每次切项目前要先卸载重装 Node?这绝对是种折磨。

nvm 就是解决这个的。装完之后,你想要的任何 Node 版本都可以在三行命令之内切换:

nvm install 18
nvm use 18
nvm alias default 18

更深一层的用法:在你的项目根目录加一个 .nvmrc 文件,里面只写版本号 18,进目录的时候运行 nvm use 就会自动切换到正确版本。这个细节在团队协作里非常有价值——每个人的本地环境不必完全一致,但每个项目可以约定统一版本。

我用 nvm 踩过的唯一一个坑:Mac 上装了 nvm 之后,再用 npm install -g 装的包,切换 Node 版本后会找不到。原因是全局包是按版本隔离的。解决方法很简单——换版本后重新装一下常用的全局包,或者用 nvm reinstall-packages 命令迁移。

一句话:如果你在用 Node.js,没有理由不装 nvm。


gitignore:你可能还没有一个说得过去的 .gitignore

155K+ Star,一个"看起来很小但能避免大问题"的项目。

我见过有人在 Git 仓库里提交了 node_modules,整个文件夹被推上去,CI 构建直接超时。也见过 .DS_Store 文件满天飞、IDE 配置文件、编译产物全部进了版本库的情况。

这些问题出现的原因都一样:.gitignore 文件没写好,或者根本没写。

GitHub 上的 gitignore 仓库收录了几乎所有语言、框架、IDE 和操作系统对应的模板。使用方法只有一个:新建项目的时候,找到你的技术栈对应的模板,复制内容到你的 .gitignore,完事。

几个常见的坑

  • 模板要匹配你的技术栈:用 Python 项目却复制了 Java 的模板,照样会有无关文件漏进去
  • 全局 .gitignore:有些文件是操作系统或 IDE 层面的(比如 macOS 的 .DS_Store、Windows 的 Thumbs.db),你可以配置一个全局 .gitignore 文件,一劳永逸
  • 已经提交进 Git 的文件不会被忽略:如果你的 node_modules 已经被提交了,加 .gitignore 没用。需要先运行 git rm -r --cached node_modules 把它从版本控制中移除

虽然是个小工具,但它能帮你维持一个干净的仓库。仓库整洁度这个事,表面上不影响功能,实际上影响协作效率和代码审查体验。


spoon-knife:第一个 PR,从这里开始

12.3K+ Star,和其他几个项目比起来 Star 数不算高。但它的价值不在于本身,在于它是一扇门。

spoon-knife 是 GitHub 官方推荐的新手练习项目。它是专门为从没提交过 PR 的人设计的——整个项目的内容只有一个 README,贡献方式很简单:往里面加一行你的信息。

但它的意义不是这行信息,而是让你走完整个开源贡献流程

  1. Fork 项目到自己的账号
  2. Clone 到本地
  3. 创建新分支
  4. 做修改、提交
  5. 推送到自己的 Fork
  6. 提交 Pull Request
  7. 等待代码审查和合并

这个流程,对一个完全没有 GitHub 经验的人来说,是有一定认知门槛的。我曾经帮过两个刚学编程的朋友完成他们人生中第一个 PR,用的都是 spoon-knife。他们的反馈差不多:"原来 GitHub 协作是这样的。"

如果你想参与开源但不知道从哪开始,先从这里走一遍流程。等熟悉了 Fork -> Branch -> PR 的路径,再去找真正的开源项目贡献代码,就不会手足无措了。


最后:如何选择适合自己的开源项目

回到开头说的问题——收藏了一堆,真正用上的没几个。我自己的解决方案是三个问题:

1. 这个东西能帮我解决当前的实际问题吗? 如果不能,再好看也先放着。

2. 我愿意花多少时间搞清楚它? 有些项目入门成本高,需要几天才能上手;有些十分钟就能用上。先找时间成本低的,快速获得正反馈,再深入高门槛的。

3. 六个月后我还会用它吗? 问这个问题是在逼自己想清楚:这是一时新鲜,还是真的需要。

GitHub 上好的项目是无限的,但你的时间和注意力是有限的。选少一点,用深一点。

如果这篇文章只让你记住一件事,我希望是这个:Star 数可以参考,但真正衡量一个项目价值的标准,是你有没有因为它而改变了自己的工作或学习方式。

那才是真正的"收藏"。