【开源故事集】00后与开源结缘的十年
| 作者:李登淳
| 编辑:钱奕
| 设计:杨敏
| 责编:王玥敏
经过了简单的了解,大家是不是会觉得很迷惑:
为什么一个22岁的大学生会能与开源结缘十年呢?
缘起开源
有些熟悉我的朋友知道,我算是出身于一个“程序员世家”,父亲在中专时所学专业就是计算机,算得上是新中国最早的一批程序员了。因此,我早在十一二岁的时候就在父亲的带领下走进了计算机的世界。最初我并不懂得什么是开源,更不知道 GitHub、freeCodeCamp 这种开源社区,只知道自己初学程序,代码写的不好,发出来让论坛上的大家一起讨论、进步。是的,我最初的开源是在百度贴吧中,以压缩包的方式分发代码。
奔赴开源
后来直到2015年左右,在朋友的介绍下才逐渐开始使用 GitHub,知道了什么是版本控制、什么是开源协议、什么是贡献等等。我也是在那个时候逐渐在 C++ 领域有了一些进步,开始做一些简单的项目,并将代码托管至 GitHub 上。这个时候的开源对我来说,除了能让大家共同进步之外,也是展示自己实力的一种方式,毕竟对于一个十五岁的少年来说,获得他人的认可是非常开心的事情。
但到了高中之后,一切因素聚集在一起,我对开源的理解、开源与我的故事又发生了巨大的变化。进入高中之后,我做的第一件事就是创建了一个计算机协会。那时的初衷是,自己学程序太不容易了,想把编程的快乐、学习的经验、走过的弯路分享给更多的人。于是,除持续在社区中贡献外,我渐渐成为了一位开源布道者、社区组织者。实际上,这是一段非常美好的记忆,我在这个过程中除了让自己能力进一步加强(毕竟需要讲课嘛),还结识了很多好友(我们毕业四年了,还偶尔会聚在一起侃大山)。最重要的是,这三年里,我和我的社团在无数个不知未来如何的少男少女心里种下了宝贵的种子:他们有的会高中开始准备信息学竞赛、有的会在高考时报考计算机专业、有的会以其他各种各样的方式发扬开源的精神…等等。这让我第一次触到了开源的真谛:
所有人都从中受益。
图为高中社团唯一一次团建
遇见开源
而真正让我参与到社区的活动中,是到了大学之后,我遇到了水歌,这位我的学长、前辈、同乡。在他的帮助下,我从2019年开始逐渐参与到社区活动中来,慢慢混成脸熟了。
与之同时,在大学的校园里,我延续了高中时的做法,继续创建了一个新的协会,也就是四川大学智锐科创计算机协会。协会的发展也得到了校方的支持:我所在的吴玉章荣誉学院帮我们宣传,我的导师段磊教授除为我们提供了很多发展的建议,更是从21年开始逐渐给了我们一些机会去做一些项目帮助学校建设智慧教学等。这也让我的编程语言,也就是 CovScript,有了宝贵的实践机遇。总的来说,我逐渐有了自己的想法和理念,带领社区走出了自己的路子,也让更多人从我们的开源得到了实实在在的好处。
目前来说,我们社区已经实现了在非疫情的情况下实现每周约200-400人次参与活动以及稳定20余位核心贡献者。在未来几年中我们将依旧坚持把开源精神作为核心行动指南、以高等院校为基石开展各类公益活动、与社区企业合作探索未来发展空间,也将继续推动我们社区向外发展,希望在2025年前将智锐科创建立为具有区域影响力的、以高校学生为主体的开源社区。
开源于我的启发
社区之外,我个人也是一位活跃的开源贡献者。在2017年,也就是高二的时候,自行设计了一门编程语言:CovScript。说到这里很多朋友就要问了,为什么会想到自己开发一门编程语言呢?其实是有两方面原因。
首先,我是一个技术极客,喜欢捯饬各种有挑战性的玩意儿;
其次,在当年那个时候,我们社团缺乏一门足够好用的教学/语言。
总而言之,在各种因素的助推下,我最终下定决心开发这门编程语言。过程中自然是会遇到很多问题了,最主要也是最难解决的两个问题也很明显:生态和性能。
第一个问题解决起来相对简单,我首先是设计了特有的CNI系统,能使CovScript快速引入现有的C/C++库,从而很大程度的改善了CovScript无库可用的窘境;其次我为CovScript编写了大多数常用的工具链组件,包括调试器、包管理器、编辑器插件等等。这两者结合,基本上实现了“麻雀虽小、五脏俱全”,使CovScript应对不太复杂的应用场景中都能得心应手。
第二个问题解决起来非常困难,经过几个版本的迭代,CovScript已经做到与Python相当的性能,但距离JS这种怪物还要差得远。做不到很优秀的性能主要问题是CovScript坚持自建生态,又没有能够比肩Google的研发实力,自然做不到顶尖的性能。坚持自建生态刚开始是我个人为了挑战自己、学习更多技术,但后面坚持下来也是因为生态已经逐渐形成,还能满足一部分用户对完全自主可控的需求。
事实上,问题的解决除了多阅读文献,更多的其实是思考和借鉴。CovScript最初设计时参考了包括Basic在内的多种编程语言,但渐渐的在发展中摸出了自己的路子。这门编程语言发展至今已有五年、四个大版本,目前稳定的发行版为v3.3。我们第四版之所以会拖这么久,主要原因是完全重新设计导致工作量过大、具有足够技术实力的人力资源严重不足,目前还在进一步完善编译器的过程中。
非常值得我骄傲的是,我个人设计、编写、维护的3.3版本到目前为止已经出色的证明了其生产力和稳定性,在包括服务器后端、数据处理、工具软件、图形应用程序等多个领域发光发热。事实上,CovScript 目前生态中许多组件都是使用 CovScript 自身编写而成(Library、Package Manager、Build System 等),甚至第四版编译器所使用的编译器生成器(Epoch Compiler Generator)都是使用 CovScript 3 编写的,目前第四版语言本身也是编译到 CovScript 3 再运行(VM 已经咕了很久了)。
除了我个人的努力外,CovScript的发展离不开社区的支持,比如CovScript在VSCode和Intellj上的插件是社区贡献的、对 Linux 和 Windows 较为完善的支持最初是由社区的朋友帮忙完善的以及CovScript很多库引用了第三方的优质资源。但开源除了好处之外,由于大环境的影响,做开源也是一件不容易的事情。最大的困扰莫过于开源协议不被国内法律所承认,自然就很难追究侵权者的责任。这种担忧直到我为CovScript申请了中华人民共和国软件著作权,才算是消解了。
展望开源
这就是我与开源的十年。回望过去,这是一段充满了干劲的时光,也是一段幸福的时光。虽然已经取得了一些小的成果,但仰望开源界的前辈们,各个都是成就斐然,我还有很长的路去追赶。希望在下一个十年的时候,还能与大家相遇,一起分享十年里和开源社区的故事。
相关阅读 | Related Reading