LINUX.ORG.RU
ФорумTalks

Почему многие хейтят D-Bus?

 


1

3

Приветствую. Объясните пожалуйста бестолковому - почему так много людей ненавидят D-Bus, и люто плюются когда он является жёсткой зависимостью? Постоянно натыкаюсь на сообщения, что наличие D-Bus как зависимости это чуть ли не смертный грех. Чем он так плох?

Оверинжиниринг и xml. Если XMPP XML можно ещё простить, то дбасу - нет :)

Все ждут kdbus

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

а до меня смысл шутки так и не дошел:(

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

так смысл dbus в ассинхронной доставке, вроде. она хранит сообщения до востребования, может отдавать клиенту 1 и то же самое сообщение клиенту 2 и т.д. так что нет, это не эквивалентно.

например, как я писал выше: pdf-вьевер поместил туда сообщения «где я был последний раз» и потом либо сам его оттуда вычитает (после ребута!), либо файл-манагер его оттуда возьмет.

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

она хранит сообщения до востребования

А если место для хранения кончится? У сокетов как бы тоже буфер есть.

и потом либо сам его оттуда вычитает (после ребута!)

Там реестр по типу Windows что-ли? Тогда это никакая не шина сообщений, а какой-то непонятный комбайн.

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

я не сильно шарю в топике. там, очевидно, какая-то хранилка типа dconf прицеплена. но идет она отдельным блоком или частью dbus, я не знаю.

pdf-viewer через dbus заносит какое-то значение в хранилку. потом другие это значение оттуда достают.

иногда, вроде, программа регистрирует временный ресурс... не знаю точно...

crypt ★★★★★
()
Последнее исправление: crypt (всего исправлений: 2)
Ответ на: комментарий от crypt

ты пугаешься jit-машины в инсталяторе

Чо? В каком инсталяторе?

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

Маленькая? Да. Консервативная? Ха-ха-ха! Тогда лучше в сторону OpenBSD смотри.

В FreeBSD в ядре три мать его фаерволла, и все три – убогие. FreeBSD не превратился в раковую опухоль, коей является лялекс, только потому что им силёнок не хватило.

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

The bus supports two modes of interchanging messages between a client and a service process[5]:

One-to-one request-response: This is the way for a client to invoke an object's method. The client sends a message to the service process exporting the object, and the service in turn replies with a message back to the client process.[16] ...

Publish/subscribe: ...

https://en.wikipedia.org/wiki/D-Bus

с сокетами ты совершенно зря сравнил.

crypt ★★★★★
()

RH использует это как стандарт для всех своих штук. Впрочем, это логично.

The usage of D-Bus is steadily expanding beyond the initial scope of desktop environments to cover an increasing amount of system services. For instance, the NetworkManager network daemon, BlueZ bluetooth stack and PulseAudio sound server use D-Bus to provide part or all of their services. systemd uses the D-Bus wire protocol for communication between systemctl and systemd, and is also promoting traditional system daemons to D-Bus services, such as logind. Another heavy user of D-Bus is Polkit, whose policy authority daemon is implemented as a service connected to the system bus.

Посмотрим через сколько они выпустят новую шину.

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

Тогда лучше в сторону OpenBSD смотри.

не могу, функционала не хватает.

FreeBSD не превратился

да, но и ладно

В FreeBSD в ядре три мать его фаерволла, и все три – убогие.

you tell me:((( сам об этом пишу но я читал, что freebsd прямо хвалятся малой кодовой базой ipfw (хотя недостатков это не исправляет).

https://github.com/freebsd/freebsd-src/tree/main/sbin/ipfw - ipfw2.c - 5500 строк

https://github.com/torvalds/linux/tree/master/kernel/bpf - verifier.c - 15000, btf.c - 7000

crypt ★★★★★
()
Последнее исправление: crypt (всего исправлений: 3)
Ответ на: комментарий от hateyoufeel

Чо? В каком инсталяторе?

глючу к вечеру:( про кокпит вспомнил. гглючу.

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

Нет. Он слишком по другому устроен. В версии BeOS где он был вроде всё системное API с нуля проектировали под Binder. И реализовали как обёртку над существующим.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

Вроде как GPL не нарушен, т.к. линковки нет, но осадочек остаётся.

ГПЛ не про линковку, описанным способом ГПЛ обойти нельзя. Сомневаюсь, что у красношапочных нет юристов.

ya-betmen ★★★★★
()

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

ya-betmen ★★★★★
()
Ответ на: комментарий от hateyoufeel

забыв про документацию

This. А умножив на xml становится вообще страшно.

no-such-file ★★★★★
()
Ответ на: комментарий от X512

О как, понятно.

К слову о D-Bus, я бы уж лучше желал видеть Binder из Android, нежели чем D-Bus. Это к вопросу о производительности, а текут они оба. :-)

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

Проблема в инфраструктуре, надо чтобы софт был под Binder.

X512 ★★★★★
()
Ответ на: комментарий от ya-betmen

ГПЛ не про линковку, описанным способом ГПЛ обойти нельзя.

Тем не менее, общая практика состоит в том, что GPL распространяется именно на линковку. Были отдельные упоротые перцы, которые утверждали, что любой софт, запущенный в Linux, подпадает под действие лицензии на ведро, а значит должен так же под GPL-2 распространяться. Но на них всем насрать.

Сомневаюсь, что у красношапочных нет юристов.

Есть, конечно. А вот желающих в суд подать на них пока нет.

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

я бы уж лучше желал видеть Binder из Android

я думаю, многие бы не отказались, но у RH NIH:) части андроид-ядра постепенно возвращают в мейнстрим, но RH предпочитает свои стадарты.

crypt ★★★★★
()
  • Обходит стандартные механизмы разграничения доступа в UNIX - права на сокет.
  • Плодит своих говённых демонов - dbus-launch и dbus-daemon.
  • Не нужен. Это, на самом деле, первый пункт. В скольких приложениях его поддержку видел, ни разу не видел от ней какой-то пользы.
slovazap ★★★★★
()
Ответ на: комментарий от hateyoufeel

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

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

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

В случае редхата, их subscription manager, сырцы которого были закрыты. Слинковать с некоторыми нужными либами они его не могли, поэтому извращались вот так вот. Но я это годы назад видел. Про сейчас не знаю.

Плюс, я подобное слышал от поцонов, которые закрытый коробочный софт под лялекс поставляют. Имён не скажу, а то обидятся. Но из либ там был ffmpeg и фильтры под GPL :)

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 2)
Ответ на: комментарий от hateyoufeel

Про ффмпег странное решение конечно. Он же под лгпл идет, а гпльные фильтры можно было просто переписать. Умозрительно, тыкать его через дбас не самое надежное и быстрое решение.

ya-betmen ★★★★★
()
Последнее исправление: ya-betmen (всего исправлений: 2)
Ответ на: комментарий от ya-betmen

Да не, вполне быстро выходило. Команды по dbus шли, а выхлоп — сразу на nginx.

Тут dbus сам по себе роли не играет, можно точно так же и без него сделать. Просто обход GPL по RPC — это вполне вещь.

hateyoufeel ★★★★★
()
Ответ на: комментарий от ya-betmen

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

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

Как я помню у глав разраба, были Наполеоновские планы по поводу конфигурирования policykit. Но то ли они он весь запал на баталиях в рассылке растратил, то ли «концепция» поменялась, но конфиги на js остались на самом примитивном уровне. А spidermonkey просто имно так исторически сложилось - из-за примитивности там подойдёт абсолютно любой движок.

vtVitus ★★★★★
()

dbus изначально запиливался как стандартный формат IPC для юниксовых демонов, чтобы вместо кучи всяких xxxctl делать простые шелл-скрипты с одной утилиткой (например, qdbus), понимающей этот самый формат.

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

Почему например gnome использует иксовый или вяленд-сокет, чтобы общаться с гуевыми клиентами, но при этом не хочет принимать иконки для трея и слать буфера со скринкастами через тот же самый сокет? Да нипочему, просто у редхата так принято. Типичный корпоративный говнософт в лучших традициях винды.

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

Но то ли они он весь запал на баталиях в рассылке растратил, то ли «концепция» поменялась

Как я помню у глав разраба, были Наполеоновские планы

Три кита, на которых стоит опенсорс xD

А spidermonkey просто имно так исторически сложилось - из-за примитивности там подойдёт абсолютно любой движок

Электрон же! Оказывается юзать браузер не только для серфинга по инету появилась очень давно.

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

Сейчас наверное нет. Раньше емнип траблы были в довольно сильно плавающей латенси. Ну и вокруг этого дела бегали «специалисты» и тыкали пальцами в юникс-сокеты, которые по очевидным причинам имели на порядок, а то и на два более высокую производительность.

ya-betmen ★★★★★
()
9 апреля 2022 г.

Почему все критикуют dbus?

От себя напомню про «Хеллоуинские встречи» Microsoft, в которых они в 1999 году приняли решение внедрить «своих» людей в компании-конкуренты. С целью выполнить обфускацию программных продуктов конкурента. DBus, обмотаный XML-ями по самое не балуйся, выглядит на результат таковой деятельности очень похожим.

Да и время появления. 2005 год, когда вышел RHEL 4, мейнстримовый дистрибутив Linux, и пришло время думать, какие фичи будут в грядущем RHEL 5. Уже в январе 2005 года были анонсированы DBus, ConsoleKit, PolycyKit и HAL. Самые усложнённые вещи того времени, пока не появился Electron, nodejs и веб-фреймворки.

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

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

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

DBus

В GNOME был message bus под названием bonobo. В KDE был message bus под названием DCOP. Гномовцы поняли, что bonobo хуже, чем DCOP, и сделали новый message bus, который перенял лучшие стороны DCOP. Называется DBus. Но зачем-то стартует как системная служба, а не с сеансом GNOME. Странно.

Мне кажется, что прообразом всех трёх стало что-то из MAC OS X, но я не уверен в этом. Кстати, в качестве альтернативы, можно использовать сокеты.

ConsoleKit

В линуксе есть пользователи и группы. Добавил юзера номер один в группу audio, и он может слушать музыку. А у юзера номер два таких прав нет, и он сидит, грустный, без музыки.

Лично у меня - однопользовательская система. Мне не нужно делить свой рабочий стол с кем-то ещё. Поэтому у меня файл с пользователями и группами выглядит вот так.

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

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

На помощь приходит ConsoleKit! Отныне, юзеры вообще не добавлены ни в одну группу, ни в аудио, ни в видео. Как только юзеры делают запрос к устройствам аудио или видео, ConsoleKit выдаёт им права. Благодаря тому, что ConsoleKit даёт или забирает права динамически, больше нету конфликтов при доступе разных юзеров к одним и тем же устройствам. Таким образом, в линуксе стало возможно делать вот так.

PolicyKit

Эту хрень использует GNOME как реестр Windows (как будто gconf было мало), только - о ужас, записи имеют формат XML.

HAL

В стародавние времена, в линуксе нельзя было добавить или удалить устройство в каталоге /dev. Только перезагрузкой. Потом появилась такая штука, как devfs, и динамически добавить или удалить устройство стало всё-таки можно. Потом появилась такая штука, как udev, которая поверх этого самого devfs работает. Этим самым udev было проще пользоваться.

И вот появился HAL, который работает поверх udev, который работает поверх devfs, а также зависит от DBus и PolicyKit. HAL это Hardware Abstraction Layer, через него можно было делать всякие прикольные вещи, такие как монтирование флешки или компакт-диска, а также монтирование зашифрованных LUKS разделов жёстких дисков. Также можно было написать программу, являющейся аналогом «диспетчера устройств» Windows, и которая базируется на HAL.

В Fedora 9 поверх HAL сделали автоматическое определение устройств при запуске сервера X11, благодаря чему стало можно избавиться от файла xorg.conf. Следующим шагом, анонсированным командой разработчиков Xorg, стал rootless-X. Но замена HAL на libudev сдвинула эти планы на несколько лет. В настоящее время, rootless-X работает только с логин-менеджером gdm из состава GNOME3, и только для KMS-драйверов.

В Fedora 11 и Ubuntu 9.10, HAL был заменён на DeviceKit, DeviceKit-disks и DeviceKit-power. Однако DeviceKit просуществовал всего лишь несколько месяцев, будучи почти сразу заменённым на libudev+udisks+upower. Подробнее вот.

Вообще, линукс 2005-2009 годов был очень интересным. Там и пульса, и xcb, и kms, и dri2, и компиз, и моно (и, если отвлечься от десктопов, Xen и KMS, -ck2, BFS, OpenVZ, Joomla, nginx, ZFS, OpenJDK). Однако всё профакапили (по крайней мере, связанное с десктопами). Когда Sun обанкротился, у Red Hat совет директоров перепугался, что они будут следующими, и начал творить фигню. Уже готовый и стабильный десктоп сломали, я бы даже сказал расфигачили. Плюс там ещё совместный проект нокии, интела и ред хата - MeeGo - не «выстрелил», и вполне возможно что Wayland готовился именно для конкурента Андроиду.

ZenitharChampion ★★★★★
()
Последнее исправление: ZenitharChampion (всего исправлений: 8)
Ответ на: комментарий от Minona

KDE3 использовал DCOP, а KDE4 перешёл на DBus. PolicyKit, как я понимаю, используется тоже. А ConsoleKit нынче на что-то заменили, но я не знаю на что.

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

Вообще, KDE4 должен был получиться довольно «вкусным». Я юзал svn-версии KDE4, и он был норм. Потом состоялся релиз, и он был «сырым». Там Plasma «падала», тогда как в преальфе вместо неё был kdesktop+kicker и они не падали. А потом, к версии KDE 4.3, начали понемногу отказываться от самобытных KDE-шных вещей в пользу унификации с Гномом. Хотя я могу ошибаться и говорить фигню. Просто помню, что Phonon заменили на PulseAudio, и вон в статье, которую я приводил выше, пишут про какой-то KDE-шный Solid

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

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

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

А ConsoleKit нынче на что-то заменили, но я не знаю на что

На logind и elogind

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

PolicyKit

Эту хрень использует GNOME как реестр Windows (как будто gconf было мало), только - о ужас, записи имеют формат XML.

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

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

Эту хрень использует GNOME как реестр Windows (как будто gconf было мало), только - о ужас, записи имеют формат XML

Как уже заметили - polkit это про контроль прав доступа.

Реестр в формате xml был gconf. Его заменили на dconf, который бинарный (как в уиндовс)

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

Когда Нео прятался от агентов в соседнем боксе, а они не могли в любой момент вычислить, где он находится - PolicyKit им просто расширенные права не выдал

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