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

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

И то, что все сделали так, что без системд новую систему будет использовать невозможно.

И без dbus новую систему использовать невозможно. И без libc новую систему использовать не возможно. Это нормально.

Когда системд зафиксируется и стандартизируется (пускай не скоро и не полностью, но рано или поздно это случится), ему напишут замену. Или, что на мой взгляд вероятнее, распилят текущий на куски и сделают более независимым.

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

Зачем мучиться

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

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

это смотря как он прибьёт,может намертво с гномом.

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

anonymous ()

Какая разница? К десктопу не готов!

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

Вот только не надо теперь ждать пока припрёт.

Ну не жди. Возьми гвоздодёр и отбей сейчас.

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

Мы рассматриваем чисто гипотетическую ситуацию в которой systemd прибит гвоздями к линуксу

А сейчас он не прибит?

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

можно,тк за ним надо будет 1001 зависимость урегулировать и находить замену,в короткие сроки это не реально.

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

Какая разница? К десктопу не готов!

Никакой разницы, десктоп умер, идёт эра облачных планшетов и html5.

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

в короткие сроки это не реально.

А зачем делать это в короткие сроки? Рабочая версия под гпл есть? Пользуйся и пили в своё удовольствие.

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

А сейчас он не прибит?

Нет, сейчас он не прибит.

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

а потом же еще ответ поцеринга будет, запасаемся поп-корном)

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

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

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

поцеррингу надо русскую тп в жёны дать,она его будет избивать каждый день и он перестанет кодить .

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

сделать собственный init

А разве systemd это система инициализации?)

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

emacs больше не актуален как ОС

Ждём через пару лет шутки: «systemd неплохая ОС, только инит в ней не очень».

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

Ты видел код этого поделия? Там функции по 1.5k строк считаются нормой. Я бы не стал ковыряться в подобном болоте ни за что на свете.

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

Проблема в том, что это не шутка)

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

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

Ты видел код этого поделия? Там функции по 1.5k строк считаются нормой.

Нет не видел. Пруфлинк?

Ну и да, ты бы не стал, а кто-то из принципа станет.

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

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

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

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

Нет, там нет функций на 1.5к строк

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

Startup finished in 1.812s (kernel) + 804ms (userspace) = 2.616s
+ около 8 сек на загрузку ДЕ после логирования.

Т.е. смысла в системд 0 целых 0 десятых? Ну дак никто и не спорит...

Так как ловить десяток процентов на 2 секундах, чтоб грузить ДЕ 8 секунд, с учетом большого промежутка времени от включения до появления загрузчика...

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

Они есть в udev (который теперь часть проекта) и dbus (который леннарт активно толкает вперед). kdbus, слава богу, линус в ядро не пустил.

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

Они есть в udev (который теперь часть проекта) и dbus (который леннарт активно толкает вперед).

Пруфлинк?

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

Самое интересное тут: https://wiki.debian.org/Debate/initsystem/systemd, секция Upstart vs Systemd. В апстарте не сумели запилить всё, потому тут и торчат куски shell скриптов

есть openrc, там нет никаких shell-scripts в виде bash, sh etc., там #!/sbin/runscript - это 36kb C-code

вас обманывают, тесты производительности это подтверждают.

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

dbus

По-твоему, событийная шина не нужна в системе? Каким образом тогда приложения будут общаться между собой?

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

В openRC нет даже socket-activation и нету даже собранного пакета, так что может он и хорош, но дебиановцам как-то трудно судить - хочется попробовать всё же.

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

Я лично живу в настоящем, здесь и сейчас.

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

Я, видимо, не осилил хороших методов использования логинд и журналов. Поясни пожалуйста, каким образом logind и journald способствуют появлению у тебя геморроя.

А главное, поясни пожалуйста, зачем ты их используешь? Тебя кто-то принуждает к journald и logind?

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

Это возможно, инфа 146%. Но Лёня по каким-то причинам так не сделал. Отчасти потому что это сильно усложнило бы унификацию и породило бы разброд и шатание (имхо,этого явления вообще сложно избежать в опенсорсе). А без унификации вся разработка системд потеряла бы смысл. И да, такие размышления меня удручают.

Ivan_qrt ★★★★★ ()

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

не читал, но поддерживаю

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

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


кто на ком стоял?

«systemd прибит к linux» - значит systemd использует специфичные фитчи линукса, отсутствующие в других ОС ( типа http://ru.wikipedia.org/wiki/Cgroups ) и, поэтому, непортируем.

«linux прибит к systemd» - значит большунство программ в линуксе пользуются фитчами systemd.

В первом случае об «угрозе» со стороны системд речи нет, а второй возможен только если время покажет,что Ленарт - во всём прав.
В обоих случаях не вижу проблем.

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

А единый дистрибутив ты не хочешь?

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

Я- не хочу. А вот Шаттлворт...

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

Тебя кто-то принуждает к journald и logind?

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

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

значит

Хоть горшком.

второй возможен только если время покажет,что Ленарт - во всём прав

нет, для этого мейнтейнеры ядра должны в течении отрезка времени, достаточного для интеграции systemd в ядро, считать что Ленарт прав

anonymous ()

Нытьё сопливое, а сделать-то никто ничего не сможет. Так что глобальная системдитизация это вопрос времени :(

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

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

Ээээ нет ,тут как раз стоит спор о том что если куча популярных дистрибутивов перейдут на systemd по дефолту, то и разработчикам софта придется пилить софт под systemd ,а чтобы они не сильно расслаблялись ,чтобы клепать альтернативы, Леннарт периодически будет ломать API.

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

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

А стандарты де юре - это видимо не путь к единому дистрибутиву?

anonymous ()

Вообще я такие же крики примерно видел когда Элоп стал CEO Nokia и вот случилось то что случилось , хотя были рассуждения что Элоп все делает правильно... и прочее.

Здесь война между Canonical и RedHat и честно говоря по сломанному и упоротому гному3 мой голос не на стороне RedHat

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

Как уже сделали с HAL, ALSA и собираются сделать с Xorg.

ALSA

Что-что? Уже CoreAudio портировали взамен ALSA? Машину времени на место верни.

RedEyedMan3 ()

Этот пост почти вернул мне веру в человечество.

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

это Поттеринг ворует данные с компа, что же еще =)

reprimand ★★★★★ ()

на самом деле людей, способных написать замену к системД очень мало, ибо надо помимо написания сидеть и разбираться с компатибилити и не повторять уже существующих ошибок.
Это только малая часть - проект надо еще «пропихнуть» в мир, его надо сделать общественным достоянием, включить в один из популярных дистрибутивов. Иначе - это так и останется «один из варинатов», лежащий на гитхабе.
Итого нужно: 1) деньги 2) время 3) желание 4) квалификация 5) группа поддержки (штанов)
А таковых нет...

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

По-твоему, событийная шина не нужна в системе? Каким образом тогда приложения будут общаться между собой?

Мысль о том, что до D-Bus'а процессы-таки общались между собой, в твою голову вместиться никак не может?

ak380618 ()

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

И про оЧепятку сообщу:

НЕТ никакого смысл__е___ держать в одном репозитории udev, hwdb или еще десяток несвязанных друг с другом вещей.

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

жить без dbus можно. libc тоже разные бывают — во фре и солярке они свои.

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

поцеррингу надо русскую тп в жёны дать,она его будет избивать каждый день и он перестанет кодить .

Ну да, потом он купит макбук и станет модератором лора. Оно нам надо?

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

А зачем? Из концепции «давайте чтонибудь поменяем»?

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