“我的一剂良药”之开源指北

文章较长,适合闲来无事时阅读。

开篇

开源指北是 Gitee 开源社区送给所有开源人的一份保姆级开源百科,它的出现让开源相关知识不再像“沧海遗珠”一样散落在瀚海苍茫,让初识开源者可以从容地面对开源之海的首次“起航”,让众多热衷开源的开源爱好者在这里畅谈其所想。

不得不说,开源指北项目的发起是一个非常有趣的想法,其秉持着“开源问题由开源来解决”的思想,吸引了众多开源爱好者参与到这项开源运动中来,我也是其中一员。这是我参与的第一个开源项目,在拟定标题时再三思忖,结合自身的亲身感受,最终定了这个标题。至于为什么说对我而言是“一剂良药”,在下文中我会作出解释。

相比“满满的正能量”,我更希望从平常视角坦诚相待,有喜悦,有悲伤,有勇往直前,有踟蹰迷茫。不管读到这篇文章的你正拥有着哪种情绪,都能从这些稀松平常的小事中有所得,然后继续努力前行,成为更好的自己。

接下来,分享一段普普通通、简简单单的故事。

源起

“青山若无素,偃蹇不相亲。要识庐山面,他年是故人。”

我叫西狩,有些朋友也会叫我老江,从事 Java 开发相关工作。

2020年是动荡的一年。从我的大脑里进行热词分析,浮现出来了很多“动荡”的词汇。比如:“疫情”、“大选”、“制裁”、“猝死”、“内卷”等等。我们深知处在一个贩卖焦虑的时代,但有时还是会不自觉地被这些外界的焦虑所影响,对于处在人生各种分岔路口的人们而言,受到的影响可能会更大。随着时间越走越快,看到很多新鲜的事物如雨后春笋般破土而出,陌生而又新奇。就像是面对琳琅满目的商品一样,一不小心便挑花了眼。这时我们可能会迷茫,但我们深知,自己需要去做些什么来面对它们。

我不确定每个人是否都有过这种迷茫的经历,但就我个人而言,迷茫期是经常的,也是正常的。生活是一座围城,选择了漂泊但又渴望稳定,选择了努力但又渴望闲适。“有的人想得多却做得少”,我不确定这句话是否符合自己,但我深知自己做得还远远不够。大家应该都听过这样一句话:“学习最好的时间是十年前,其次是现在”。所以,不要害怕迷茫,只要敢于面对迷茫并踏出下一步,那就是有意义的。

我不确定命运是否会眷顾内心和自己拧巴的人,但能够参与一项有意义的开源活动,我觉得自己是幸运的。一切的源头是从日常阅读公众号文章开始讲起,几个月前 张乘辉 老师的一篇推文《使用 Hexo + Gitee 快速搭建属于自己的博客》,文章内容很简单易懂,而后我开始考虑搭建自己的博客。在搭建过程中,我 Gitee 平台上无意间看到了开源指北的开源活动,怀着一颗好奇心的自己就这样与开源指北相遇了。说实话,虽然平时也会在 Github、Gitee 上转一转,但顶多都是走马观花似的了解,并没有参与到什么开源项目中。起初自己也是随便了解一下。在了解项目简介、阅读其中几篇文章后,感觉自己对一些内容有一定的认知和共鸣,而且内容还有很多缺失,于是便尝试提交了一次 PR。

故事讲到这里,我可能还并不会深陷其中。在提交后的第二天,官方小伙伴 tenngo 就合并了我的 PR。及时的正向反馈让我受到了很大的鼓舞,就像是可治百病的“一剂良药”,使我无处安放的心静了下来。于是便开始了我的第一次开源之旅。

指天说地

“一点浩然气,千里快哉风。”

在开源指北之前,其实网络上有很多开源知识的相关文章,但太过零散,不成体系,对于想要参与开源的人并不友好。开源指北最大的意义就是对开源知识的整合,它涵盖了大部分常见的入门知识,可以帮助很多想要参与开源而不知如何入手的小伙伴,所以,我想有必要分享一下在开源指北参与过程中的感受与收获。

在《降临》中,有句台词让我记忆深刻:“If you immerse yourself into a foreign language, you can actually rewire your brain”。正如前文提到的迷茫期,最近一年的时间里发生了很多事情,思绪万千但却发现脚步却慢了下来。当我下意识提起自己的脚步时,却感觉似乎前方全是岔路,就在这时,开源指北出现了。在参与过程中,无论是查阅资料,还是编写文章,又或是提交 PR,都能感受到开源带给自己的活力。仔细想想,当自己毕业时,不愿在一眼望到头的生活里度过一生,那么自己对未来的迷茫和担忧就可以很好地接收了,因为这就是自己想要的生活。人生在世,不如意事常八九,大多数人都并非是一帆风顺的。与其每日杞人忧天,不如沉下心来倾听内心的想法,然后坚定地踏出接下来的每一步。

在开始分享开源过程中的感悟前,先谈及了心态,是因为自己深知心态对我的重要性。在自己心静下来后,做事情的效率会有明显的提高,并且在交流、沟通以及决策上都可以更加清醒。接下来,便带着这份心态聊到哪算哪喽!

开源与我的本职专业有着密切的联系,虽然是第一次参与开源,但自己对开源并不算陌生。曾经怀着激动的心情参加的每次 Pivotal 技术峰会、各种技术的 Meetup 以及各位大佬的技术分享,在这一刻似乎派上了一定的用场。这也说明了平日积累的重要性,碎片化学习虽然并不能建立起心中的一套完整的框架体系,但对自己的影响是潜移默化的。我会对每个章节进行阅读,文章结构不顺就梳理结构,上下文衔接问题就修改上下文,明显出现内容缺失就通过查阅资料再加上自己的理解进行补充。后面又进行了反复的阅读,以及关注小伙伴们提交的 PR。我们会为项目中提及的“半开源”的概念展开探讨,会对开源知识互相交流以至于忘记时间,诸如 arch、CLA、中国第一个被 OSI 认可的协议等等。我们也会因为项目中的不足而争辩,而且可能最终谁也说服不了谁,大家的思想是平等的,没有对错,而最终的结论也是有趣而一致的。那么这个结论是什么呢?其实很简单,各自提交 PR 就好了。求同存异是开源社区的不二法则,我不认可你的观点,但我尊重你表达思想的权利。

因工作需要,我在 2017 年加入了 Kettle 技术交流群,经过学习掌握了它,但由于后续没有机会再使用,我对 Kettle 的熟练程度大幅度下降,更不要说现在最新的开源版本。同样的原因,我在 2019 年初加入了 Skywalking 交流群,基本属于一个“潜水者”,只是经常会查看技术交流的消息。其他社群我就不一一列举了,我之所以提到这两段经历,是想反思一下自己:为什么曾经有那么多优秀的开源项目摆在自己面前,到现在自己还是一个开源小白?我感觉有两个重要的事情自己没有做得很好:坚持和思维模式

  • 参与开源不是一蹴而就的事情,我们需要花费大量的时间来将其打造成为一个更好的东西。我因为不再使用而放弃对 Kettle 的关注,所以它自然而然就离我远去了。其实大多数人都并非天才,能成为一个项目中优秀开源者的主要原因就是坚持。
  • 我学习 Kettle 只想使用它来解决问题,但从未想过自己还可以改变它。如果保持这样的思维模式继续下去,那么坚持的意义就是十分有限的了,因为我只是一个熟练工,可能永远都无法突破成为建筑师。一个目标是否能够可达,有时候需要的只是一个思维的转变。

最近看了吴晟老师在开放原子基金会 2020 年技术峰会上发表的演讲——开源运营治理分论坛 - Educate Community Over Support Community。演讲中很清晰地为大家讲解了我们在开源中应该关注的重点,解释了社区各种角色的职责,也谈及了对社区发展和社区生态的看法。当然,其中让人受益匪浅的内容还有很多,而且没有太多难理解的技术,更多的是对开源经验的分享,感兴趣的小伙伴可以了解一下。这也是我的一个小建议:多去与他人交谈,倾听他人的想法,我们需要在思想碰撞的过程中不断刺激自己进行思维升级。

再分享一则个人觉得有趣的事情,每个开源项目都有自己的排版规则,在参与开源指北过程中,我在一个关于排版的开源项目中发现了一个有趣的协议:WTFPL。参考知乎问答“什么是 WTFPL(Do What the Fuck You Want to Public License),为什么会有人使用这一授权许可?”中的描述来了解一下:

由于程序拥有所有权,所以每段代码允许大家在何种程度上自然使用就成为了一个严肃的法律问题,所以就诞生了licence这个概念。其中有一些代码是写出来让大家随意免费使用的,所以licence就要规定你可以干一切事情。可是在法律里,“允许你干任何事情”这句话并不严谨,所以随着不断的诉讼、打官司、法学家的诠释,诞生了诸如 @IAMSK 所说的一大堆授权协议。 但是问题来了。 这个协议是给程序员看的,却是由法学家和律师写的。 于是随着时间的推移,这些协议变得unreadable,也就是程序员根本不可能看懂。

而这些协议还会越来越长,随着欧美法律不断地被新的判例充实。。。。

于是一些程序员为了反抗这一恶性循环,发明了WTFPL。

简而言之,就是:“你TM爱干啥干啥”

有趣的点在于,我仿佛能脑补出当时程序员看到冗长的法律条文和专业名词的时候抓狂的面部表情,是个很有意思的小故事。

最后要说一下,个人认为,开源指北项目参与门槛并不高,虽然在内容上会尽力做到精益求精,但它的受众是每一个开源人,大家都可以在这里各抒己见。这个项目的维护也会一直开放,也希望能够在以后听到更多开源故事和开源声音。毕竟开源这件事儿,一起热闹起来才好玩嘛!

北窗之友

“今日北窗下,自问何所为,欣然得三友,三友者为谁?琴罢辄举酒,酒罢辄吟诗。”

如果说有人问:“一次开源经历中,最重要的是什么事情?是最后的结果么?”我想可能不是。当我们去做任何一件事情的时候,都无法预料到下一秒会发生什么,更不会预料到最后的结果会是什么样子,所以结论并不适合放在开源经历的第一位。正所谓兴趣是最好的老师,与其猜测未知的结果,不如遵从本心去体会在开源中遇到的所有感受。因此,一次成功的硕果固然可喜,但更重要的是享受过程。

我们可以对于开源项目的任何事情畅所欲言,可以发表自己对开源项目的理解,可以讨论目前存在的问题,还可以从交流中了解到更加广阔的开源世界。当然,开源社区不会是只有一种声音,我们可以有不同的观点,可以有分歧和争辩,还可以享受每一次思想的碰撞。除了必要的社区准则以外,我们的文字、代码以及思想都是无比自由的,或许这就是开源精神带给我的一种体验。

既然谈到了开源精神,那么一群志同道合的秉承开源精神的小伙伴自然是必不可少的。在此,要感谢在开源指北项目中帮助和鼓励过我的小伙伴们:

  • 感谢 jack960330 对我编写修订过程中给予的专业指点,也感谢耐心的讲解和对我的认可,钦佩你的专业态度。

  • 感谢 taotieren 的中文排版指北项目,在了解一种排版规范的同时,还发现其使用的 WTFPL 开源协议——一个有趣的协议以及背后有趣的小故事。

  • 感谢众多的开源小伙伴,我们一起沟通探讨了很多开源小知识,也通过他们了解到了很多开源项目,一起奋战的日子会是一段非常美好的回忆!

  • 感谢 Gitee 小助手带我加入开源小队,还给我邮递了那么多奖品,我会继续努力的。不辜负每一次参与!

  • 感谢与开源指北的不期而遇,这是我这个冬季里最温暖的“小太阳”。

“琴罢辄举酒,酒罢辄吟诗”,这是我理想中的开源世界。所谓“琴”、“酒”、“诗”,是代指令自己感到美好的事物——是得到认可的喜悦,是有所收获的满足,是感受到如鱼得水般的自由。我觉得开源指北就是这样的,希望它在未来成长的路上,依旧如此自由!也希望参与开源的你——Forever to be free !