- PVSM.RU - https://www.pvsm.ru -

Андреас Клинг, его операционная система SerenityOS и браузер Ladybird

Андреас Клинг, его операционная система SerenityOS и браузер Ladybird - 1 [1]

Говорят, что в спортзале сильнее всех выкладываются бывшие алкоголики и наркоманы, они работают из последних сил. И это наблюдение не только из спорта, но и из других сфер жизни. Если люди склонны к зависимости, это может проявиться в разных увлечениях, куда они погружаются с головой: трудоголизм, женщины, хобби, гурманство, коллекционирование и т. д. Каждому делу они словно отдаются целиком.

Взять к примеру шведского программиста Андреаса Клинга [2] (Andreas Kling). В 2018 году он вышел из государственной клиники реабилитации наркоманов после трёхмесячного курса — и в качестве хобби начал разработку операционной системы SerenityOS [3]. Нужно было чем-то занять свободное время и избавиться от посторонних мыслей. Создание новой ОС вполне подходит для такой задачи.

За несколько лет SerenityOS стала одним из крупнейших опенсорсных проектов в мире с тысячами контрибуторов [4]. Приятный интерфейс в стиле 90-х, Unix-подобное ядро и лучшие идеи из других ОС — вот рецепт успеха.

Андреас Клинг, его операционная система SerenityOS и браузер Ladybird - 2

До создания SerenityOS Андреас Клинг вёл нормальную карьеру разработчика, программировал на C++ в компаниях разного размера, в том числе работал в Nokia и Apple над браузерным движком WebKit. Удалённая работа на Apple из Швеции привела к появлению вредных зависимостей [5], а переезд в Калифорнию и график с 10 до 22 усугубили ситуацию [6]. Иногда он употреблял алкоголь и наркотики прямо в офисе с обеда.

После возвращения в Швецию и трёхмесячного лечения в клинике Андреас остался безработным.

«Без наркотиков или других пороков, чтобы скоротать время, дни тянулись невероятно долго, — пишет [7] он. — В конце концов я обратился к программированию, поскольку оно всегда было моим главным интересом в жизни». В доме у дедушки как раз был древний компьютер 2006 года, на котором вентилятор коротил материнскую плату, но если наклонить системный блок под определённым углом, он всё-таки мог загрузиться. В трезвой жизни программирование стало другим, по ощущениям, словно в детстве: «Меня всегда интересовали низкоуровневые вещи, поэтому я начал возиться с некоторыми из них. Написал небольшой парсер исполняемых файлов ELF. Потом браузер файловой системы Ext2… И небольшой фреймворк GUI с циклом событий… Из этих проектиков и начала формироваться операционная система». Всё это оказалось крайне терапевтической штукой. Андреас выбрал название Serenity («душевный покой»), чтобы всегда помнить одноимённую молитву [8]:

Андреас Клинг, его операционная система SerenityOS и браузер Ladybird - 3

Общая идея заключалась в том, чтобы создать ОС мечты для ежедневного использования. Она должна сочетать в себе две компьютерные парадигмы: графический интерфейс 90-х и идеальную консоль Unix конца 2000-х.

«Когда я работал в Apple, мне очень нравилось, что большая часть ПО создаётся внутри компании. Это не только позволяло создавать очень тесные интеграции, но и делало систему чрезвычайно удобной для разработчиков. Вы всегда могли найти экспертов где-то поблизости. Я подумал, что могу попробовать привнести то же самое в мир опенсорса, и решил, что SerenityOS не будет лоскутным набором из сторонних пакетов — нет, мы всё напишем сами! От ядра до веб-браузера и всего, что между ними».

Когда Андреас устроился на работу, он продолжил заниматься проектом в свободное время. Вплоть до 2021 года, когда появилась возможность уволиться и полностью посвятить себя любимому делу: «Это стало возможным благодаря чрезвычайно щедрой поддержке, которую я получаю от вас через Patreon [9], GitHub Sponsors [10] и PayPal [11]! Мне очень повезло, что я пользуюсь доверием и поддержкой стольких людей. Огромное вам всем спасибо!!!»

На момент увольнения в 2021 году Андреас получал чуть больше $2000 пожертвований в месяц, а также вознаграждение от YouTube ($150 в месяц) и продажи мерча SerenityOS ($100). В дальнейшем доходы постепенно росли, до $4200 в октябре 2022-го [12] и т. д. Главное, заниматься любимым делом, сохраняя душевное и физическое здоровье, а деньги придут.

В твиттере он раньше положительно отзывался о Copilot как помощнике программирования на С и С++. Учитывая огромный объём работы, когда он практически в одиночку создавал с нуля операционную систему и браузер, никакая помощь не будет лишней. Возможно, сейчас он использует и других ИИ-помощников для написания простого кода, где не требуется особый талант. Это может частично объяснить его потрясающую работоспособность.

На канале YouTube [13] Андреас обсуждает не только SerenityOS, но и другие программистские темы [14], в том числе рассказывает забавные истории со своих прошлых работ, хотя в последние годы традиция «разговоров за рулём» прекратилась. В этих выпусках он даёт советы, как сохранять концентрацию внимания и фокусироваться на текущих задачах, чтобы не впасть в прокрастинацию. Как и Линус Торвальдс, он в разработке предпочитает не использовать дебаггер [15].

В одном из интервью [16] Андреас говорит, что SerenityOS — это просто способ получать удовольствие от программирования для него и для всех, кто принимает участие в этом проекте.

▍ SerenityOS

Первые полгода Клинг работал в одиночку, а потом выложил наработки в интернет и предложил поучаствовать, кому это интересно. Первый коммит [17] датируется 18 октября 2018 года. Тогда репозиторий включал четыре компонента [18]:

  • служебная библиотека AK;
  • загрузчик исполняемых файлов ELF;
  • парсер файловой системы ext2;
  • простой набор инструментов GUI поверх SDL.

Это были четыре маленьких отдельных проекта, с которыми Андреас возился на С++, просто чтобы занять время и снова найти себя. Он ещё попытался написать ядро x86 на C, но оно не очень получилось.

Первый скриншот того, что впоследствии превратится в SerenityOS:

Андреас Клинг, его операционная система SerenityOS и браузер Ladybird - 4

Тестовый GUI поверх SDL в Linux:

Андреас Клинг, его операционная система SerenityOS и браузер Ladybird - 5

Первая загрузка GUI на собственном ядре, январь 2019 года:

Андреас Клинг, его операционная система SerenityOS и браузер Ladybird - 6

Разработка шла в быстром темпе. В феврале автор написал FontEditor и Clock, а также портировал GNU bc:

Андреас Клинг, его операционная система SerenityOS и браузер Ladybird - 7

Через пару дней добавил поддержку обоев и программу top:

Андреас Клинг, его операционная система SerenityOS и браузер Ladybird - 8

… потом были менеджер файлов [19] и менеджер процессов [20], сетевой стек [21], IRC-клиент [22], инструмент VisualBuilder [23] для программирования GUI [24], первая попытка портировать GCC [25] (частично успешная), графический редактор PaintBrush [26], первая версия браузера [27] и т. д. Каждая из перечисленных программ занимала несколько дней или недель разработки. Ежемесячно автор выкладывал видеоотчёт [28] о проделанной работе. Так прошёл первый год [29], потом второй [30], третий [31] и т. д.

Андреас Клинг, его операционная система SerenityOS и браузер Ladybird - 9

После анонса на Reddit новая экзотичная ОС приобрела известность и популярность. Как уже упоминалось выше, в мае 2021 года Андреас уволился с работы [7], чтобы всё свободное время уделить разработке.

Один из скриншотов от 2021 года:

Андреас Клинг, его операционная система SerenityOS и браузер Ladybird - 10

После трёх лет существования SerenityOS стала проектом его жизни. На помощь в разработке пришло большое сообщество энтузиастов.

На сегодняшний день ОС поддерживает набор инструкций x86-64, собственное ядро и множество сложных приложений в комплекте, включая собственный веб-браузер Ladybird и интегрированную среду разработки (IDE).

SerenityOS стремится быть современной Unix-подобной операционной системой, по внешнему виду и ощущениям напоминающей операционные системы 1990-х годов, такие как Windows и Mac OS того времени. Включение в систему стороннего кода не приветствуется, здесь принято писать всё своё.

Например, веб-браузер не использует существующий движок вроде WebKit, а собственный LibWeb. Впрочем, есть коллекция портированного ПО, в том числе GCC, Git и Doom, с разным уровнем функциональности.

Андреас Клинг, его операционная система SerenityOS и браузер Ladybird - 11

Разработка не придерживается графика; как таковых релизов не существует. Кроме того, не распространяются бинарные дистрибутивы: предполагается, что все пользователи будут собирать систему из исходников.

Система написана на языке, который автор называет Serenity C++ — вариант C++, где отсутствуют исключения и используется собственная стандартная библиотека.

Учитывая значение проекта для Андреаса Клинга удивительно было узнать, что в июне 2024-го он объявил об уходе с поста «великодушного пожизненного диктатора» [32] (BDFL).

▍ Ladybird

Благодаря помощи энтузиастов в последние два года он смог практически полностью сконцентрироваться на разработке браузера Ladybird [33]. Из простой программы для просмотра HTML тот превратился в настоящий кроссплатформенный браузер (Linux, macOS и Windows под WSL). Сейчас Андреас уделяет всё внимание доработке Linux-версии. Он так погрузился в это дело, что уже и не может вспомнить, когда писал какой-то код для SerenityOS, не связанный с Ladybird.

Как мы уже упоминали, Андреас работал над движком WebKit в компании Apple. В биографическом разделе [34] на личном сайте он пишет: если вы сейчас используете какой-то браузер, «высока вероятность, что он работает немножко быстрее благодаря мне». То есть опыт у него есть.

Теоретически, Ladybird — это полностью независимый браузер на собственном новом движке, который основан на веб-стандартах. Но сейчас он находится в состоянии пре-альфа и подходит для использования только разработчиками (инструкции по сборке [35]):

Андреас Клинг, его операционная система SerenityOS и браузер Ladybird - 12

Так что теперь сообщество SerenityOS разделяется на две группы: те, кто работает над ОС, и те, кто работает над браузером. Ladybird теперь считается полноценным независимым проектом в новом репозитории [36] с фокусом на Linux и macOS, а сама SerenityOS полностью переходит под контроль энтузиастов.

Разработка современного браузера на собственном движке — задача не менее сложная, чем написание собственной ОС. Например, размер кодовой базы Chromium больше, чем FreeBSD [37], включая LLVM [38]. В мире десятки [39], если не сотни любительских ОС, которые написаны с нуля ради удовольствия, некоторые буквально за месяц [40]. А вот кроссплатформенных браузерных движков гораздо меньше. Некоторые говорят [41], что написать новый браузер с нуля сейчас практически невозможно. Андреас хочет доказать обратное [42]. Хотя нужно много времени, но это всё-таки возможно, если делать работу шаг за шагом, неуклонно двигаясь к цели. Как и раньше, он публикует видеоролики о создании разных компонентов браузера, например, JavaScript JIT-компилятора [43].

Создаётся впечатление, что Андреас Клинг потерял интерес к SerenityOS и сосредоточился на браузере. Что ж, в этом преимущество опенсорса, где ты можешь сам выбирать себе работу. Главное, чтобы хобби выполняло свою терапевтическую задачу.

Автор: Анатолий Ализар

Источник [63]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/s/392438

Ссылки в тексте:

[1] Image: https://habr.com/ru/companies/ruvds/articles/823778/

[2] Андреаса Клинга: https://awesomekling.github.io/

[3] SerenityOS: https://www.serenityos.org/

[4] контрибуторов: https://github.com/SerenityOS/serenity/graphs/contributors

[5] привела к появлению вредных зависимостей: https://corecursive.com/serenity-os-with-andreas-kling/#:~:text=It%20was%20all%20work%20all%20the%20time

[6] усугубили ситуацию: https://corecursive.com/serenity-os-with-andreas-kling/#:~:text=keeping%20cocaine%20on%20your%20desk

[7] пишет: https://awesomekling.github.io/I-quit-my-job-to-focus-on-SerenityOS-full-time/

[8] одноимённую молитву: https://en.wikipedia.org/wiki/Serenity_Prayer

[9] Patreon: https://patreon.com/awesomekling

[10] GitHub Sponsors: https://github.com/sponsors/awesomekling

[11] PayPal: https://paypal.me/awesomekling

[12] $4200 в октябре 2022-го: https://awesomekling.github.io/How-I-make-a-living-working-on-SerenityOS/

[13] канале YouTube: https://youtube.com/andreaskling

[14] другие программистские темы: https://www.youtube.com/playlist?list=PLMOpZvQB55beZVZnnck4Q-J9nVQP6ihVP

[15] не использовать дебаггер: https://www.youtube.com/watch?v=epcaK_bhWWA&t=404s

[16] интервью: https://www.youtube.com/watch?v=dUDncm1HdDk

[17] Первый коммит: https://github.com/SerenityOS/serenity/commit/5a300551574451fbf509685d11095bda4fcb20be

[18] четыре компонента: https://www.serenityos.org/happy/1st/

[19] менеджер файлов: https://www.serenityos.org/happy/1st/2019-02-11.png

[20] менеджер процессов: https://www.serenityos.org/happy/1st/2019-02-28.png

[21] сетевой стек: https://www.serenityos.org/happy/1st/2019-03-12.png

[22] IRC-клиент: https://www.serenityos.org/happy/1st/2019-03-15.png

[23] VisualBuilder: https://www.serenityos.org/happy/1st/2019-04-11.png

[24] программирования GUI: https://awesomekling.github.io/Introduction-to-SerenityOS-GUI-programming/

[25] попытка портировать GCC: https://www.serenityos.org/happy/1st/2019-04-22.png

[26] PaintBrush: https://www.serenityos.org/happy/1st/2019-06-14.png

[27] браузера: https://www.serenityos.org/happy/1st/2019-10-10.png

[28] видеоотчёт: https://www.youtube.com/watch?v=hE52D-zbX3g

[29] первый год: http://serenityos.org/happy/1st/

[30] второй: https://www.serenityos.org/happy/2nd/

[31] третий: https://serenityos.org/happy/3rd/

[32] объявил об уходе с поста «великодушного пожизненного диктатора»: https://awesomekling.substack.com/p/forking-ladybird-and-stepping-down-serenityos

[33] Ladybird: https://ladybird.dev/

[34] биографическом разделе: https://awesomekling.github.io/about/

[35] инструкции по сборке: https://github.com/LadybirdWebBrowser/ladybird/blob/master/Documentation/BuildInstructionsLadybird.md

[36] новом репозитории: https://github.com/LadybirdBrowser/ladybird

[37] FreeBSD: https://github.com/freebsd/freebsd-src

[38] включая LLVM: https://papers.freebsd.org/2020/fosdem/carlier-freebsd_and_llvm_support/

[39] десятки: https://github.com/jubalh/awesome-os

[40] за месяц: https://drewdevault.com/2024/05/24/2024-05-24-Bunnix.html

[41] говорят: https://robert.ocallahan.org/2024/06/browser-engine.html

[42] хочет доказать обратное: https://www.youtube.com/watch?v=-YlVex4nbfw

[43] JavaScript JIT-компилятора: https://www.youtube.com/watch?v=8mxubNQC5O8

[44] Джастин Танни: https://habr.com/ru/company/ruvds/blog/682150/

[45] Джей Фриман (saurik): https://habr.com/ru/company/ruvds/blog/688716/

[46] Михал Залевски: https://habr.com/ru/company/ruvds/blog/695386/

[47] 1: https://habr.com/ru/company/ruvds/blog/701556/

[48] 2: https://habr.com/ru/company/ruvds/blog/721150/

[49] Марк Руссинович: https://habr.com/ru/company/ruvds/blog/710268/

[50] Юрки Алакуйяла: https://habr.com/ru/company/ruvds/blog/713648/

[51] Андрей Карпаты: https://habr.com/ru/companies/ruvds/articles/728056/

[52] Даниэль Стенберг, автор curl: https://habr.com/ru/companies/ruvds/articles/733002/

[53] Колин Персиваль, автор tarsnap: https://habr.com/ru/companies/ruvds/articles/739392/

[54] Джефф Дин: https://habr.com/ru/companies/ruvds/articles/752206/

[55] antirez, автор СУБД Redis: https://habr.com/ru/companies/ruvds/articles/758112/

[56] Оскар Толедо: потомственный волшебник: https://habr.com/ru/companies/ruvds/articles/765074/

[57] Ральф Меркл: криптограф, крионик и теоретик молекулярной инженерии: https://habr.com/ru/companies/ruvds/articles/770556/

[58] Чем сейчас занимается Фабрис Беллар: https://habr.com/ru/companies/ruvds/articles/781922/

[59] Мигель де Икаса и его мечта — Linux на десктопах: https://habr.com/ru/companies/ruvds/articles/787860/

[60] Давид Хейнемейер Ханссон (DHH): автор Ruby on Rails: https://habr.com/ru/companies/ruvds/articles/795275/

[61] Карсон Гросс, создатель HTMX: https://habr.com/ru/companies/ruvds/articles/814193/

[62] Клеман Лефевр, создатель Linux Mint: https://habr.com/ru/companies/ruvds/articles/817327/

[63] Источник: https://habr.com/ru/companies/ruvds/articles/823778/?utm_source=habrahabr&utm_medium=rss&utm_campaign=823778