2023-09-06 1163
开源故事,讲述开源人自己的故事。
这是 Linux Foundation 开源软件学园推出的一档访谈栏目,重点分享开源从业者的过往趣事、成长经历,心得体会与开源感悟等一切与开源成长有关的故事。
本期的故事主人公是 Linux Foundation 开源软件学园人才激励计划获得者李鹤鹏。
他是一位喜欢用博客记录学习和生活的在校研究生,有想法,有逻辑,心思细腻,乐于分享。
1、首先请做个简单的自我介绍。
大家好,我是李鹤鹏,常用昵称是“爱飞的鸟”,现在正在杭州读研二。喜欢写博客,技术内容偏多,也会分享些生活感悟,地址:https://blog.aflybird.cn/ 。
2、作为学生,目前学习的技术领域是什么,并简单谈谈您对该技术领域的看法和期许吧。
研一时,主要是后端(Go语言);研一暑假接触了DevOps,然后对云原生产生了极大的兴趣。
①从发展阶段来说,云原生是一个处在快速发展、上升期的一个庞大的技术领域。许多新兴的公司的产品都完成基于云原生,无数的人持续贡献、发展壮大生态。所以前景无法估量。
②从经济效益来说,基于云原生的一些技术,可以提高整体的资源的利用率,从而提高经济效应。比如对于云厂商,基于云技术建立起巨大的计算资源池,下游的消费者(中小厂商、个人)可以按需调用。而不是每个人都搭一套重复的体系,既浪费了人力资源,也浪费了服务器资源。
③从技术角度来说,容器技术使得部署、拓展更加简单、高效且稳定。这进一步推动了微服务的发展;同时云原生领域,Kubernetes独领风骚,一定程度上也推动了技术的标准化,使得技术产品、工具更容易复用、联动。
3、有哪些比较喜欢的开源项目吗,可以简单聊一聊是如何接触到这些开源项目的,又是如何从这些开源项目当中学习和进步的吗?
喜欢的开源项目(格式 org/repo):kubernetes/kubernetes, labring/laf , samber/lo 等。
如何接触到这些开源项目:接触到开源项目的途径有很多,
①像Kubernetes这种,属于明星级别的开源项目,自然不必多说;
②像labring/laf这种,是一些国内以开源作为商业模式的项目,先知道产品,再去看源码;
③像samber/lo这种,主要靠身边的朋友互相推荐,或者说GitHub Activity里会显示follow的人最近又star了哪些项目。这种项目大部分是一些好用的三方库,还有一些是开源工具。
如何从这些开源项目当中学习和进步:每种开源项目,能学习的内容,以及参与的程度,都不一样:
①Kubernetes级别的开源项目,已经非常成熟了,所以我们更多的是学习其中的设计理念、编程模式等等。比如K8s的informer设计,visitor模式,还有interface的设计。比较好玩的一件事是,我之前觉得GitHub CLI的项目结构非常优秀,甚至在自己最近的CLI项目中运用其思想并致谢,最近发现,它也是深受kubectl的影响。
②以labring/laf为代表的商业开源项目。它是一个开源的云开发平台,可以理解为NodeJS runtime的serverless + Mongo集成 + 存储(静态网站托管)。我在其中,学到了一些技术与产品的结合。比如,laf采用应用常驻式的方案,相比于传统的serverless“来一个请求就启动一个容器”的方式,似乎看起来非常不优雅,而且更贵。但深入交流后,才意识到,常驻式的方案,从根源避免了冷启动等问题,当流量足够大时,会因为少了额外的容器调度、启动等步骤导致又快又省。也不会导致难以支持长连接等技术问题,对于用户来说体验很好。
③samber/lo, regun/go-streams。以这些为代表的第三方库,一般是我在实际开发中去用到他们。然后就会不自主地对源码产生好奇,而且一般代码量都不大,所以能全部看完。比如go-streams让我对Go的channel有了更深入的理解。同时我也会尝试去做一些贡献,如果PR被合入更好,如果不能的话,思考本身也是对自己的锻炼。
总的来说,参与开源带来的更多是精神方面的成长、冲击。开源并不是免费提供代码,它的精神在于协作、共享。所以这也逐渐让我乐于分享,把合作共赢的理念深深地烙在心里。
4、您有过在GitHub/Gitee创建或参与开源项目的经历吗?在维护自己的开源项目的过程中有遇到什么困难和瓶颈吗?
有过哈哈哈。我第一次有那种“自己创建了开源项目”的感觉,是我在研一的时候,收到一封邮件,询问我GitHub托管的毕业设计的代码的细节。当时我有了一种强烈的“被需要”的感觉——原来GitHub的代码真的是有人会看的!但那次并不是真正的开源,开源不是把代码放上去就好了,而是要有去维护、去让别人能够加入进来。
后来也作为Member深度参与一些开源项目的维护。困难主要分为两方面:
①技术上,需要去review别人的代码哈哈哈。不过这其实更是一种机遇,能从别人的代码中学到更多,或者说你需要去考虑别人的代码有没有什么漏洞,检查别人的代码远比自己的代码难。
②运营上,社区成员的激励、去留问题。开源更多是为爱发电,所以人员变动频繁。我们也采取了一些措施,比如对于新人有非常耐心的引导,以及发放一些证书甚至小礼品来激励,也会开例会和社会小伙伴交流。
5、有喜欢的开源社区吗?你认为一个优秀的开源社区是什么样的,有哪些必不可少的要素?
其实许多开源社区应该做得都不错,我接触比较久的,我觉得氛围还不错的国内的社区,是 Apache ShenYu ,它是一个没有商业公司主导的从Apache毕业的开源项目。我觉得这个社区在国内这块的氛围还不错,微信的Contributor群非常活跃,无论是技术问题,还是家常,大家都能唠得下去。陆续有新的Contributor加入,也有人晋升为Commiter/PMC,人员流动非常健康。可持续性很重要。
优秀的开源社区,需要具备的条件/要素:
①开放、共享、活跃。把近期的活动、路线图、开发任务都尽可能公开,以及召开社区例会。
②对新人友好。无论是文档中对新人的贡献流程、项目技术的引导,还是对新人的鼓励等等。
③稳定性。由社区领导,或者由多个商业公司领导,防止只由一个商业公司领导。
6、有参加过线上线下的开源活动吗?有什么印象深刻的活动可以分享一下?
我参加的主要是杭州的一些小meetup。比如OSPP的2023线下活动,小礼品、场地(座位、指引)、茶歇都做得很不错。同时还安排了闪电演讲,愿意分享的人都可以上台,我觉得这非常 "Open Source"。
7、周围有同学参与开源吗?你们是怎么开始参与开源的?
周围有不少同学都在参与开源。我深入参与开源,源于,先从朋友口中得知GSoC(谷歌编程之夏)、OSPP(中科院开源之夏)、GitLink(CCF开源夏令营)等开源活动。这些活动大部分都仅限学生参与(除GSoC),会有许多知名社区提供一些相对独立、完整的子任务,学生写申请书申请项目。申请成功,大概会有3个月左右的时间开发,以及一对一导师提供指导,同时平台还会提供资金奖励。
相对直接参与开源来说,知名项目的Issue比较难抢。如果能成功申请下一个开源活动,就能拥有稳定可靠、大小适中、上下文完整的一个任务去做,同时也能通过导师,更好地与社区交流、协作。我们大概两三个学生尝到了开源活动的“甜头”后,就极力推荐身边的同学一起,于是乎大家都开始参与了。当我们参与了一次开源活动后,对开源的协作方式有了不少的了解,胆子也就逐渐大了起来,这时候也就敢于去参与更多的、更大的、更有挑战性的开源项目了。
8、参加过哪些比赛/竞赛?分享一下参加比赛的经验吧。
我主要是本科阶段参与过浙江省的新苗计划、小挑、大挑等。研究生阶段,主要转去做项目了。不过我推荐大家去参加一些 Hackthon 一类的比赛。对于计算机学生来说,比赛主要分为两种,一种是技术类,一种是非技术类。
①技术类其实没太多经验可以分享,靠平时的积累,以及合作类的比赛需要靠谱的伙伴。
②非技术类的,我参加过一些,不少学生会觉得这是PPT大赛,浪费时间。但时隔一两年,我意识到,计算机学生也可以去尝试参加一些商业性的比赛,最好是以负责人的身份。这样我们可以学到文档撰写、团队建设管理,还有产品思维等等。从长远来看,是非常有益的。
9、看到你一直在坚持写博客,这个习惯因何而起,给你带来了什么帮助?
其实是因为我可能比较“话唠”哈哈哈,以及我很喜欢“带新人”。然后我会发现,每次教人的时候,除了能得到很高的成就感,也能让我自己的技术水平得到巩固。然后,就渐渐地把这些我对新人编程的建议,以及一些技术原理,更多的是对技术设计层面的思考,一一记录下来。然后形成了正反馈,越写越多,越来越停不下来。给我带来了非常大的帮助,最重要的还是正反馈,以及“输出”这个习惯本身。我可以通过输出去检视自己,去保持思考。
然后是,写博客其实是挺难的一件事情,你不能自说自话,得让人看得下去、看懂。
所以在写博客的过程中,需要不断地去练就表达能力、抽象能力。比如,你想写一篇解决了什么技术难题的博客。
①你需要在文章的开头,你要把技术背景描述清楚;
②然后是逻辑性、层级性,去思考如何递进技术实现方案;
③对于复杂的地方,可能还要画图;
④还有练就“打比方”的能力,如何把抽象、复杂的事情讲得通俗易懂;
⑤思考、延伸。这也是我写博客最感兴趣的地方,如何通过论述一个技术产品、方案,传达出最本质的技术思考,使得当这个技术过时的时候,你的文章仍能对读者有所启发。
总的来说,写博客,无论是对锻炼技术表达力,还是对技术的深入思考,都很有益处。当然,博客还是个人的展示板,可以作为面试时的有力补充。
10、看到你写了很多读书感想,除了计算机专业书籍外,可以给大家推荐几本书吗?
我推荐两本修心的书,成为一个内心强大、稳定的人,才能活得更开心、走得更远。《被讨厌的勇气》,这是一本神书哈哈哈。我必须要先吹一下它的效用,是它把我从两年多前的低谷(甚至说是绝望)中带出来,甚至修复了我的一些性格“缺陷”(比如人际交往)。
这里面有很多值得反复琢磨并实践的观点,比如:
①目的论:让人们从自我的否定、痛苦中走出来。它认为弗洛伊德的精神分析方法,只会让我们分析造成痛苦的原因,而不去改变。我们必须自己下定决定,决定去改变,这就是“目的论”。举个例子,如果感冒了(类比于痛苦),医生只分析你为什么感冒(原因论),不告诉你如何治病(改变、目的论),你一定会觉得很荒诞。
②课题分离:对走出人际关系的烦恼很有帮助。它能让你不过度在意别人的看法;分清哪些是自己的事,哪些是别人的事,不因别人的要求而自责,也不会因为别人达不到自己的期望而痛苦。
③共同体感觉:不太记得书中原义了。经过两年的感悟实践,我将其总结为避免下意识的无意义竞争感,始终保持开放的心态,追求共赢;以及在帮助他人的过程中,实现自身的价值感需求。
还有一本是我最近刚开始看的《当下的力量》,看了两章,但足以使我推荐给大家。当下的社会节奏是极其快的,所以非常容易引发焦躁、对未来的不安。这本书能让读者专注当下,获得心灵的宁静。它并不是想象中的鸡汤文,而是饱含可高度实践性的哲理,例如自我觉察、本我、元认知等等。
11、马上就要毕业走出校门了,方便向大家分享你对未来的规划吗?参与开源的经历给你的职业发展带来了帮助吗?
未来的规划。想去做云原生技术或与后端结合的一些工作;工作之余多参与云原生领域开源(无论是代码本身还是布道),以及积极探索各类新技术;同时尝试去做一些小而美的服务开发者的技术工具,或者面向大众的产品。
开源对于职业发展的好处太多了。编程能力提升方面当然是最大的,就不详细展开了。我讲一些有趣的吧哈哈哈。开源的一大精神是公开,我受其影响,大部分自己的项目都是照着开源的标准去做,无论是代码风格还是发版这些流程性的东西。这带来了一个极大的好处,我的编程经历更容易展示与量化,甚至能直接去阅读代码,而不是只能在面试的时候通过只言片语来描述(也不会因为保密协议导致需要花费额外的精力隐藏太多细节哈哈哈)。也有创业公司,在看到了我的GitHub与博客后,主动发来工作邀请。
12、开源需要有更多的人传播、参与、协作、进步,未来你会怎么参与开源(写文章、参加活动、贡献代码、布道......)?
①贡献代码:最近因为临近毕业,所以更多的零星地随手对用到的一些库做一些微小的贡献。我熟悉的语言会提交一些源码相关的优化;不熟悉的语言会帮忙优化一些CI,以及通过提Issue来提出改进建议、报告Bug等。毕业后,希望能在工作之余,持久地多参与几个云原生领域的开源项目。
②布道:一方面是宣传开源精神本身;一方面,引导大学生,让他们敢于参与开源。
③写文章:主要有两种,一种是布道的,一种是引导新人的一些文章,包含但不限于协作技巧、特定社区的技术贡献指南等等。
本年的LF开源软件学园人才激励计划共有以下8个类别,开源萌新 是LFOSSA人才激励计划8个类别之一,指从高一到研究生,对开源感兴趣的任何专业的学生和未参与或很少参与开源项目,刚入职场或转换行业的人。在前三届活动中,有一些优秀的开源萌新获奖者,他们虽然初始开源,但热爱开源,并期望在开源学习中得到技能的提升。
无论你的年龄,行业背景,技术程度,只要对技术有兴趣,有热诚,有渴望就有机会入选。入选者可以在Linux基金会开源软件学园中任意选择一门课程学习,并免费参加一次Linux基金会提供的任何认证考试,学习和考试费用由Linux基金会开源软件学园承担。优秀的申请者还会获得Linux基金会开源软件学园颁发的奖项。申请截至日期为2023年10月31日。
请注意:申请表是入选本计划的唯一准则,所以不要吝啬您的开源的热情,真诚填写表单,增加获奖可能。
2023年的故事,等着你来报名。
立即点击 阅读原文 申请 Linux 基金会开源软件学园人才激励计划!
Linux基金会开源软件学园 Copyright © 2019-2024 linuxfoundation.cn, ICP license, no. 京ICP备17074266号-2