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 ()

Ах-ах, такое яростное нарушение unixway этот systemd)) Ну просто всех пунктов)

А что делает logind и кому он нужен, кстати? Форкнули б уж.

Предсказываю много негатива в адрес systemd, в ближайшее время)

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

ибо копипастеры предлагают использовать их копипасту

Апстарт не может быть копипастой системд, так как появился раньше.

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

Л.Поттеринг - чистейшей адекватности чистейший образец!

Я вам даже завидую - вас в этой жизни ещё ждёт столько удивительных открытий. Но то, что вы узнаете о Лёнчике, радости вам не принесёт. Просто предупреждаю.

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

Леннарт никогда слезливые посты не писал, как бы вам этого ни хотелось.

Образно говорю.

Спроси у LibreOffice и MariaDB, что они думают об этих «можно» и почему они решили, что нет, нельзя, несмотря на все проблемы связанные с таким решением.

Почему нельзя? Это ж обычные форки, не с нуля ж OO и MySQL переписывали. Что мешает таким же образом апстарт форкнуть, если не нравится оригинальный?

provaton ★★★★★ ()
Ответ на: комментарий от special-k

Как я понимаю, logind сделали вместо ConsoleKit, к которому успели привязать логин в систему и смену пользователей.

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

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

Это шутка такая?

fenris ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

Надеюсь Debian ОТКАЖЕТСЯ от systemd и выберет Upstart!

Меня вообще удивляет что они думают что выбрать. Казалось бы выбор очевиден. Помимо всех преимуществ конкретно для Debian, Upstart уже несколько лет просто работает без этих бурлений говн. Большинство пользователей даже не заметили его появления, полагая что у них ламповый sysvinit (он, кстати, и сейчас там работает, в режиме эмуляции).

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

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

переформулируй, плз? openrc не реализует pid-1 это замена sysv5-rc, а не sysv5-init.

qnikst ★★★★★ ()

говноd не пройдет! Леннарт - <зацензурено>, Патрик - молодец!

Надеюсь, в Debian все-таки возьмут на вооружение openrc или upstart.

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

Ну ты мне просто открыл глаза на мир.

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

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

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

они ж не выкинули ещё поддержку openrc, а вот чем закончилась история с eselect-init я даже не в курсе. там основная проблема была в завязке logind на cgroups-api..

qnikst ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

Надеюсь Debian ОТКАЖЕТСЯ от systemd и выберет Upstart!

Меня вообще удивляет что они думают что выбрать. Казалось бы выбор очевиден. Помимо всех преимуществ конкретно для Debian, Upstart уже несколько лет просто работает без этих бурлений говн. Большинство пользователей даже не заметили его появления, полагая что у них ламповый sysvinit (он, кстати, и сейчас там работает, в режиме эмуляции).

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

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

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

Наверное то, что форкать апстарт и потом дописывать в него новые фичи, по усилиям примерно сопоставимо с написанием systemd с нуля.

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

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

Так там, судя по посту, и вся проблема в том, что компатибилити не получится благодаря тому, что systemd представляет собой тарелку спагетти, к которым намертво приклеены тефтели (по заверению автора, являющиеся неотъемлемой частью спагетти). Автор при этом оправдывается, что при использовании вилки со встроенным плазменным резаком всё отлично.

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

Выходит в 13.10 уже используется logind, значит оторвали, молодцы какие)

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

Моя опенсьюс при старте показывает Plymouth, потом пишет в лог «не системд - отключаем Plymouth». Тем не менее, в убунте работает. Правда несколько дней назад мне говорили что «никогда не видел чтобы Plymouth где-нибудь глючил, кроме убунты».

ZenitharChampion ★★★★★ ()
Последнее исправление: ZenitharChampion (всего исправлений: 1)
Ответ на: комментарий от special-k

там заморозили версию, новую не оторвали.

qnikst ★★★★★ ()
Ответ на: комментарий от special-k

А что делает logind и кому он нужен, кстати?

Этого никто не знает. Об том и пост.

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

Мэм!
Дык, эта, реальные проекты - это когда за реальные деньги.

Поттеринг, если повар нам не врёт, тоже не стеклотару по помойкам собирает (а вовсе наоборот, миллионщик в доллярах) -
но, имхо, он ближе к напёрсточникам, нежели к основательным ремесленникам.

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

Перевод очень корявый, а ещё если уж делать перепост записи из личного блога Патрика, стоило бы дать контекст.

Для вброса важен прежде всего сам вброс а не контекст.

Sabayon пытались поддерживать одновременно systemd и init-скрипты, и у них ничего не получилось.

Таки оверлей sabayon/systemd-love решает! Там фактически сделано все для того чтобы на одной системе одновременно иметь и openrc и systemd.

Так что 4.2 наглое и гнусное!

И абсолютно другой вопрос это как у них в дистре на самом деле обстоят с этим дела.

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

Так что, всё же оторвал системд от суси?

anonymous ()

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

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

Ну хоть старую оторвали. А те ее поменяли сразу.. такой вот шапконакидательский опенсорс.

special-k ★★★ ()
Последнее исправление: special-k (всего исправлений: 1)
Ответ на: комментарий от Oreolek

На systemd уже завязан новый GNOME - пока что не очень крепко, но всё-таки, а так как systemd - это макросистема на 200k строк кода, то из неё нельзя выдрать минимум для совместимости, а можно только полностью пересесть.

В свежих гномах был завязан на systemd исключительно один gdm. Ну и кроме него я не исключаю того что возможно и что то еще. Т.е. чуть менее чем весь gnome вполне прекрасно обходится без systemd.

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

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

Вообще-то адекватные разработчики как раз и работают в реальных проектах, пока сферические леннарты в очередной раз переписывают очередную прокладку. Адекватному разработчику в голову не придёт переписывать какие-то системы инициализации, он пишет код, который решает реальные задачи: веб-сервисы, СУБД, офисные пакеты, САПР...

Ёпт, да даже php-фрилансер, умеющий настраивать полторы CMS, более адекватен. Туп, но адекватен.

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

За наперсточниками - это к Марку. А Леннарт придумывает архитектуру(разумеется не с чистого листа, но компилировать витающие в воздухе идеи тоже надо уметь), пишет настоящий работоспособный код, умеет доводить свои проекты до серьезного уровня и защищать свое детище перед технической тусовкой.

Если ты думаешь, что это за одни красивые глаза дается, ты ошибаешься.

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

Наверное то, что форкать апстарт и потом дописывать в него новые фичи, по усилиям примерно сопоставимо с написанием systemd с нуля.

Специалист по соркам апстарта в треде!

Интересно, федоровцы во всех областях такие же эксперты?

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

Ты что сказать-то хочешь? Давайте все писать код на php?

alpha ★★★★★ ()

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

special-k ★★★ ()
Последнее исправление: special-k (всего исправлений: 1)
Ответ на: комментарий от vurdalak

Вода-вода, ни одного технического аргумента.

Чем не аргументы?

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

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

А Леннарт придумывает архитектуру

Странно, я такую «архитектуру» на первом курсе универа придумывал. Почему я не долларовый миллонер, а?

пишет настоящий работоспособный код

Еще одна экспертная оценка от alpha. Специалистка.

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

Ты что сказать-то хочешь? Давайте все писать код на php?

Вот видишь, ты даже не поняла, что я хочу сказать. А еще берешься тут об адекватности рассуждать.

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

Половина «ненависти к убунте с её апстартом» обусловлена наличием CLA.

Это проблема?

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

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

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

mashina ★★★★★ ()
Ответ на: комментарий от special-k

Ах-ах, такое яростное нарушение unixway этот systemd)) Ну просто всех пунктов)

А каких нет?

  • Small is beautiful.
  • Make each program do one thing well.
  • Build a prototype as soon as possible.
  • Choose portability over efficiency.
  • Store data in flat text files.
  • Use software leverage to your advantage.
  • Use shell scripts to increase leverage and portability.
  • Avoid captive user interfaces.
  • Make every program a filter.
Lothlorien ★★★ ()
Ответ на: комментарий от alpha

витающие в воздухе идеи

Это какие, если не секрет? Ну, в чём там у него ах-хрене-е-еть какая революция?

защищать своё детище

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

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

Документация там есть. А что значит непортируемый API? API это спецификация, куда ее нужно портировать?

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

А Леннарт придумывает архитектуру

Я не великий архитектор ПО, но даже я понимаю, что хорошая архитектура подразумевает хорошо продуманные слои абстракции и ортогональность компонентов. В системд этого всего нет, там просто каша. У Леннарта продумывание архитектуры идет по принципу «у нас возникли сложности во взаимодействии с компонентом X, давайте его выкинем и встроим аналог в наш монолит».

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

Ни разу за все время не понадобились какие-либо специфичные фичи systemd

А какие у systemd специфичные фичи?

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

А Леннарт придумывает архитектуру

Гугли coupling and cohesion пожалуйста. Архитектура, которую придумывает Леннарт - какашка.

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

Build a prototype as soon as possible.

Этот не нарушил вроде.

Store data in flat text files.

И этот.

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

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

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

А что значит непортируемый API?

Подразумевается, что этот API могут быть реализованы только в самом systemd. Leaky abstraction.

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

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

ЧСХ, для альфы это нормально, она же женщино. Эврика! Так может Ленарт тоже... женщино?

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

Почему я не долларовый миллонер, а?

Задумайся над этим вопросом.

Еще одна экспертная оценка

Я не пытаюсь оценивать того чего не понимаю. Я говорю о работоспособности. Как бы вы тут не пытались судить о качестве кода, его модульности, точнее её отсутствии и тому подобных проблемах, факт того, что он работает, у него не отнять.

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

Жуть. Ты представляешь, какое потомство они произведут?..

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

факт того, что он работает, у него не отнять.

Винда 95 тоже работала...

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

пишет настоящий работоспособный код

Большое достижение, очень хорошее.

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

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

Если систему выключить кнопкой reset, то при следующей загрузке journalctl -f будет гонять лог в бесконечном цикле. Багу 2 года. Не пофикшен.

И вот так там - всё.

Отлично работоспособен. Если компьютер не включать.

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