查看原文
其他

“我辞职了,决定全职去开发我的操作系统!”

Linux爱好者 2022-07-01

The following article is from CSDN Author 苏宓

读万里书,行万里路。本文作者在积攒了多年的工作经验之后,毅然决定辞职,开启了全职开源开发者的道路,并围绕一手创建的底层 SerenityOS 操作系统,为自己的梦想而开拓新的天地。


什么样的人才能被称之为顶级程序员?


Linus Torvalds 闭关一个周末,隔周他宛如变戏法般地带着 Git 从天而降;Brendan Eich 临危受命,在 10 天内完成了 JavaScript 的第一个版本......


顶级的程序员或许平凡、或许脾气暴躁、或许生活随心,但是他们的自驱力、创造力、毅力都将隐藏无限的潜力。


今天,我们要提及的主人公 Andreas Kling 就是这样的一位程序员,虽然截止目前其个人及创建的技术知名度并不像 Linux 等项目一样广为人知,但是他正在追逐梦想的道路上散发万丈光芒,引人注目,未来可期。


Andreas Kling 是谁?


Andreas Kling,是一位来自瑞典的程序员,他也是一位终身的编程爱好者。他曾任职于苹果、诺基亚等公司,主要负责基于 WebKit 的 Web 浏览器开发工作,非常擅长使用 C++。


近日,他发表了一篇《I quit my job to focus on SerenityOS full time》文章,揭晓了自己过去近三年的时间里正在做的一些事情,并宣布从 2021 年 5 月 28 日起,他结束了“打工人”的职业生涯,专注于自己一手创建的操作系统工作:


2018 年 10 月,Andreas Kling 从当地一家戒毒所完成了为期 3 个月的康复计划。时间结束后,他失业了,后来,他与家人住在一起,无所事事。


由于没有药物或其他恶习可以打发时间,他觉得日子太过漫长了。因此,他努力寻找一些事情来打发时间。他在学校待过一段时间,发现那里不适合自己。最终他又将关注点转向了编程,因为正如上文所述,他一直对编程有着浓厚的兴趣。


半年的时间,开发出操作系统的 Demo 


对于 Andreas Kling 个人而言,更为底层的技术深深地吸引着他,因此在拥有一定编程经验的基础上,他开始自己尝试创建一些新的事物,譬如从头开始写操作系统——SerenityOS(“宁静”操作系统),之所以用这个名字来命名,是因为 Andreas Kling 彼时较为担心自己的未来,借助“宁静的祷告”或许能帮助其更加坚信自己未来要走的路。


而创建这款操作系统的初衷,Andreas Kling 表示是他想要供日常使用。SerenityOS 是一款适用于 x86 计算机的图形类 UNIX 操作系统。与此同时,基于热爱和喜欢,这款系统结合了一些传统操作系统的特性,如 20 世纪 90 年代的 GUI 和 20 年代末的 UNIX 命令行。


2018 年 10 月 10 日,Andreas Kling 在 GitHub 上首次提交了代码:

https://github.com/SerenityOS/serenity



通过不断地迭代,SerenityOS 操作系统开始成型。对此,Andreas Kling 表示:“在苹果公司任职的时候,我真的很喜欢他们大部分软件都是在同一个”屋檐“下制作的感觉。这不仅使所有的软件可以超紧密集成,还可以给开发者更大的创作空间。我想我可以尝试把同样的感觉带到开源世界,所以我决定 SerenityOS 不会是一个个拼凑起来的软件包,我们正在建立自己的一切,包括从内核到 Web 浏览器,以及两者之间的一切。“


在此之下,Andreas Kling 仅用了半年的时间,研发出了 SerenityOS 的 Demo。


他是怎么做到的?


在 SerenityOS 内部,Andreas Kling 做了大量的工作,包括写了一个小的 ELF 可执行解析器、Ext2 文件系统浏览器、基于 SDL 的简单 GUI 工具包,还有一个 AK 实用程序库等等。


下面是 ext2 文件系统解析器在运行时的样子:


 ::> cd /home/andreas
    ::> ls -l
    [VFS] ls ///home/andreas -> ext2fs 01:00000017
    01:00000017 drwxr-xr-x 1024 2018-10-08 13:47:04 ./
    01:00000016 drwxr-xr-x 1024 2018-10-02 23:43:49 ../
    01:00000018 -rw-r--r-- 18 2018-10-02 23:44:09 file1
    01:00000019 -rw-r--r-- 18 2018-10-02 23:44:14 file2
    ::>   


作为底层基础软件,一款操作系统的研发并非想象中那么容易。对此,Andreas Kling 究竟是如何实现,接下来,我们不妨从其研发过程中来一探究竟。


Andreas Kling 开发 SerenityOS 的第一年


2018-10-10:Serenity 首个截图


2018-11-08 :Serenity 在虚拟机中运行


2019-01-09:在 SDL 帧缓冲区中测试 Widget


2019-01-10:Serenity 首次启动 GUI


2019-01-21:生成多个“guitest”进程


2019-02-03:添加 FontEditor、Clock 等


2019-02-08:增加壁纸支持


2019-02-11:第一次实现菜单,以及一个早期的 FileManager


2019-02-28:实现了 ProcessManager 的早期版本(今天称之为 SystemMonitor)


2019-03-12:使用 ping 命令


2019-03-15:当 TCP 功能有起色时,开始构建一个 IRC 客户端


2019-03-29:使用 FileManager 驱动 tree 和 icon 视图的开发


2019-04-11:实现 VisualBuilder 的第一个屏幕截图,它的 GUI 设计来源于 Visual Basic 的启发


2019-04-20:实现了一个贪吃蛇的游戏


2019-04-22:半成品的 GCC,只能编译小的 C 程序


2019-06-14:构建一个简单的绘画应用程序 PaintBrush


2019-07-14:构建了一个桌面声音合成器 Piano


2019-08-27:受微软启发,改善菜单栏外观


2019-09-09:拥有了 DOOM


2019-09-29:致力于在 LibHTML 中实现 CSS


2019-10-10:在 Serenity 的浏览器中查看此网页!


Andreas Kling 开发 SerenityOS 的第二年


2019-10-31:浏览器中的 hover 选择器


2019-11-30:在 HackStudio IDE 中使用“文件查找”


2019-12-30:SerenityOS 在 36c3(第 36 届 Chaos 通信大会)中被挑战者入侵


2020-01-31:采用两个类似 OpenBSD 的系统调用——pledge()和unveil()


2020-02-22:Profiler 中的内核符号


2020-02-29:一个简单的 HTTP 服务器


2020-03-31:Web 浏览器支持 JavaScript


2020-05-30:使用 TLS(和 HTTPS)访问更多 Web 网站


2020-06-22:自己的 JPEG 解码器


2020-06-30:致力于 ACID2 合规性测试修复


2020-07-27:使用用户空间模拟器捕获内存错误


2020-08-30:实现更多的桌面游戏(国际象棋和2048)


2020-09-22:HackStudio IDE 中的 Git 集成


2020-09-29:玩转 Excel


2020-10-10:制作这个网页!


“我辞职了,未来将全力构建这款操作系统”


或许在很多人看来,Andreas Kling 有着一段“不太光彩”的过去,但迷途知返后的他用自己的实际行动在证明,错掉的人生可以重新开始,也可以焕发精彩。


经过近三年的开发与维护,SerenityOS 已经获得了业界一定的认可与支持,越来越多的开源开发者加入其中,而它也从星星点点逐渐成长为一个充满活力的开源社区,截止目前,该系统也支持一些包括《Quake》、《Zelda》、《VVVVVV》等经典游戏。


除此之外,Andreas Kling 在开发 SerenityOS 项目的同时,也会录制一些编程教程并将其发布到 YouTube 平台(https://www.youtube.com/andreaskling)。截至目前,在 YouTube  上,Andreas Kling 已发布超过 700 个视频教程,获得了 2.54 万的订阅者。

如今,Andreas Kling 也正式宣布辞掉原有的全职工作,专心把 SerenityOS 运营壮大。正如 Andreas Kling 所说,“在许多方面,我们仍然只是开始。”


对此,网友也纷纷表示支持:


@Overlord Maniac:辞掉自己的工作,去追逐梦想,需要很大的勇气。我尊重,希望这个是值得的。不过,为什么不改做兼职工作,就像很多自由职业者一样,每周 10-20 小时。


@Mathias Jakobsen:恭喜 Andreas Kling !祝这次“新”冒险好运。能够在开源项目上支持自己决定是很棒的,你激励了我们所有的人。


@dpbriggs:我强烈建议大家去看一下他的 YouTube 频道(https://www.youtube.com/c/AndreasKling/videos)。他是一个令人难以置信且极具思想的人,在保持专注方面提供了很好的经验分享。


我认为他是一位导师,他的软件方法让我真正产生共鸣。他非常关注软件质量,但我们也明白他不可能一次让所有事情都完美无缺。这种方法帮助我摆脱了项目和工作中的决策难题。


还有许多我没有提到的内容,其实都能从他的视频中学到,无论是调试内核及引导程序、移植、编写实时反馈 GUI 编辑器、实现系统调用,还是实现动态加载器,这一切视频他都拥有。


GitHub 地址:https://github.com/SerenityOS/serenity/


参考:https://www.serenityos.org/happy/1st/

https://www.serenityos.org/happy/2nd/

https://awesomekling.github.io/I-quit-my-job-to-focus-on-SerenityOS-full-time/


- EOF -

推荐阅读  点击标题可跳转

1、维护开源项目太难了,Redis 之父:只做自己想做的

2、“华为天才少年”把自行车做成了自动驾驶!

3、2.3 万 Star!直追微软 Visio,这个简洁实用的在线绘图工具必须推荐给你


看完本文有收获?请分享给更多人

推荐关注「Linux 爱好者」,提升Linux技能

点赞和在看就是最大的支持❤️

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存