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

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

Т.е. чуть менее чем весь gnome вполне прекрасно обходится без systemd.

что прекрасно подтверждается OpenBSD (3.8.3)

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

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

Старый код ВНЕЗАПНО работал. Его все знали, его поддерживали мэйнтейнеры. Сейчас ВНЕЗАПНО налетел Леннарт и стал ломать старый код. Его код может и работает, но от перехода на него один геморрой, а профита, кроме как для ЧСВ Леннарта, ни для кого нет.

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

Что значит «подразумевается»? Апи либо можно использовать (есть модуль, который слушает вызовы), либо нельзя.

vurdalak ★★★★★ ()

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

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

поцеринг же говорил, что они не смогут, а они смогли :)

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

сустемд - это заминание под себя линукс-экосистемы

И wayland!

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

Что значит «подразумевается»? Апи либо можно использовать (есть модуль, который слушает вызовы), либо нельзя.

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

По прибиванию гвоздями возражений видимо нет?

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

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

Нерассуждающая родительская любовь.

Мощно вырвал из контекста, молодец.

«идеи витающие в воздухе» и «революция» - это противоречащие понятия. Точно также как journald не открывает америку, а реализует то, о чём rsyslog 10 лет мечтал и всё собирался сделать, так и systemd всего лишь реализует то, о чём все думают «на первом курсе университета». Дерево зависимостей, унификация юнитов, socket-activation эта самая, автоматический перезапуск упавших сервисов, cgroups и многое другое.

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

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

Речь шла не о том, чтоб использовать АПИ, а о том, чтоб написать компонет, реализующий это АПИ.

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

Так в чем сложность-то? Вот конкретно, что не заработает в этом компоненте?

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

УМВР. ты что-то определенно делаешь не так. или неосилил dmix.

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

так и systemd всего лишь реализует то, о чём все думают «на первом курсе университета».

Бинго! Наконец-то до тебя дошло.

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

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

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

И именно поэтому в продакшене этому говну не место. Заобеденные эксперименты должны оставаться на своём месте.

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

Так в чем сложность-то?

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

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

что прекрасно подтверждается OpenBSD (3.8.3)

Да. Просто тут по ходу важнее вбрасывать в тему „все плохо. systemd все зохавал.“

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

Вылезь с ЛОРа в большой мир и почитай дискуссии по теме. Это очень больная тема в современном open-source сообществе.

LibreOffice, MariaDB, CyanogenMod, KDE vs Canonical - это только самые заметные примеры конфликтов, которые возникают на почве CLA и трудностей в общении открытых проектов с коммерческими компаниями, которые оно порождает.

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

Потому что к пятому крусу люди обычно умнеют.

И вместо реализации своих идей переходят к флуду на лоре?

Грустно.

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

Аргумент уровня «плазма падает».

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

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

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

(раз) Систем-дэ - бытовых проблем не вызывает
Но только одно - и без неё прекрасно можно обходиться.
А вот во встраиваиваемых системах и их человечьих интерфейсах -
обходиться без неё становится непреложным условием. Потому что
(два) формируется она по принципу обоза татарской орды -
о, какая хрень занятная, а у нас такой ещё нету, ай беда невыносимая!

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

факт того, что он работает

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

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

Так в чем сложность-то? Вот конкретно, что не заработает в этом компоненте?

Цитата из стартового поста:

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

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

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

И вместо реализации своих идей переходят к флуду на лоре? Грустно.

Грустно - это когда взрослые люди пытаются взрослому миру навязывать свои ясельные идеи. Еще грустнее - когда находятся такие, которые их в этом поддерживают.

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

Contributor License Agreement. Там проблема в том, что контрибуторы отказываются от копирайта в пользу убунты. Следственно убунта являясь единственным держателем копирайта может потом изменить лицензию софта на другую, даже полностью закрытую.

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

Уж и поразвлекаться нельзя в редкую свободную минутку :(

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

Что вы там делаете с ALSA? Сколько пользуюсь уже, узнаю об этих проблемах только на ЛОРе.

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

Contributor License Agreement.

А при чём тут «LibreOffice, MariaDB, CyanogenMod, KDE vs Canonical» не подскажешь? А то я не распарсил.

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

А он в чем? Совместимость с х11 делают, велосипедов не напилили(всё на готовых ядерных интерфейсах), тулкиты работают там и там... Закапывать х11 никто не собирается. В чём же?

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

похоже, пора писать велосипед, который внешне похож на pulseaudio/systemd...

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

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

Ну наверное она намекает на то, что комьюнити пришлось форкать код из-за невозможности контрибутить в основную ветку проекта из-за ЦЛА. А вообще хз.

provaton ★★★★★ ()

феерично

Флеймообразующий пост Леннарта - строго в толксах, ещё более флеймооразующий пост гентушника - усраться новость для глагна. У модерастов на почве ненависти к systemd окончательно крыша протекла.

anonymous ()
Ответ на: феерично от anonymous

Re: феерично

Флеймообразующий пост Леннарта - строго в толксах, ещё более флеймооразующий пост гентушника - усраться новость для глагна. У модерастов на почве ненависти к systemd окончательно крыша протекла.

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

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

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

special-k ★★★ ()

Вы все не правы, хотя каждый неправ по своему.

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

Читай дальше, dmix я пробовал в разных вариантах и конфигах (в т.ч. без оных).

vurdalak ★★★★★ ()

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

Если вы так написали, еще не значит, что так оно и есть.

браво. мои апплодисменты разрабам gentoo.

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

Уши пойди купи нормальные себе и к голове клеем приклей.

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

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

Имхо, всё наоборот. Мечта лора — это сказал «ненужно», и оно само закопалось. С Поттерингом же не так. Мужик сказал «ненужно» — мужик взял лопату и закопал. Плохо или хорошо — отдельный вопрос, но закопал же. А лоровская публика — как бабки на лавочке: языком почесать — да пожалуйста, взять лопату — да ну её нафиг.

anonymous ()

Повторюсь, что согласен с Патриком Лойером. Если не остановить этот омерзительный анти-unix-way-ный systemd, то это может привести к прирастанию этого к ядру Linux. И потом уже станет убожеским стандартом, вынуждающим разработчиков привязываться к нему.

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

Странно, что это понимает бОльшинство на ЛОРе (окроме совсем упоротых), но не понимают майнтейнеры. А вообще, рад за Gentoo.

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

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

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

Потому что придумать мало. Надо ещё брать виляки и таскать говняки.

-- another anonymous

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