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 и большинства популярных дистрибьютивов Линукса.