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

Posted CSDN资讯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了“我辞职了,决定全职去开发我的操作系统!”相关的知识,希望对你有一定的参考价值。

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

整理 | 苏宓

出品 | CSDN(ID:CSDNnews)

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

Linus Torvalds 闭关一个周末,隔周他宛如变戏法般地带着 Git 从天而降;Brendan Eich 临危受命,在 10 天内完成了 javascript 的第一个版本;在 QQ 当道的局势之下,张小龙带领一支 10 人不到的团队,用了不到 70 天的时间开发出如今已是国民应用之一微信的首个版本......

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

今天,我们要提及的主人公 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/

生于2001年的《程序员》曾陪伴了无数开发者成长,影响了一代又一代的中国技术人。时隔20年,《新程序员》带着全球技术大师深邃思考、优秀开发者技术创造等深度内容回来了!同时将全方位为所有开发者呈现国内外核心技术生态体系全景图。扫描下方小程序码即可立即订阅!

加入新程序员读者俱乐部:

  1. 季度会员:https://mall.csdn.net/item/76421?spm=1235995414
  2. 年度会员:https://mall.csdn.net/item/76785?spm=170298316

移动端的同学也可以扫码下方二维码加入
 

 

以上是关于“我辞职了,决定全职去开发我的操作系统!”的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序代码片段

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段6——CSS选择器