作者:尼酱
来源:码客人生
「 GitHub上许多大型开源项目的核心维护者其实只有一两人,这些维护者可能是微软、Facebook这样顶尖科技公司的员工,技术高超的自由职业者,名校的计算机精英,或者,一个高中生。这些人虽然来自不同国家、有着不同身份,但他们身上都闪烁着同样的光芒:因技术而相聚,为技术去奉献,在技术中快乐。如一滴水流入大海中,许多人找到了自我的意义。」▋ 一个世界大型开源项目的孕育与诞生
GitHub上热门的静态网站生成器软件Docusaurus目前的核心维护者是一个三十多岁的法国人,名叫Sébastien Lorber。他加入Docusaurus开源时,项目已经进入2.0阶段,从一堆Facebook内部使用的模版文件变成了一个开源工具,他从Facebook员工、新加坡学生等人手上接过这个项目,主责推进2.0 正式版的发行。
2020年的一天,他如同往常一样登上GitHub,编写自己的React周报,描述了一下最近的技术新动向,等待互动。作为React社区的核心成员,他的周报一直是人们阅读的信息来源。
然后,他注意到有人为Docusaurus提交了一个新文档修改请求,短短一行文字,十分不起眼,怯生生的跟在原段落后,甚至不敢另起一行。这段代码来自一个叫“Joshua Chen”的人。
法国人看了一下对方的主页基本空白,又仔细看了一下代码,做了一个批注反馈,“可以把修改的部分变成一个新的警示框,更加显眼一点”。对方采纳了建议,新代码最后合并进项目中。
不久,法国人注意到Joshua Chen正式提交了一个新改动,他为Docusaurus编写数学公式的文档,让这个框架与一些数学库建立了联系。慢慢的,Joshua Chen提交的代码修改越来越多,有时,是纠正博客代码里的时区bug,让人注意到原来还有在日期线另一边的人在关注这个项目。有时,是将网站的侧边栏折叠,为文档区域留出更多的空间。
法国人会与这个经常冒泡的贡献者探讨Docusaurus的新功能方向和框架的优化,Joshua Chen展现了不俗的技术功底,逐渐成为Docusaurus另一个主要维护者。
随着他和Joshua Chen的交集逐渐扩大,双方互相了解,法国人十分惊讶地发现,Joshua Chen竟然是一个十六七岁的少年,来自中国上海,是一名还没毕业的高中生,中文名字叫陈思达。
随着沟通深入,陈思达渐渐了解了Docusaurus项目的孕育过程。Docusaurus早期被Facebook员工Joel Marcey开源,他和其他几名活跃的Facebook员工做了大量工作,发布Docusaurus1.0版本,但此时它还只是一个网站模板库,无法实时将最新功能推送给用户,也只符合 Facebook 内部的开发需求。
随后,由一名新加坡南洋理工大学的学生牵头,一群Facebook员工和社区成员联合开始了2.0版本的研发,他们致力于将Docusaurus研发成真正的前端应用。在这名新加坡学生完成Docusaurus整体架构不久,他患上了白血病不幸去世。临终前,他依然坚持在病床上敲完最后的代码。
法国人就在这时接受了Facebook的邀请,签署合同接手了这一项目,同时,他在法国有自己的小工作室做技术咨询。他和Joshua Chen,再加上另一个俄罗斯人,名叫Alexey Pyltsyn,共同继续Docusaurus2.0版本的开源工作。
2021年,俄罗斯人因为俄乌战争和自己的反战游行等等生活变故,退出了开源工作。法国人和Joshua Chen继续努力,2022年,Docusaurus2.0历时三年终于发布。如今,Docusaurus已成为全世界最流行的静态网站生成器软件之一,在GitHub拥有超过50000 Star。
陈思达之所以成为Docusaurus的维护者,与他充满求知欲与乐于分享的属性紧密相关,他似乎有着一个技术天才的标准人生。
陈思达出生于上海,从小就读于全市前列的学校,父母都在世界顶尖的公司就职,良好的教育环境培养了他开阔的眼界和扎实的科研基础。
陈思达爱好广泛,喜欢研究各类理科。他喜欢数学,爱研究数学的通用算法。当其他人要画很多辅助线做几何题时,他习惯将问题化归为一个代数模型,追求解法的通用性与严谨性。
他喜欢化学,高中时获得了中科院的实习机会,在科研楼呆了一个暑假,培养大肠杆菌来做蛋白质的结构研究。不过最后,花费两个月的实验还是失败了,这让他意识到自然科学的科研周期太长,他更喜欢快反馈。
陈思达的初中学术竞赛氛围浓厚,要求严苛,这反而锻炼了他扎实的学科基础。他喜欢动脑,会抓住学科背后的规律与本质,所以当他触发编程的技能点时,这种思维令他上手特别快。
陈思达第一次接触代码是在初一的科创大赛,他自学了如何设计单片机电路并为其编写程序,开发了一个汽车智能大灯项目,并凭此拿下上海一等奖,但他认为那时看起来高大上的“人工智能”还只是一个简单的条件判断。
他正式系统地学习计算机科学是在初二的暑期夏校,学校教Java,但只教了书本1/3的内容,他用一周时间理清那1/3的内容后,又用夏校剩下的一个月的时间自学了其余2/3的内容,学会了写UI、数据结构等知识。
夏校结束后,陈思达还想找更多的资料来学习编程,他泡在知乎看大量代码相关的问题,又通过自己的 Java 技能,在LeetCode上做题,找阿里、字节的面试题来做,逐渐掌握了更多的算法知识。这一切于他而言并不困难——他认为,学习本质就是S型曲线,任何领域只要积累到一定程度,找到背后的规律本质,就可以吃得非常透。而专注打通底层逻辑正是许多大厂架构师的经验之谈。
高中时,陈思达成为学校信息化社的社长,接手了社团的网站维护工作,网站是往届学长用Docusaurus框架做的,他由此开始接触开源和前端。
在陈思达眼中,开源是一种先进高效的协作模式,他为项目提意见,活跃的社区讨论给予他非常及时的反馈,这充分调动了他的积极性。他喜欢将一个开源项目的代码熟悉到40%–50%后,找其中感兴趣的内容进行bug修复。
在Docusaurus的两三年,陈思达对当下流行的技术栈和工具的使用有了非常清晰的了解,他在开源社区的突出表现引来不少工作邀约,这些国外公司根本想不到他还是一个高中生。陈思达也认识了许多来自世界各地热爱技术的程序员,那些鲜活的技术人如同一道光辐射到他的身上。
除了开源,他将对前端的热爱也投放到学校社团中,他为社团网站搭建系统,积极组织信息社的算法竞赛,帮助新手社员熟悉前端开发环境。而信息社的另一位社长关注人工智能,陈思达借此机会,不仅学习了不少机器学习方向的知识,还引起了他对人工智能的向往。
陈思达的高中生活十分忙碌,他除了信息社的活动,还奔走于各类学术竞赛中,乐此不疲。他参加丘成桐奥赛,英国物理奥赛,美国化学奥赛USNCO......均取得成绩。在参加语言学竞赛时,陈思达又发现了破解语言规律的乐趣。即使是濒临灭绝的语言,通过逻辑推理照样可以推测出其中的主谓宾语,像解谜一样,从而复活一些人类失落的文明。而语言学的研究除了解救濒临灭绝的语种,另一方向偏计算机领域,是对自然语言底层结构处理,这正是大模型的研究方向,也是陈思达更感兴趣的地方。
2022年底,陈思达凭借优异的竞赛成绩和开源项目经历,顺利申请耶鲁大学的统计与数据科学专业。在耶鲁大学自由的学术氛围中,他踏上了研究大模型的新征程。
陈思达的耶鲁录取通知书
每一项新技术的出现,都意味无人之境的坎坷与荆棘。在陈思达的眼中,大模型无异于人类科技史上伟大一步,它已经是最像人的发明,但同时它也面临着巨大的考验。现在大模型的发展已经基本把人类能用的语料吃完了,但它在展现智能时只会说“漂亮话”,距离真正落地造福人类上依然有巨大的差距。
陈思达申请耶鲁的文书围绕的主题就是“自然科学的理想模型与现实差距间的思考”,他认为模型与现实永远存在差距,模型一方面要无限逼近现实,另一方面又要远离现实,因为现实永远是混乱的,没有规律的,而模型就是从现实中抽离出来最有规律、最漂亮的那部分。
虽然有人提出人工智能不必真的像人,人只需要利用AI的一些功能来进行人机协作就可以提升工作的效率。但陈思达认为不能放弃对于大模型的探索。汽车刚开始发明出来时,许多地方不能去,有些人可以选择把汽车抬过去,或者放弃汽车,用自己的双脚弥补,也有人会选择研究“更高级”的汽车。但在大模型的技术比拼中,和大公司与国家力量比,许多小公司小实验室是没有资源与能力与之匹敌的,而陈思达的目标,就在于通过改进大模型的算法基础,让所有人重新站在同一起跑线上。
陈思达想从两个方向实现大模型向人类认知的逼近,一个是自然语言,一个是统计模型。他认为现在的研究方向可以通过对婴儿的输入模式来训练大模型的学习能力。
陈思达也没有放弃开源,他还在维护Docusaurus,同时,他又成为了typescript-eslint(代码检查)和MDN docs(web 技术文档)的维护者。在耶鲁大学,他又成为风靡校园的选课平台的主维护者,为其开发了不少功能,并大大改进了历届成员留下的代码的质量。该平台如今月访问量超五百万次,受到所有学生和教授的欢迎。
陈思达一直希望自己可以成为一个“自由研究者”,自由探索那些未解之谜。为了突破一个问题,他可以忘记吃饭忘记睡觉,他的胃因此有些小毛病。他投入一件事时不想未来,也不考虑回报,研究的东西变得更好就是对他最大的回馈。未来,他希望为改善国内的技术生态贡献一份力量。
在陈思达的笔下,他曾写下一个与死神对话的男人,这个男人在25岁时试图自杀,但他舍不得自己脑海中的知识,他向死神祈求20年的寿命来整理出自己的奇思妙想。第二次死神来敲门时,他45岁,已经出了很多书,他又向死神祈求20年来实践自己的理论。第三次死神来敲门时,他65岁,他的工厂已经创造了许多东西,他又向死神祈求一点时间将生平的经历写下来留给后人。到了73岁死神索命的日子,这个一生充满求知欲的男人头也不抬,他忘记了死神,忘记了自己,全身心的探索着宇宙的奥秘。死神被感染,静静坐在他的旁边,天光既白,陪伴的只有笔尖的沙沙声……
在宏大宇宙中,我们终将难舍难分,如同水溶进水中。
陈思达,耶鲁大学的统计与数据科学专业大二学生,世界最流行的静态网站生成器软件之一Docusaurus的核心维护者。
采访实录
陈思达,您好,我是码客人生
幸会,我是陈思达。
程序员对自己热爱的项目就是这样的,像打游戏一样上瘾。所以,许多程序员也很喜欢打游戏。像一个文学博士很喜欢《红楼梦》,在b站做文学解析,我觉得这也是种开源。我很喜欢这种从无到有的创造过程,每次看到那些新功能跑起来就会很兴奋,它给了我很好的反馈。
码客人生:开源是不是让你认识了不少大厂员工?
我认识的大厂的人真的蛮少的,我认识最多的应该是微软的人,他们在社区里面非常活跃。微软在开源上会非常积极投入人力财力,不断去辐射别人,但它会把项目的行政权牢牢抓在自己手里。Facebook在开源上非常散养,它把这个项目做到一定程度开源出去之后,它就把自己摆在了一个用户的地位,顶多提供一些金钱上的、人力上的支持,优先级不如内部需求。
其实除了这些大厂员工,开源的主要力量还是来自世界各地的技术爱好者。许多人都是自由职业,或者并不出于公司身份,单纯喜欢技术。
我觉得开源就是一种生产资料的共享,你投入自己的闲暇时间,不求回报——但其实你也得到了回报,就是你自己的开心。你是真正愿意在这上面花精力花时间的,同时把自己的生产成果给别人共享,让其他人也能更有效率完成他们工作,你也能享受别人的成果,比如说像我的Docusaurus项目就直接用了一百多个其他人的库,然后间接引用的库可能有上千个,这些库大约90%以上都是是无偿维护的。开源在我看来是非常先进高效的协作模式,未来一定会成为主流。
码客人生:如何成为一个开源项目的维护者?基本上都是些国外的公司,但我学业比较忙,只接了一个金融公司的项目,赚了1000美元,这笔钱在我来到美国后,成为我在这里个人生活的的第一笔启动资金。
码客人生:研究大模型无限逼近人类思维的过程,可能是个漫长而艰巨,甚至没有答案的过程,你不是更喜欢快反馈么?
是的,但是它永远有变化,任何数学和计算机相关的东西,你有输入一定会有输出,或许输出不一定是想要那个方向,但至少你有反馈,你知道你是做对还是做错了,和自然科学不一样,自然科学像培养大肠杆菌,大肠杆菌可能最后直接死了,你什么都得不到,你只能怪你自己。