读万里书,行万里路。本文作者在积攒了多年的工作经验之后,毅然决定辞职,开启了全职开源开发者的道路,并围绕一手创建的底层 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:0000001701: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 file101: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. “辞职后,全职做开源操作系统的我,如今月入 2.8 万元”

    [CSDN 编者按]上周,我们曾发表<入狱 10 月.网暴不断,并挣扎在温饱线!超 90 亿次下载的开源项目,背后是这样的 9 年>一文,讲述JavaScript 模块化标准库core-j ...

  2. Shopee新手小白适合全职做虾皮电商平台吗?95%的新手都不适合

    没有搞定后顾之忧之前,千万不要全职做虾皮,不要听网上一些无良机构吹牛瞎扯,轻轻松松月入两三万瞬间都上头了,想辞职创业专搞虾皮,千万不要!搞不好就是九死一生,工作没了,钱还没有赚到. 虾皮目前来说确实是 ...

  3. 我的第一个web_登陆我的第一个全栈Web开发人员职位

    我的第一个web by Robert Cooper 罗伯特·库珀(Robert Cooper) 登陆我的第一个全栈Web开发人员职位 (Landing My First Full Stack Web ...

  4. 我决定辞掉工作,全职开发我的操作系统!(续)

    去年给大家讲了一个瑞典程序员的故事, 他在短短半年的业余时间内.一个人单枪匹马构建了普通程序员几年.甚至十几年的业余时间才能搞定的东西: 操作系统内核.TCP/IP协议.GUI框架.进程管理器.文件浏 ...

  5. web开发应届生入职_我如何从全职妈妈着手完成第一份Web开发人员工作

    web开发应届生入职 Two years ago I completed my first exercise on "Say Hello to HTML Elements" on ...

  6. 辞职在家全职炒股需要什么条件?

    很多散户朋友都想过类似题主的问题"辞职在家全职炒股需要什么条件?"或者"自己能不能辞职在家全职炒股?",特别是在一波行情之后,自己在股市中有所盈利容易萌发这样的 ...

  7. 《未来的工作》:50%的全职开发岗位在未来20年会消失,你们准备好了么?

    牛津大学发表的一份报告称,47%的职位将在未来20年"消失",但同时,也会有新的工种产生,那未来的工作到底会是什么样子的? <未来的工作>一书,由三位研究人类资源管理的 ...

  8. 想要成为全职DAO贡献者?需要了解这七点

    欢迎来到DAO生活!在这一版中,我们探讨了如何成为一名全职的DAO贡献者.如果您有朋友想知道如何选择DAO.如何建立声誉或如何获得报酬,我们将为您提供答案.谁知道呢,你甚至可以通过你的链上简历建立声誉 ...

  9. 如何成为一名全职创作者——程序员篇

    哈喽大家好,我是咸鱼 今天跟大家分享一篇文章,这篇文章的作者 Gergely Orosz 是一名程序员,他从 Uber 辞职以后,就当起了全职创作者 他通过写文章.卖课程.做视频等谋生,今天这篇文章是 ...

最新文章

  1. left join 和 left outer join 有什么区别
  2. 盘点和程序员相关的那些事,让你不再被割韭菜,薅羊毛!
  3. windows服务开发(一、安装)
  4. 使用animate()的时候,有时候会出现移进移出的闪动问题
  5. 华为S9303三层交换机一次配置经历和心得
  6. 工程力学:绪论与其它
  7. Linux忘记密码的找回方法
  8. 对民办幼儿园管理的几点思考
  9. 如何卸载ultraedit_怎么卸载ultra-edit32我安装了u – 手机爱问
  10. 关于整车上下电流程和电源管理
  11. Python 编码错误的本质原因
  12. SitePoint播客#177:非被动收入
  13. 基于JMF录制和播放视频源码
  14. 《野蛮生长》--冯仑
  15. Probability Theory | Coin Tossing Problems (TBC) | 概率论中的抛硬币问题 (未完待续)
  16. PS不能完成命令,因为没有足够内存(RAM)
  17. adb不是内部或外部命令,AndroidStudio中ADB命令不能用的问题
  18. pdf 模版 汉字和数字_标准格式!田字格里如何写汉字和数字(强烈推荐收藏)...
  19. 软件构造|GRASP模式
  20. Hook其他程序中的StringGrid的内容(内牛满面,终于找到了。)

热门文章

  1. CVPR 2021 Oral | 我给大家表演一个无中生有!北航商汤耶鲁新作:DSG
  2. ACL 2020 | 腾讯AI Lab解读三大前沿方向及入选的20篇论文
  3. 价值1.4万元的课程讲义开源,fast.ai发布新书源代码,登GitHub趋势榜第一
  4. 京瓷2010复印a4内容不全_百万畅销书活法的原点,稻盛和夫从未公开的京瓷秘籍...
  5. 机器人能否取代人工?阿迪达斯付出血的教训,含泪关闭智能工厂
  6. DeepMind开源AlphaFold,蛋白质预测模型登上《Nature》
  7. RNN失宠、强化学习风头正劲,ICLR 2019的八点参会总结
  8. 线性模型已退场,XGBoost时代早已来
  9. 技术总监和CTO的区别 浅谈CTO的作用----软件公司如何开源节流(一)
  10. 阿里云总裁胡晓明:“这些新杭州故事,明天将会在更多城市发生”