unix
November 29, 2023

Про отличия операционных систем

Думаю вы неоднократно встречали или даже участвовали в спорах на тему превосходства той или иной открытой ОС. Ниже вы найдете наверное самый разумный из возможных ответов на все подобные обсуждения.

И так будет с каждым пингвином.

Главное

Для начала порву некоторым из читателей шаблон:

между операционными системами общего назначения принципиальных различий нет и быть не может.

Точка.

Если сравниваемые ОС разрабатываются для общего применения (это то что назвывается офисной работой) и использования на широком наборе пользовательского оборудования, без жесткой специализации (привет RTOS) на какой-то одной задаче, то они будут примерно одинаково выглядеть, одинаково запускаться и одинаково же администрироваться.

Это логично, если включить голову и немного подумать.

Разумеется существуют технические отличия, временами достаточно большие. Может быть разница и в каких-то деталях реализации — от разного набора поддерживаемого оборудования и прикладного ПО и до разницы в аргументах системных утилит (какого-нибудь grep).

Но поскольку все это решает одну и ту же задачу широкой применимости то:

нельзя в принципе сравнивать ОС общего назначения исходя только из технических отличий и мелких деталей.

Поэтому увы, но нет, что «святая тройца» BSD, что Linux со всеми своими дистрибьютивами и даже какая-нибудь OpenIndiana — вещи примерно одного порядка.

Разумеется есть отличия, где-то серьезные, где-то критические, но суть и цель у всех этих проектов одна и та же — максимально широкая применимость.

Если все так просто, то в чем тогда заключаются отличия? Почему не объединить усилия ради создания чего-то одного и общего?

Давайте разберем эти «животрепещущие вопросы бытия», не дающие спать по ночам многим фанатам той или иной системы.

Отличия

Чтобы понять суть, для начала необходимо рассказать что такое вообще «большой проект открытой операционной системы», как это выглядит и работает.

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

От размера и степени активности сообщества многое зависит, именно по этой причине скорость развития ОС Linux превзошла все существующие или когда-либо существовавшие проекты операционных систем.

Как открытых так и закрытых.

Еще у каждого сообщества есть свои лидеры — ключевые разработчики, которые задают общий тон, курс и канву развития, а также формируют и поддерживают некие общие ценности проекта.

Их уход может сильно замедлить развитие или даже похоронить весь проект целиком — так уже бывало в истории ИТ и не раз.

Случается что лидер начинает вести проект не туда (хороший пример — Unity в Ubuntu), может стать слишком авторитарным или консервативным и уже не может адекватно воспринимать реальность.

А бывает наоборот:

молодой и дерзкий член сообщества «гонит волну» на старших, набирает своих последователей и откалывается от основного проекта.

Так когда-то на свет появилась OpenBSD, отколовшись от NetBSD ввиду концептуальных различий во взглядах одного из членов «Core Team» на будущее проекта.

Вообщем самое главное отличие — в сообществе и людях, не в коде и деталях технической реализации.

Ценности

Теперь давайте поговорим про ценности открытого проекта, для примера из OpenBSD:

OpenBSD believes in strong security. Our aspiration is to be NUMBER ONE in the industry for security (if we are not already there). Our open software development model permits us to take a more uncompromising view towards increased security than most vendors are able to. We can make changes the vendors would not make. Also, since OpenBSD is exported with cryptography, we are able to take cryptographic approaches towards fixing security problems.

Концентрация на безопасности для сообщества OpenBSD это действительно не просто слова, весь процесс разработки этой ОС сфокусирован вокруг многократных проверок исходного кода и поиска уязвимостей.

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

Безопасность — ключевая ценность в проекте OpenBSD

Но это не значит что ее нельзя например запустить на ноутбуке или использовать для прикладной разработки или каких-то обычных пользовательских программ. Можно, но сложно.

Также это не означает что все остальные ОС небезопасны, просто никто больше не подходит к вопросу безопасности настолько серьезно и не жертвует столь многим ради ее обеспечения.

К сожалению у куда более популярной FreeBSD и тем более Linux нет четко выраженных ценностей, например на главной странице официального сайта FreeBSD висит лаконичное:

FreeBSD is an operating system used to power modern servers, desktops, and embedded platforms.

Это ни хорошо и не плохо но замечательно отражает реалии, поскольку этот проект с самого начала развивался как набор ПО общего назначения.

Говоря откровенно:

Как FreeBSD так и Linux всю свою историю бодаются за одинаковую целевую аудиторию и занимаемые ниши в ИТ — вебсерверы, системы хранения данных и встраиваемые системы.

Использование в качестве настольной ОС что на линукса что на BSD — для фанатов и очень опытных пользователей.

На данный момент аудитория у Linux сильно больше, поскольку создатель и главный идеолог проекта — Линус Торвальдс оказался более открытым к изменениям и смог выстроить более гибкую модель разработки.

Что и позволило выстроить вокруг Linux большое и сильное коммьюнити, дружелюбное (в начале) к новичкам и открытое к изменениям.

Что привлекло уже бизнес и корпорации, которые постепенно начали спонсировать разработку этих открытых проектов. Но разумеется не без корыстных побуждений.

Спонсоры

Полагаю, по ходу чтения вы уже несколько раз задались вопросом:

«а на чьи же деньги происходит весь этот праздник жизни»?

Кто платит за разработку, за серверы и инфраструктуру?

Зная примерную ставку среднего разработчика по миру и оценив объем кода ядра Linux можно слегка охренеть от стоимости.

Много вы знаете желающих влить ~$10 млрд в разработку программного продукта?

Чтобы понять этот парадокс, необходимо учитывать исторический контекст и тот простой факт, что хипповать стреляя мелочь на пиво в солнечной Калифорнии заметно проще чем в холодной Москве или Питере.

Плюс мощная государственная поддержка тех лет и толерантные к «свободному стилю жизни» учебные заведения типа Berkley.

Многие из читающих могут позволить себе не работать пару лет и жить в свое удовольствие занимаясь чем душе угодно?

Сильно сомневаюсь, такое и сейчас у нас мало кто может себе позволить а в те годы (начало 90х) тем более.

А там это было, причем как массовое явление

Вообщем сочетание свободного времени, денег и мятежного духа творит чудеса, одним из таких чудес как раз и стало появление открытого ПО — знаковое явление для тех лет.

Хорошее было время, жалко кончилось.

Но сие есть «предания старины глубокой», так было лишь в самом начале пути открытых проектов, дальше было куда более интересно.

Дальше пришли «большие парни» с деньгами.

Вы же понимаете:

Когда появлется человек в деловом костюме и предлагает присылать вам по паре млн. долларов каждый год в обмен на определенные доработки в проекте — мало кто может устоять.

И скажу что в проекте ядра Linux таких людей в деловых костюмах было не один и не два а очень и очень много.

Результатом такого спонсорства стало все большее фокусирование проекта на задачах крупного бизнеса:

работа на очень мощном оборудовании, selinux, cgroups, бесконечный поток всякой виртуализации и контейнеризации и еще масса подобного.

На данный момент такой корпоративный функционал составляет существенную (если уже не большую) часть ядра и конца и края этому нет.

Разумеется также постоянно сужается поддержка устаревшего оборудования — неактуального для больших корпораций.

Да, скорее всего как потребитель вы просто не замечаете происходящих процессов а лишь пользуетесь, постепенно заменяя устаревшее оборудование и скачивая обновления.

И только слетающая временами конфигурация или потоки негатива на очередной слой виртуализации вроде Snapd или Flatpak напоминают о все возрастающей сложности «под капотом».

Коммьюнити и поддержка

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

Сильно позже, видя все нарастающий интерес и постоянно расширяющуюся сферу применимости PC стали появляться операционные системы, ориентированные на неподготовленного пользователя — Windows и MacOS.

Разумеется платные и закрытые, потому что только такие системы возможно сопровождать и поддерживать силами одной компании на максимально широкую аудиторию.

Да да, вы не ослышались:

открытое ПО поддерживать в рамках стандартного типового контракта невозможно.

Почему?

Ну потому что пользователь рано или поздно захочет его собрать из исходников, т. е. принять участие в разработке в том или ином виде, что повлечет за собой непредсказуемое количество проблем, поскольку каждая среда разработки по-сути уникальна.

Знаете как звучит самая популярная отмазка программиста?

У меня все работает.

А как вы уже наверное могли догадаться — все эти линуксы и BSD по-большей части именно что собираются из исходников на машине пользователя, если не ОС целиком, то точно большая часть прикладного ПО.

Разумеется есть «бинарные дистрибьютивы», где участие компилятора сведено к минимуму (например сборка и линковка только модуля ядра при обновлении), но сути явления это не меняет:

Невозможно добиться повторяемости открытой системы

Две установленные из одного образа копии Windows (тем более MacOS) будут одинаковы, два установленных линукса — нет. При обновлении разных копий Windows прилетят одни и те же обновления, при обновлении линукса — нет (потому что обновления зависят от набора установленного ПО).

Есть исключения в виде специальных контейнеров и специальных дистрибьютивов, предназначенных для использования в виртуализованной среде — но это не пользовательское решение.

Вообщем я пытаюсь плавно подвести к мысли, что обеспечить бесплатную или хотя-бы дешевую поддержку открытого ПО на домашнем компьютере массового пользователя является неподъемной задачей, при любых талантах и чтобы вам там не обещали создатели очередного дистрибьютива.

У Microsoft это получается за счет тесных связей с производителями оборудования, у Apple — за счет узкого набора поддерживаемого оборудования и обе компании активно используют и телеметрию и обучающие курсы и партнерские сети.

Это масштабная, сложная, дорогая и тяжелая работа — поддерживать широкие массы пользователей, именно поэтому как Windows так и MacOS являются платными.

У линукса и тем более BSD таких механизмов поддержки нет, поэтому все решения каких-либо проблем выглядят как пляски с бубном, колдовские ритуалы и откровенное шаманство:

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

Кнопки «починить все» (как в Windows) в открытых ОС нет и быть не может, по самой своей сути.

Суть выбора

Так что же вы тогда выбираете среди открытых операционных систем?

Возможно прозвучит странно или даже дико:

выбирая открытую операционную систему вы выбираете в первую очередь «тусовку»

Группу по интересам, которые разделяют ваши ценности и объеденены общим делом разработки и использования той или иной открытой ОС.

А все «технические отличия» в основном едут лесом, поскольку редко когда могут стать препятствием для настоящих пионеров при реальном использовании.

Разумеется они (отличия) существуют, но нивелируются личной заинтересованностью и опытом:

фанат BSD всегда сможет сделать больше чем админ, который изучал линукс только по работе и для работы.

Так это работает в случае открытого ПО.

Никакие курсы, книги и сертификация не заменят опыта использования Linux/BSD на рабочей станции — слишком большой пласт информации и понимания нужно освоить самостоятельно.

Причем большая часть такого к обыденным задачам системного администратора отношения не имеют (за них не платят), но нужны для более глубокого понимания работы ОС и открытого ПО.

Проблемы централизации

Теперь раскрою еще одну важную тему:

централизация или почему не стоит все силы направить в какую-то одну открытую ОС и один дистрибутив, закрыв все остальные проекты

Проще говоря зачем козе баян нужна FreeBSD когда уже есть Linux и Ubuntu.

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

При этом убрать этот функционал в нынешних реалиях является уже невыполнимой задачей, слишком много кода и настроек сборки.

Причем собранные самостоятельно ядра официально не поддерживаются ни одним вендором, отвечающим за тот или иной дистрибутив.

Если экстраполировать ситуацию и представить что Microsoft со своей Windows исчезли и Линукс вдруг стал занимать 50-60% рынка операционных систем, то внезапно окажется что на домашней машине у вас ровно такой же «монстр» каким сейчас является Windows.

Большая часть функционала такой «замечательной ОС будущего» будет предназначена не для вас, а для условного корпоративного пользователя из большой корпорации

Внутри будет телеметрия, через которую станут собирать отказы системы и проводить профилирование работы.

А живой вы в качестве пользователя со своими интересами снова будете не нужны - как это сейчас есть в Windows и MacOS.

Доступа к разработчикам операционной системы, компетентным в той или иной технической матчасти у вас не будет, (попробуйте достучаться до разработчиков Windows Core, ради интереса), если только вы не арабский шейх и готовы выкладывать совсем уж космические деньги за поддержку.

А все возможные решения ваших проблем сведутся к просьбе сменить оборудование на «поддерживаемое», «перезагрузиться» и «переустановить».

В такой ситуации, небольшое (по сравнению с Линуксом) коммьюнити BSD систем как раз и является последним шансом быть услышанным и получить решение вашей проблемы.

Разумеется я не собираюсь упрощать и рассказывать что «напишите BSD-шникам — вам помогут с любой проблемой», это далеко не так.

Но хотя-бы шанс на общение непосредственно с разработчиками ОС, на то что вашу проблему возможно услышат и подскажут направление — многократно лучше чем глухая стена в случае Windows/MacOS и большинства популярных дистрибьютивов Линукса.