深度思考: 如何做好一个开源项目?

时间:2022-04-10 06:34:03

深度思考: 如何做好一个开源项目?

接下来我会按照如下目录大纲和大家分享我自己的感悟:

  • 我对国内开源项目的思考
  • 国内开源项目/社区的不良风向, 是如何加速招聘的“内卷”?
  • 做开源项目能带给我们什么?
  • 从零到一, 如何打造一个高执行力,快速迭代的开源项目?
  • 分享几个有价值的开源方向

我对国内开源项目的思考

首先在阐述任何观点前, 大家都应该以一种批判的角度来看待和消化, 因为任何人的思考和观点都可能是局限的.

项目开源是一件非常崇高且有意思的事情. 这是我曾经一直持有的看法. 国外的开源大佬TJ等人, 国内的汤姆大叔等, 一直是我的技术偶像.

深度思考: 如何做好一个开源项目?

深度思考: 如何做好一个开源项目?

他们和我的唯一共同点就是不及格的发量, 这让我找到了些许安慰.

阅读这些大佬们优秀的开源项目让我成长很多, 也学到了真正有价值的开源项目该如何去做.

但是最近2年, 我在看github的trend的时候, 不免有点尴尬, 同时夹杂着些许的力不从心. 当我看到大量国内割韭菜式的开源项目之后, 不禁在草稿纸上写了一句:

深度思考: 如何做好一个开源项目?

好了, 不吐槽了, 接下来总结一下我对优秀开源项目的一些感悟.

从项目自生结构的角度

项目目录结构清晰

文件/文件夹命名规范, 可读性强

清晰完整的readme介绍

  • 简洁的项目描述
  • 项目版本信息, 辨识度高的logo
  • 项目应用场景介绍, demo案例
  • api使用文档
  • 清晰的todo和undo清单
  • 贡献指引和相关生态

规范而详细的package.json文件(或者项目描述文件)

从项目实用性角度

  • 解决了当下开发环境的某一痛点(比如模块化解决方案amd,cmd等)
  • 能快速提高开发效率(提效工具, 工具/类库等)
  • 能很好的解决某一框架遇到的瓶颈(比如vue/react之于jquery)
  • 能很好的降低使用某一框架开发项目的难度(比如vue/react/jq等的插件)
  • 能很好的解决企业通用业务需求(比如antd-pro, egg, H5-Dooring)
  • 能让程序员快速理解开源项目的开源(比如翻译类文档, 技术思考性稳定, 能快速磨平认知差异)

当然还有一些方向可以去思考, 比如底层技术方案(操作系统, 基础语言等), 离我太远, 暂时搁置.

国内开源项目/社区的不良风向, 是如何加速招聘的“内卷”?

深度思考: 如何做好一个开源项目?

内卷: 本意是一类文化模式达到了某种最终的形态以后,既没有办法稳定下来,也没有办法转变为新的形态,而只能不断地在内部变得更加复杂的现象。

最近两年大家有没有发现, 各大技术社区内充斥着大量求职面试相关的文章, 层次不齐, 千篇多少有点一“绿”. 想认真看看技术文章, 还得花时间往下多翻几次, 因为顶部推荐基本被面试文, 进大厂文霸占了.

虽然求职找工作需要准备, 但是我个人觉得没必要过渡准备, 否则必然会遭遇我们最熟悉的名场面: "卷王面试官" 和“卷心菜求职者”的相爱相杀.

深度思考: 如何做好一个开源项目?

这里我来给大家伙分析一下为什么过度释放面经导致越来越卷的原因.

面试官想: 出什么面试题呢, 社区上这么多面经, 想必大家一定有所准备, 那就来点刚的(有难度的).

求职者想: 最近看各种面经, 不管是大厂小厂, 面试题都这么难, 我要多刷几道题.

深度思考: 如何做好一个开源项目?

好的, 还没完, 接下来就是 github上的1000+笔/面试题, 刷去吧, 刷完了你没进大厂, 不是题的原因, 是你的原因.

好家伙, 被这样的环境培养出来的程序员, 未来对技术能有多大的想象空间呢? 这里不经让我想到我另一位偶像的经典名言:

想象力比知识更重要. —— Albert Einstein

同时想到一位想象力触及火星的国外老铁:

深度思考: 如何做好一个开源项目?

所以说这一节我主要想表达三个观点:

  • 被刷题榨干的求职者未来会对技术还产生多大的长远兴趣?
  • 国内开源环境充斥着大同小异的面试题, 国内个人开源项目未来还会有多大的想象空间? 难道国内有价值的开源真的是有大公司才能玩的起?
  • 没有持续的兴趣和想象力, 永远做不出好的有价值的开源项目.

这里当然不是不鼓励这些, 意在不要过渡重视刷题, 其实偶尔做做有价值的开源项目, 也会为面试加分. 毕竟在近3年的求职面试中, 我是从来没有为面试做过任何准备的.

做开源项目能带给我们什么?

在上面几小节的观点中, 各位提炼有价值的观点即可. 我们接下来进入今天的正题.

做开源项目能带给我什么呢? 这也许是大部分想做开源项目的人的一个疑问. 大部分人也会走入一定的误区, 虽然这个问题很简单, 但是简单的问题往往更复杂.

首先一部分人会觉得, 开源项目可以给自己积累项目经验, 简历上加分, 巩固自己的知识体系, 积累人气等等. 我之前也是怎么认为的. 但是这种开源思维只适合初级开源, 一般的结果是: 虽然开源项目让自己加深了对技术的熟练度, 简历上也可以写写了, 但是随着时间流逝, 最终会被遗忘.

所以现在的我, 在思考这个问题前, 一定会先问自己几个问题:

  • 我做这个开源是为了解决什么问题?
  • 目前已有的解决方案有哪些?
  • 我怎么做, 才能做的比已有的方案更好?
  • 我如何才能让我的项目持续发展下去, 而不是过眼云烟?

在解答了以上4个问题之后, 我们做开源项目会更有目标和框架感, 也更能明确自己能得到什么:

  • 独一无二的解决方案
  • 对该领域有更深度的研究和了解
  • 对未来职业发展更有谈资
  • 收获了更多技术方案和开源小伙伴
  • 通过项目价值体现个人价值和某一领域影响力
  • 收获money, 流量, 企业offer

所以我们不要过度的追求结果, 我们在做有价值的开源项目的过程中, 自然会让自己变得更有价值. 从做H5-Dooring这个项目之前, 我就已经充分回答了自己提的上述4个问题, 所以项目最终的结果, 大家也有目共睹. 在我做完H5-Dooring第一版之后, 为了解决第四个问题, 我就筛选了几个志同道合的朋友, 和我一起迭代, 让项目按照提前规划持续推进下去.

深度思考: 如何做好一个开源项目?

从零到一, 如何打造一个高执行力,快速迭代的开源项目?

就以我自己实际经历作为佐证, 来谈谈开源项目的打磨过程.

深度思考: 如何做好一个开源项目?

不要问我这个流程为什么像个“心”形, 我只是想表达开源作者们10个有7个都是为“爱”发电. (所以默默为这些优秀的人