为了戒毒,国外这位老哥手搓了个操作系统!
今天和大家讲个故事,可以说是一个程序员的故事,也可以说是一个男人的自我救赎。
主人公叫 Andreas Kling(后面简称 AK 老哥,实话实说,真的和 AK 一样生猛),是一位来自瑞典的程序员。
之所以了解到他,是因为他在 5 月底于个人博客更了一篇博文,也因为这篇博文有幸让我知道了他和他的故事。
博文标题直译过来就是:《我辞职了,为了全职开发 SerenityOS》。
初看标题,我就觉得辞职不是重点,重点在那个 SerenityOS 上。
Serenity 译为宁静,OS 这个咱不陌生,iOS、macOS、鸿蒙 OS、氢 OS 等等,这俩字母不就指的是操作系统。
可分开看都认识,合起来就摸瞎了,宁静系统?这又是个什么玩意。
寻着博文一番了解,我才知道,SerenityOS 是 AK 老哥自己盘出来的操作系统。
那自己一个人盘出一套操作系统难吗?
做个假设,如果不考虑能用,也不考虑有用,且抱着站着说话不腰疼的态度,躲在屏幕后头,敲下「不难」这两字本身并不难。
何况自己折腾操作系统的老哥并不少,有担心 2030 年地球经济体系崩盘,全世界陷入末日,互联网自此消失的 Dupras,他自己开发了个后末日时代的「Collapse OS」。
还有进过监狱、跳过警车、进过精神科的 Terrence Andrew Davis,为了上帝开发的「TempleOS」。
等等,不一而足。
但,你要问我能不能自己搞个操作系统?
额,我建议你还是先把我按到那,然后把刀架脖子边,再问。
要是我那点勇气还在,我还能得伸着脖子,小声说句不能。
这不就跟我问,这瓜保熟吗?
要是拿 Windows 这种成品来比较,单看那一行行的代码数量,Win 98 有 1500 万行,Win XP 有 3500 万行,Win Vista 有 5000 万行代码。
我还没认真看过这么多代码,你让我写,这不逼我撒谎吗?
但 AK 老哥能写,并已经在写了,敲了三年代码,无数个版本迭代,SerenityOS 在大跨步的向前走。
从博客找到的最新截图,SerenityOS 已经是这个样子了:
所以,我们回到 AK 老哥身上,他是谁?
一个来自瑞典的普通程序员?
看看隔壁自己攒操作系统的老哥,不是担心世界末日,就是为了上帝历经传奇,那 AK 的故事,你好奇吗?
浪子回头
我们先把目光放到 2018 年,热爱编程,并把编程当作一生追求的 AK 老哥,碰了他最不该碰的东西,毒品。
就算你没看过《梦之安魂曲》这样赫赫有名的全球禁片,也能大概想象因此染瘾的 AK 老哥并不好受。
2018 年 7 月,AK 在一家戒毒所开始了他的戒毒。
3 个月后,从戒毒所刚刚出来,没有工作,无事在家的 AK,仿佛失去了人生追求。
按他所言:
在没有药物或其他恶习来打发时间的日子里,一切都很漫长,只能试图寻找活动来填补内心。
几经尝试,AK 还是投向了编程的怀抱。
不过相比过去工作里的浏览器开发,AK 老哥更为感兴趣的其实是底层技术,当兴趣成了第一生产力。
就有了 SerenityOS。
按作者所言,SerenityOS 这个系统是写给 90 年代用户的一封情书,从其他操作系统那里「窃取」来的美丽想法,不是拼凑起软件包,而是自己建立起一切。
从内核到浏览器,以及两者中的一切。
耗时半年,SerenityOS 的 Demo 面世。
现在看来,AK 创造了 SerenityOS,SerenityOS 也还给他了真正的宁静。
此后三年,哪怕又找了工作,仍没有放弃对 SerenityOS 的开发。
浪子回头,不外如是。
我跟着 GitHub 上的信息,摸到了老哥 YouTube 的频道地址,长这个样子:
嗯,是大佬。
SerenityOS
在我看来,AK 老哥对 SerenityOS 的爱是不留余力的,拿了 GitHub 「全勤奖」的他,三年内的更新,仿佛谱写了一份简版计算机软件发展史。
我从这个项目的官网,扒拉来了 SerenityOS 这几年的发展历程,当我第一次看时,满脑子的 NB!卧槽!
不信你看。
2018 年 10 月 10 日,Serenity 的首个截图:
2018 年 11 月 8 日,Serenity 第一次登陆虚拟机:
2019 年 1 月 9 日,Serenity 测试 Widget:
2019 年 1 月 10 日,Serenity 有了自己的图形界面:
2019 年 1 月 21 日,Serenity 支持多窗口,多进程了:
2019 年 2 月 3 日,Serenity 有了字体编辑器、时钟这样的功能:
2019 年 2 月 8 日,Serenity 开始支持桌面壁纸:
2019 年 2 月 11 日,Serenity 第一次有了菜单和文件管理器:
2019 年 2 月 28 日,Serenity 有了自己的任务管理器:
2019 年 3 月 12 日,Serenity 实现了 Ping 命令:
2019 年 3 月 15 日,Serenity 开始构建通讯客户端:
2019 年 3 月 29 日,Serenity 文件管理器有了树形结构和图标:
2019 年 4 月 11 日,Serenity 有了开发工具的雏形:
2019 年 4 月 20 日,Serenity 上实现了贪吃蛇:
2019 年 4 月 22 日,半成品编译器,说是只能编译小型 C 语言程序:
2019 年 6 月 14 日,一个简单的绘画应用:
2019 年 7 月 14 日,声音合成器来了:
2019 年 8 月 27,改了改菜单栏外观,你猜这是在学谁:
2019 年 9 月 9 日,毁灭战士被安排上了:
2019 年 9 月 29,可以实现 CSS(网页样式)了:
2019 年 10 月 10 日,Serenity 浏览器上能看网页了:
这才是 AK 老哥折腾的第一年,但你看,SerenityOS 的骨架已经搭建了起来,而这只用了 1 年的时间。
第二年,AK 老哥还是两头走的发展路线,一头不断完善浏览器的基础,一头不断补全操作系统的功能。
我不放那么多图了,按时间顺序,给大家挑几个精彩的。
2019 年 11 月 30 日,IDE 安排:
2020 年 2 月 29 日,HTTP 服务器安排,一个月以后它的浏览器能跑 JS 代码了:
2020 年 5 月 30 日,Serenity 能够访问更多的外部网站了:
2020 年 6 月 22 日,图片解码器安排:
2020 年 8 月 30 日,国际象棋和 2048 安排:
2020 年 9 月 22 日,IDE 中集成了 Git:
2020 年 9 月 29 日,Excel 出现:
时至今日,才有了一开头那个支持渲染,可以通讯,可以开发,可以使用的 SerenityOS。
就像 AK 老哥所说,他要构建一切,而在这个过程中 SerenityOS 成了帮他驾驭生活的那一份宁静。
你说,他在折腾 SerenityOS 的这三年里,得到救赎了嘛?
总结
自己在人生低谷的时候把自己拉起来,在我看来丝毫不比很早前写过的那个博士致谢给我的感动少。
你说,我来和大家分享 Andreas Kling 老哥的故事,是想替他获得更多句卧槽?
我哪有那资格,何况 AK 老哥到底厉不厉害,已经不需要再多说什么。
只是,恰如编程是 AK 的锚点,你我的锚点又在哪里呢?
好吧,这是一篇鸡汤,如果你 get 了,那我就赚到了。
最近一段时间挺忙的,没时间写东西,刚刚看了眼时间,这篇文章和大家见面还有 7 个小时,时间这玩意过的是真滴快。
最后的最后,再偷用一下 AK 老哥的话(写这篇文章打了不少 JK 老哥。。。):
非常感谢您阅读这篇文章,我要小睡一会儿,然后我们将在早上重新开始。