202
submitted 8 months ago by renzev@lemmy.world to c/linux@lemmy.ml

Does anybody know why dbus exists? I've been wracking my brain trying to come up with a usecase for dbus that isn't already covered by Unix sockets.

You want to remotely control a daemon? Use sockets. You want the daemon to respond to the client? Sockets. Want to exchange information in json? plaintext? binary data? Sockets can do it. Want to restrict access to a socket? Go ahead, change the socket's permissions. Want to prevent unauthorized programs from pretending to be someone they're not? Change the permissions of the directory containing the socket. Want network transparency? That's why we have abstract sockets.

Plenty of well-established software uses sockets. Music player daemon uses sockets. BSPWM uses sockets. Tmux uses sockets. Pipewire uses sockets. Dhcpcd uses sockets. Heck, dbus itself relies on sockets!

For developers, using sockets is easy. I once wrote a program that interfaced with BSPWM, and it was a breeze. Dbus, on the other hand, not so much. I tried writing a Python script that would contact Network Manager and check the WiFi signal strength. Right off the bat I'm using some obscure undocumented package for interfacing with dbus. What is an introspection? What is a proxy object? What is an interface? Why do I need 60 lines of (Python!) code for a seemingly trivial operation?

So why do some developers decide to use dbus when they could just use unix sockets and save a lot of hassle for themselves and others?

you are viewing a single comment's thread
view the rest of the comments
[-] grue@lemmy.world 76 points 8 months ago

Because this

potentially has a much larger average degree distribution than this

[-] Atemu@lemmy.ml 12 points 8 months ago
[-] WarmApplePieShrek@lemmy.dbzer0.com 1 points 8 months ago

But it's not. Why is it better to have a different degree distribution?

[-] AVincentInSpace@pawb.social 3 points 8 months ago* (last edited 8 months ago)

...and why is that...better?

Programs still have to be written to accommodate the specific protocol that the program on the other end speaks, and dbus paths could translate pretty directly to subdirectories of /run. All adding dbus in the middle does is add a daemon where there doesn't need to be one and force the programs to talk to each other through that rather than directly to each other

[-] chitak166@lemmy.world -1 points 8 months ago

No, you see, additional layers of abstraction are always a good thing. Haven't you been paying attention to the latest software memes? /s

this post was submitted on 28 Dec 2023
202 points (81.4% liked)

Linux

47369 readers
1034 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS