LINUX.ORG.RU

Разработчик из команды Gentoo выступил с критикой systemd

 ,


11

4

Большую бурю споров вызвала сегодняшняя запись в блоге одного из участников команды Gentoo Linux Патрика Лойера. В ней он с критикой прошёлся по systemd, её концепции и разработчиках.

Ниже привожу свой перевод его публикации.

Пропагандистам Systemd: это отстой!

Сегодня я получил ссылку на пост Леннарта Поттеринга по итогам обсуждений в листах рассылки Debian ... хм... даже толком не знаю о чем.

Поэтому мне хочется разобрать все по полочкам.

Разработчики ядра хотят, чтобы в юзерспейсе существовала система разрешения конфликтов для CGroups. В системах с systemd этим как раз systemd и является, и вам не удастся лишить ее этой функциональности.

Без понятия, что это значит, наверное они хотели сказать «нам лень».

Я уверен, что ребята из Ubuntu даже близко не понимают сложности этой проблемы.

Забавное косвенное оскорбление, но CGroups *не* сложные. Я убежден, что понимаю их общую концепцию, сегодня днем я уже успел написать начальную поддержку OpenRC.

Разумеется, Control groups лежат в основе того, что требуется от современных серверов.

... что? Нет. Сервер должен служить (и защищать? постойте, не тот девиз). CGroups - просто еще одна технология, которую будут игнорировать сисадмины. В ней нет никакой магии, она не сложнее работы с ulimit.

API, предлагаемый systemd, очень systemd-специфичный.

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

Ясно, что сейчас большая часть экосистемы Linux уже использует API systemd...

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

В принципе демон D-Bus уже реализован внутри самой systemd (и в ядре), и логика работы не уже может обходиться без него. Фактически при переходе на systemd логика работы распределится на несколько демонов, которые для активации должны быть описаны в юнит-файлах .busname и .service, а не в старых конфигурационных файлах.

Так, давайте с этого и начнем. Идея состоит в том, чтобы прибить все гвоздями к systemd так, чтобы появление альтернативных систем оказалось бы просто невозможным из-за отсутствия документации, непортируемых API, то есть неверных абстракций, которые вообще не имеют смысла без той штуки, которую у них не получается абстрагировать? И зачем, черт возьми, мне надо патчить описание каждого демона? Все работало уже десятки лет безо всяких хаков.

Теперь один из самых сложных компонентов - перегруппировка сервисов, преобразование старых dbus1 сообщений в kdbus GVariant, преобразование их обратно в сокет-сервис systemd, и это из sysetmd не вырвать даже с корнями.

Нет, с такого суждения начинать нельзя. Кто-то задастся вопросом: а почему форматы сообщений kdbus и dbus отличаются, когда одна система есть замена другой? И только то, что это часть sysetmd и она никак не документирована, еще не означает, что ее нельзя аккуратно вырезать и заставить работать отдельно или написать с нуля как самостоятельный инструмент. Игнорирование (или непрофессионализм?) в приведении этого утверждения заставило меня вспомнить пользователей windows, которые ругают Linux потому, что в нем нет красивых GUI...

Разумеется, logind - один из тех компонентов systemd, в документации которого мы явно указали, что его никак нельзя убрать.

Если вы так написали, еще не значит, что так оно и есть. Но это отличная попытка пресечь дискуссию заявив, что альтернатив нет, нам так нравится и вообще заткнитесь, как говорят политики. logind это не программа, поэтому у нее нет описания архитектуры или корректной документации, что она делает. Это просто API, зашитый в systemd так сильно, что понять его - большая головная боль. Единственное, что сдерживает меня от написания подобного инструмента с такой же функциональностью, это то, что понятия не имею, что он должен *делать*... Для меня нет никакого удовольствия читать код всей systemd, чтобы это выяснить. Но, исходя из того, что я знаю сейчас, в реализации ее нет ничего особенного.

Спустя несколько месяцев после того, как это сделали в Canonical, все снова cломалось, как мы и ожидали: сейчас logind использует новые API для работы с CGroups.

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

...связывающий слой в юзерспейсе Linux в настоящее время разрабатывается как большая часть systemd.

«Мы теперь даже не прикидываемся, что понимаем философию Unix.» Репозиторий systemd - скорее помойка, чем что-то еще, его нужно разделить (на подмодули), чтобы независимые компоненты были независимыми. НЕТ никакого смысле держать в одном репозитории udev, hwdb или еще десяток несвязанных друг с другом вещей.

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

Учтите, что logind, kdbus или CGroups - это новая технология, мы ничего не поломали, просто написав их. Следовательно нет никакой регрессии, мы просто добавили новые компоненты, которые, по нашему мнению, будут крайне интересны пользователям.

CGroups - «старая» штука, новое - это просто заставлять всех использовать их по-другому. Это противоречит документам по разработке systemd, которые теперь считаются неверными после того, как были Единственной Верой для нас в течение нескольких лет. Сложно понять, что сегодня в меню, когда оно меняется так часто...

И может быть, если кто-то нормально напишет, что должен делать LoginD (а не просто даст дамп API, который никому ни о чем не говорит, чукча не читатель!), мы смогли бы выполнить правильную реализацию где угодно и не заставлять людей ломать свои системы, чтобы наконец logind делал то, что должен делать. Свинпаук, свинпаук делает то, что он делает [прим. ссылка на «Симпсоны в кино»]

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

... простой? По-моему это слово означает не то, что вы думаете! (Не для 200 тысяч строк кода для того, что можно быть написать и в 35 тысячах.)

Я просто надеюсь, что вы делаете это, зная, что это всерьез и надолго.

Итак, подведу итог. Никто не сможет реализовать то, что делает systemd, и поэтому вы вынуждены ее использовать. Это так прекрасно, что не стоит даже пытаться искать что-то еще!

Простое чтение этой пропаганды очень меня расстроило своим уровнем лжи и запутывания, не понимаю, как у нас может получиться нормальная дискуссия с ними. Все доводы либо логически противоречивы («Никто не может написать logind без использования logind») или ошибочны («Cgroups лежат в основе того, что требуется от современных серверов»).

В то же время все, кто с ними не согласен - старообрядцы... или неграмотные... или кто угодно. В любом случае, ВЫ КОЗЛЫ и я победил в споре! или что-то такое.

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

>>> Подробности

★★★★★

Проверено: JB ()

Ответ на: комментарий от vasily_pupkin

1. Тебе не кажется, что это забота дистростроителей?

2. Может, в моем дебиане достаточно сделать update-rc.d, чтобы включить local.

3. А що, с системд nm уже не работает? Или эта поделка нон-стоп дергает сисцтл с целью выяснить хостнейм? К слову, сколько живу - ни разу не видел, чтобы nm менял хостнейм.

permission denied

специально для тебя начну ставить # перед командами.

leave ★★★★★ ()
Ответ на: комментарий от vasily_pupkin

Что значит - единственный?

это значит, что других линуксов у нас нет. Вообще. А апстартов/sysv/initng и прочего - вагон и маленькая тележка.

leave ★★★★★ ()
Ответ на: комментарий от vasily_pupkin

Впрочем, с современным «эмбеддедом» это максимально не актуально.

у меня такое ощущение, что твой эмбед - это киоски. Запили мне в openwrt системд, пожалуйста.

leave ★★★★★ ()
Ответ на: комментарий от vasily_pupkin

нужен протокол

для смены хостнейма? u kiddin me?

leave ★★★★★ ()
Ответ на: комментарий от init_6

Ты серьезно сравниваешь ядро ОС с пускалкой демонов? К слову о ядре - с добавлением дубаса оно упростится или наоборот?

leave ★★★★★ ()
Ответ на: комментарий от leave

Тебе не кажется, что это забота дистростроителей?

Не-а. У меня проприетарная поделка, которая должна поменять хостнейм, и должна работать на «линаксе», например.

Может, в моем дебиане достаточно сделать update-rc.d, чтобы включить local.

Никто не сомневается с тем, что в дистрибутиве X можно сделать Y что-бы получить Z

А що, с системд nm уже не работает?

Работает.

ни разу не видел, чтобы nm менял хостнейм

А это зависит от дистростроителей и бекенда его конфигурации

специально для тебя начну ставить # перед командами.

Специально для меня ты написал про пользователя :]

vasily_pupkin ★★★★★ ()

А вообще gentoo, в данный момент, имеет очень большие преимущества поскольку у нас есть:

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

init_6 ★★★★★ ()
Ответ на: комментарий от leave

это значит, что других линуксов у нас нет

У нас так же нет других апстартов, системде и дедбифов

vasily_pupkin ★★★★★ ()
Ответ на: комментарий от vasily_pupkin

ммм... что-то не припоминается навскидку фактов _насильного_ пропихивания апстарта. хотя могу быть и не в теме...

Гспди, это система инициализации! Не оракл какой-нибудь, не сап, и даже не система мониторинга. Какое изучение?

увы, с агрессивной политикой впихивания в системд всего «рядом лежащего» - это уже не только инициализация :(
я наступал уже на грабли, связанные с приколами системд _после_ инициализации... А сколько, судя по всему, этих грабель ещё впереди ...

Ager ()
Ответ на: комментарий от leave

для смены хостнейма?

Желательно для всего, в т.ч. и для этого

vasily_pupkin ★★★★★ ()
Ответ на: комментарий от leave

Ты серьезно сравниваешь ядро ОС с пускалкой демонов?

А как свалка в одном может отличатся от свалки в другом? По моему в этом плане они как раз очень похожи.

init_6 ★★★★★ ()
Ответ на: комментарий от Ager

_насильного_

А где у нас в опенсорсе вообще факты насильного пропихивания чего-либо?

vasily_pupkin ★★★★★ ()
Ответ на: комментарий от vasily_pupkin

Systemd, pulseaudio. Это то что на вскидку, и да поделия одного автора.

zunkree ()
Ответ на: комментарий от leave

Запили мне в openwrt системд, пожалуйста.

Ну, в мой openwrt влезет не только systemd, при желании

# free
             total         used         free       shared      buffers
Mem:         29416        13988        15428            0         1364
-/+ buffers:              12624        16792
Swap:            0            0            0
vasily_pupkin ★★★★★ ()
Ответ на: комментарий от Ager

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

anonymous ()
Ответ на: комментарий от zunkree

Можно подробнее про насилие? А то может быть у нас тут и линакс насильно пропихивают

vasily_pupkin ★★★★★ ()
Ответ на: комментарий от init_6

Тут есть принципиальное НО, linux - ядро ОС. Его задача скрывать от программиста потроха железяки за всякими libc и иже с ними. Весь бардак, которого там немного, проистекает из зоопарка поддерживаемых архитектур. Но линукс не смог бы развиваться если бы в его основе была бы такая же каша как и в поттеринговских поделках. API модифицируется постоянно и это проблема тех кто пишет модули ядра. Но все не так страшно, железки ведь тоже не вечные, тащить поддержку mfmовских контроллеров сейчас вроде никто не собирается. А unix появился еще до них и будет развиваться дальше. Если начинать пихать плохо продуманные решения в userspace то мы приплыли, вместо линукса будет «Винда нищеброд едишн».

A-234 ★★★★★ ()
Ответ на: комментарий от zunkree

Systemd, pulseaudio. Это то что на вскидку, и да поделия одного автора.

pulseaudio была просто необходима как замена r.i.p-нутому esd. Кто то мешал или все еще продолжает мешать написать ему альтернативу? По моему нет. Так вот pulseaudio никто насильно не впихивал. pulseaudio выстрелил поскольку на момент его появления ему попросту не было альтернатив.

init_6 ★★★★★ ()
Ответ на: комментарий от A-234

Тут есть принципиальное НО, linux - ядро ОС.

Свалка есть свалка! И бардак есть бардак! А в gnu/linux дистрах свалка еще начиная с ядра и все остальные свалочки на его фоне несущественны.

init_6 ★★★★★ ()
Ответ на: комментарий от vasily_pupkin

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

zunkree ()
Ответ на: комментарий от zunkree

Зачем тогда пользоваться дистрибутивами которые вас насилуют? Используйте FreeBSD/slackware. Там тихо и уютно

vasily_pupkin ★★★★★ ()
Ответ на: комментарий от tailgunner

Оки-доки. Приношу извинения за свою излишнюю торопливость.

ins3y3d ★★★★★ ()
Ответ на: комментарий от anonymous

процесс «улучшения» идет... но, имхо, слишком неторопливо :(
пульсу, например, почти довели «до ума»

но разговор о _важности_ компоненты. Не заведётся звуковушка у хомячка - ну и хрен с ним. А вот трудно предсказуемая загрузка/дальнейшая работоспособность системы - вот это писец...

Ager ()
Ответ на: комментарий от vasily_pupkin

Так Я и пользуюсь тем что меня не насилует. Но вот, вероломно, без объявления войны устроить своим пользователям страдания это и есть насильно.

zunkree ()
Ответ на: комментарий от vasily_pupkin

ну ёлы-палы ... Ну оставьте в покое гордых админов локалхостов, которые из спортивного интереса могут хоть каждый божий день ставить новую систему «на попробовать»
А ведь есть несчастные люди, которым от этого _на работе_ никуда не деться :( Не прячьте голову в песок - в этом же треде «головная боль» человека, у которого в продакшене куча серваков, которые нужно будет переводить на системд...

Ager ()
Ответ на: комментарий от vasily_pupkin

Лорчую. Судя по количеству комментариев, тут у многих конкретно бомбануло.

gwinn ★★★★ ()
Ответ на: комментарий от erzent

нужен рабочий скапй= Pulseaudio ,иначе групповое общение закрыто....

1. Скайп работает и без пульсы.
2. Как групповое общение может быть связано с аудио? Если голос проходит p2p, то и при групповом общении он так же пройдет.

andreyu ★★★★★ ()
Ответ на: комментарий от reprimand

Я бы на месте Патрика Лойера написал бы свой system2d

А почему не system3d, с поддержкой аппаратного ускорения графического адаптера?

andreyu ★★★★★ ()
Ответ на: комментарий от vasily_pupkin

оппаньки :) То есть вся эта истерия вокруг системд - это вот просто потому, что кому-то на форуме писать больше не о чем?
Увы, вынужден Вас расстроить - не пихали бы эту кривую поделку «силом» - никто бы о ней и не вспоминал

Ager ()
Ответ на: комментарий от gwinn

Судя по количеству комментариев, тут у многих конкретно бомбануло.

И это единственное неоспоримое достижение поцеринга и systemd.

tailgunner ★★★★★ ()
Ответ на: комментарий от init_6

Вы в код этого поццерингского поделия заглядывали? Сравнивали с ядром? Если бы в ядре было бы так же, как в systemd, ядро было бы почти невозможно менять/отлаживать/дополнять. Если что - был и там и там, могу сравнивать.

Tribunal ()
Ответ на: комментарий от Ager

А ведь есть несчастные люди, которым от этого _на работе_ никуда не деться :( Не прячьте голову в песок - в этом же треде «головная боль» человека, у которого в продакшене куча серваков, которые нужно будет переводить на системд...

Ну я не знаю что тут можно сказать. Причем тут системде? Тут виноват апстрим дистрибутива. С тем же успехом они могут запилить любую другую несносную хрень. Как вам connman например по дефолту? :D

Стоит отметить, впрочем, что для продакшена стараются держать стабильную ветку как можно дольше. При особом нежелании мигрировать можно оставаться даже после окончания срока поддержки. У нас вот кастомеров на RHEL 4 хватает, например, приходится кросскомпилировать (%

vasily_pupkin ★★★★★ ()
Ответ на: комментарий от Tribunal

Вы в код этого поццерингского поделия заглядывали?

Код системде хакабельный, проверено

vasily_pupkin ★★★★★ ()
Ответ на: комментарий от Ager

То есть вся эта истерия вокруг системд - это вот просто потому, что кому-то на форуме писать больше не о чем?

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

vasily_pupkin ★★★★★ ()
Ответ на: комментарий от vasily_pupkin

Это да, но у нас так студенты на первом курсе пишут, потом их бьют по рукам и учат писать нормально. У меня чуть глаза не вытекли от всех этих захардкоженных констант, goto, объявлений вроде int r; И так далее.

Tribunal ()
Ответ на: комментарий от Tribunal

Не хочу оправдывать, но в этом стиле есть своя особая прелесть, в неперегруженности, что ли. Перечисленное там действительно фигурирует на уровне требования к стилю. Иначе патчи не примут, например (%

vasily_pupkin ★★★★★ ()
Ответ на: комментарий от vasily_pupkin

Не-а. У меня проприетарная поделка, которая должна поменять хостнейм, и должна работать на «линаксе», например.

А это зависит от дистростроителей и бекенда его конфигурации

прекрасно

Никто не сомневается с тем, что в дистрибутиве X можно сделать Y что-бы получить Z

Ein linux, ein Systemd, ein Lennart

Специально для меня ты написал про пользователя :]

демагогия такая демагогия

leave ★★★★★ ()
Ответ на: комментарий от vasily_pupkin

Дальнейшего желания кормить тролля у меня нет, разговор окончен.

leave ★★★★★ ()
Ответ на: комментарий от vasily_pupkin

Вот просто кусочек кода: for (;;) Выход из бесконечного цикла по goto Там же простыня «case» на несколько экранов. Получается, что мой патч не примут, как слишком сложный, даже если я его комментариями обвешаю. У Поттеринга с комментариями туго.

Tribunal ()
Ответ на: комментарий от init_6

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

leave ★★★★★ ()
Ответ на: комментарий от leave

разговор окончен

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

vasily_pupkin ★★★★★ ()
Ответ на: комментарий от init_6

r.i.p-нутому esd

я балдею от того, как гнумеры себя ассоциируют со всем гнулинуксом сразу.

leave ★★★★★ ()
Ответ на: комментарий от vasily_pupkin

Причем тут системде?

потому что это хафно приходится запихивать в дистрибутивы, что сказывается на пользователях этих дистрибутивов. Причем если мне не нравится программа x, то я ее не использую - это просто apt-get remove x

А что мне делать с это хренью? Только бежать на др. дистрибутив... Т.к. без это хрени или вообще не работает нифига или попадаешь лет так на 10 назад - когда чтоб даже флешку смонтировать или ползешь в терминал или костыли городишь...

anonymous ()
Ответ на: комментарий от vasily_pupkin

Как вам connman например по дефолту? :D

Не знаю, не пробовал :)

Причем тут системде?

Речь идет о «весовой категории» и о заменяемости ПО.
Если придется столкнуться - тот же самый connman (настройка сети, если не путаю?) возможно, удастся или безболезненно выпилить, или не использовать и настроить другой механизм.
А вот выпилить/не использовать системд - увы...

Стоит отметить, впрочем, что для продакшена стараются держать стабильную ветку как можно дольше.

И слава Богу!!!
Пока все разговоры про системд - хомячковые писки :)
Трэш начнется с появлением на рынке RHEL 7. А может не начнётся - если количество его инсталляций будет немного меньше, чем чуть-чуть :)

Ager ()
Ответ на: комментарий от leave

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

Что что?

init_6 ★★★★★ ()
Ответ на: комментарий от init_6

Покажи мне свой _рабочий_ локалхост на хурде, и я принесу публичные извинения.

leave ★★★★★ ()
Ответ на: комментарий от Ager

А вот выпилить/не использовать системд - увы...

Выпелив системде можно потерять лишь апи системде. Если у вас есть желание его выпилить, значит оно вам не нужно. Следовательно если вы его выпилите, вы ничего не потеряете. Я не вижу проблемы.

Трэш начнется с появлением на рынке RHEL 7

Даже если инсталляций будет больше чем чуть-чуть - не начнется. В системде страшного не больше, чем в карабасе-барабасе

vasily_pupkin ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.