Talk:D-Bus

D-Bus is a specification, not a software package
Now that there is at least one full-featured implementation of the D-Bus specification other than libdbus which is used in several large projects, managed D-Bus, this page should be refactored to represent that fact that D-Bus is a specification which can be implemented by anyone.

Here's the spec. Dukeofgaming (talk) 03:03, 7 February 2012 (UTC)

Recent edits questionable
This page has lost focus (for example brief illustrative code samples and distinction of IPC vs. library, and distinction of protocol vs. reference / mainstream implementations) in the last year or so (as of early 2009). Someone took it upon themselves to clean up an article without knowing about the topic. Reading about D-Bus as software (and not as a protocol / IPC system) leads to the good questions raised in Understandability, and the article is much more confusing as a result. —Preceding unsigned comment added by 87.74.72.109 (talk) 17:26, 30 March 2009 (UTC)

Update: OK, I figured out what happened to the article. It seems that the page went from entirely accurate and informative to its current state (the article now mentions channels for example, which were only present in very early 2005 development releases of the D-Bus library) because editors have been transcribing the years-old Linux Journal article (http://www.linuxjournal.com/article/7744), replacing more up-to-date information which was based on the official D-Bus specification.

There seem to be few edits of merit since December 2007. To make this article accessible again, it may be worth re-introducing:


 * Brief (pseudo?) code samples
 * Agreed, even though they could be considered a bit too technical for some, it's valuable information, cutting out everything seems too extreme --Shana (talk) 19:00, 30 March 2009 (UTC)
 * A discussion of the D-Bus implementations
 * also agree with this, it makes absolutely no sense to remove all the information about the various implementations that are available. I don't understand why it was done --Shana (talk) 19:00, 30 March 2009 (UTC)
 * Cleanups for terminology (to once again remove the obsolete channel terminology which people read in the old Journal article modify this wiki page from) —Preceding unsigned comment added by 87.74.72.109 (talk) 17:49, 30 March 2009 (UTC)

History
Text copied from dbus -- D-BUS name confirmed by the official project page. I would have moved the page, but the redirect was already in place and because there was hardly any edit history it didn't seem worth getting an admin to delete it.. Just for sake of keeping the record, I've copied it here Motor 20:21, 2005 Jun 24 (UTC)

(cur) (last) 08:03, 2005 Jun 21 68.164.186.69

(cur) (last) 03:14, 2005 Jun 21 Lion.guo m

(cur) (last) 16:29, 2005 May 25 Benjim?

Moved article from D-BUS to D-Bus due to preferred capitalization --riffic 23:45, 17 July 2006 (UTC)

Category
Does this article really belong in the X Windows System category? Jdufresne 01:05, 7 September 2005 (UTC)


 * An X root window property can be used to find the session bus address. Apart from that, I don't see anything X related. I think should be in a "things that use X root window properties" list instead. 82.46.154.93 02:22, 14 July 2006 (UTC)
 * I expect the reasoning for it is likely to be something to do with the fact that it's a freedesktop.org hosted project, used extensively by KDE4 and GNOME (among others) so the author probably thought "What do those two have in common?" and dropped it here. I make no comments about whether that's valid logic or not: just trying to empathise. Alsuren 09:44, 29 August 2006 (UTC)

watch out for merge with windows port
Apperantly, there's a dbus windows port here, until they merge it with the official dbus. The platform (which is unix-like right now) on the software-description-card-thing should be updated when that merge occurs. Amir Eldor 19:59, 22 June 2007 (UTC)

Service
D-Bus allows programs to register on it for offering services to others. What is a service (computer science)? --Abdull 09:29, 20 October 2007 (UTC)
 * That is a very nice example of the rampant "abstraction speak" (not to be confused to buzzword-bingo but similar). It seems User:JavierCantero is working on making this article actually useful to readers like you an me. User:ScotXW t@lk 18:35, 20 February 2016 (UTC)


 * This version Special:Permalink/750004547 sais: "a session bus for each user login session, that provides desktop services to user applications in the same desktop session, and allows the integration of the desktop session as a whole". What services does the session bus provide? Doesn't rather provide access to services? The NetworkManager-daemon is/provides one or multiple services: It manages the network interfaces, and provides notifications about changes, etc. User:ScotXW t@lk 06:53, 23 November 2016 (UTC)

Name
Does it stand for "Desktop Bus"? -- Beland (talk) 00:00, 21 November 2007 (UTC)
 * I can't find any official references. Most of search results seem to be quoting this page or are about Apple Data Bus. I'm not sure if it stands for "Desktop Bus" since there is nothing inherently desktop-related about it. --AM088 (talk) 19:43, 15 June 2012 (UTC)
 * freedesktop.org ~ XDG = X Desktop Group. The "D" most likely is stand for desktop, but some reference would be nice. User:ScotXW t@lk 06:56, 23 November 2016 (UTC)

Understandability
I'm a software engineer, and I find this article even beyond my understanding. What does D-Bus provide that isn't covered by libraries? Some examples on the page would be nice. This article seems to be limited in understanding to those who already know what D-Bus is. 217.132.235.92 (talk) 13:17, 4 June 2008 (UTC)


 * If it was you who added the Technical-template to the article, I moved it to the talk page (because Wikipedia told me. With red text.)
 * Regarding your question: From my understanding, it's just another way of implementing IPCs, though in a more OO fashion. The client application gets access to both variables and methods of the server, instead of just passing requests, like with named pipes/sockets/etc. I did not find the current version hard to understand. I am not a software engineer or even an educated programmer. A comparison to other IPCs might be necessary, though. In any case, the article refers to external pages with more extensive information. 81.216.131.26 (talk) 03:32, 3 August 2008 (UTC)


 * I also believe the page needs examples of when and why to use D-Bus, and perhaps pros and cons against other alternatives. 85.250.5.204 (talk) 13:18, 6 August 2008 (UTC)


 * The page makes it sound like DBUS is for Desktop Applications - this may be it's intention but Enterprise Message Transport is becoming a more and more popular use. DBUS is used to communicate between various programming languages, and open-source projects especially when those projects are implemented in different languages. Python to Java for example.  —Preceding unsigned comment added by 99.190.81.107 (talk) 05:28, 21 July 2010 (UTC)


 * To become executable, doesn't software (written in some programming language) have to be compiled into machine code? User:ScotXW t@lk 06:58, 23 November 2016 (UTC)

Article sections needed
I'm aware of D-Bus being used on the OLPC/Sugar project, but if the current implementations are being stretched from Desktop Application integration to Enterprise Message Transport, as if it were a "poor man's CORBA", then this article needs much clearer sections on Security, Transaction Management, and other relevant features. rhyre (talk) 03:01, 6 April 2011 (UTC)


 * I fully agree. 76.10.128.192 (talk) 09:35, 21 May 2012 (UTC)

Possible sources
An editor suggested this software as an example of 'notable' software for which sources are simply not available. Editors at this page who are misled into thinking that sources do not exist might want to consider these:  

Most of the sources (all of them books, magazines, and journals) mention D-bus only briefly, but one describes a bit of the development history, another describes why a particular (intentional) design feature makes it inappropriate for a particular purpose, and so forth.

There are many other similar sources... You just have to look for them. (I think that I managed to exclude all of the unrelated uses of this term, but I may have gotten one or two wrong.) WhatamIdoing (talk) 04:58, 22 March 2010 (UTC)

Why?

 * allowing multiple computer programs to communicate with one another

Please add a bit to the article explaining why we would want that. Social networking for software sounds, on first glance, like a bad idea. What are the benefits? 72.208.62.126 (talk) 11:55, 10 October 2014 (UTC)


 * Hello! Are you asking about d-bus in general, or about the communication performed directly between applications? &mdash; Dsimic (talk | contribs) 07:27, 11 October 2014 (UTC)


 * Thanks for the reply. Maybe both. Whatever you think would make a good addition to the article explaining the reason why such a thing is needed or helpful. 72.208.62.126 (talk) 22:27, 12 October 2014 (UTC)


 * You're welcome, and thank you for bringing it up in the first place. In addition to what you're asking about, there seems to be another issue, which is that, AFAIK, d-bus is exclusively a "hub-and-spokes" architecture, meaining that no peer-to-peer communication between applications is possible; that's why  a  tag.  I'll re-check it all again in detail and make changes to the article. &mdash; Dsimic (talk | contribs) 11:18, 13 October 2014 (UTC)


 * Well, I was wrong as d-bus also allows peer-to-peer exchange of messages between applications. However,  the  section with some additional explanations, please check it out. &mdash; Dsimic (talk | contribs) 09:50, 14 October 2014 (UTC)


 * I appreciate the update. It has helped me decide to disable d-bus, which I was considering already. I want my computer to obey me, not to run off and do things on its own. I don't want a horde of "applications" chitchatting with each other and making decisions behind my back. If, as in your example, the volume needs to change, that will be my decision, and I will enact it. 72.208.62.126 (talk) 01:30, 15 October 2014 (UTC)


 * Thanks, I'm glad that it helped. Maybe I'm a bit old-fashioned, but my preference is also to have less of the "integrated desktop environment feeling" that Linux has been guided to in the last decade or so.  Not to mention that, sadly, some of the desktop environments that were great back at the time (read: KDE, and prety much GNOME too) lost track of what they actually want to be in that process.  However, that draws us away from the d-bus, which this talk page is devoted to. :) &mdash; Dsimic (talk | contribs) 04:13, 15 October 2014 (UTC)
 * See the list in . D-Bus basically offers an alternative to the IPC/RPC primitives offered by the (Linux) kernel. kdbus was a project to port a substantial amount of D-Bus into the kernel, since IPC is kernel duty anyway. AFAIU, D-Bus is too bloated, since it was completely developed in uses-space, and it was rejected by the Linux kernel maintainers. They do want more IPC in the Linux kernel, but not kdbus. User:ScotXW t@lk 18:39, 20 February 2016 (UTC)

KDBUS (Kernel D-Bus)
So after its mainlined into the kernel officially, would the git commit (or thing, not too familiar with git stuff), be a valid source? Or waiting for another party to say "KDBUS has been mainlined" be a source? -- 18:17, 2 November 2014 (UTC)


 * Hello! To me, http://kernelnewbies.org/LinuxChanges provides excellent overviews of Linux kernel releases, and they're great to be used as references.  See also http://kernelnewbies.org/LinuxVersions for the complete list of available release descriptions. &mdash; Dsimic (talk | contribs) 20:12, 2 November 2014 (UTC)


 * Ah, thank you. Also, thanks for the site! I never knew it existed, it'll help me keep up with kernel stuff. <3 -- 20:59, 2 November 2014 (UTC)


 * You're welcome. :) Also, kernelnewbies.org is much more than its name might suggest. &mdash; Dsimic (talk | contribs) 21:30, 2 November 2014 (UTC)

Article improvements: main D-Bus concepts/ides/rationale
I've done my best to explain the main D-Bus concepts, but there are some points left that might be worth to include in the article: If you want to improve this article you might start with one of these. --JavierCantero (talk) 17:37, 18 February 2016 (UTC)
 * dbus-daemon (not D-Bus) has security policies to limit the invocation of certain methods from certain services (usually system services) to certain processes. This is also related somehow to the authentication mechanism (I think).
 * dbus-daemon (not D-Bus) provides message ordering (it's guaranteed that messages sent from process A to process B are received by B in the same order they were sent by A). That simplifies a lot the complexity of both client and services.
 * dbus-daemon provides a monitoring interface
 * "D-Bus allows passing of credentials and file descriptors over the bus" (I haven't checked this)
 * probably more that I forgot


 * Nice work! I am missing the rationale of doing this in user-space. IPC is kernel's stuff. Lennart Poettering explained that actually many part of D-Bus do belong into the (Linux) kernel. Also, how can D-Bus manage IPC without the kernel? A process (i.e. an instance of a program) is created by the kernel on some request to do so from user-space. (On Linux) a process does not know about any other processes. It can and may only send requests to the kernel. D-Bus is a daemon doing IPC and RPC in user-space. Why, you put nicely in the list above. It is nicer then the IPC primitives offers by the kernel. However, D-Bus probably calls the kernel for the actual IPCs/RPCs, because any process, even the D-Bus process, can only see itself and request stuff from the kernel.… User:ScotXW t@lk 18:29, 20 February 2016 (UTC)


 * cf. The Linux Programming Interface by Michael Kerrisk! User:ScotXW t@lk 18:31, 20 February 2016 (UTC)


 * Compare File:D-Bus_communications_architecture_-_message_bus.svg with file:GStreamer_over_D-Bus.svg; the later is so oversimplified, that it should be called dead wrong.
 * It's not wrong. Simply you talk about GStreamer in the GStreamer article (not about what is D-Bus or how it works) and you talk about D-Bus in the D-Bus article; then you link from one to the other for anyone interested to click for more detailed information. --JavierCantero (talk) 10:44, 22 February 2016 (UTC)


 * Yes, libdbus calls to the operating system native IPC (for instance Unix Domain Sockets in Linux/Unix, or the Win32 native IPC in Windows); in the "Internals" section I (try to) explain precisely that. --JavierCantero (talk) 10:33, 22 February 2016 (UTC)

The same issue again: File:Wayland_protocol_architecture.svg is more correct than File:Libinput_for_Wayland_compositors.svg because processes can only do IPC through the kernel. Question is, which diagrams need to show this fact, and which do not ;-) IMO anything related to D-Bus should bother to make clear, the ultimately IPC can only be done by the kernel (because technically a process does not anything about the rest of the operating system. User:ScotXW t@lk 18:58, 20 February 2016 (UTC)
 * The kernel is always beneath it, but sometimes you want to show internal stuff &mdash;how it really works&mdash; and sometimes you don't want/need to. For example in this article there are diagrams that show the "connections" between processes simply as lines, without futher explanation, because they are trying to show a general idea. And there are diagrams in the "Internals" section that try to explain D-Bus working upon an operating system IPC, so they show the kernel to reflect the layer where native IPC lives. --JavierCantero (talk) 10:33, 22 February 2016 (UTC)

External links modified
Hello fellow Wikipedians,

I have just modified 1 one external link on D-Bus. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
 * Added archive https://web.archive.org/web/20150721005141/https://allseenalliance.org/developer-resources/forum/developers/difference-d-bus to https://allseenalliance.org/developer-resources/forum/developers/difference-d-bus

When you have finished reviewing my changes, please set the checked parameter below to true or failed to let others know (documentation at ).

Cheers.— InternetArchiveBot  (Report bug) 13:31, 4 December 2016 (UTC)

External links modified
Hello fellow Wikipedians,

I have just modified one external link on D-Bus. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
 * Added archive https://web.archive.org/web/20151023072022/http://www.redhat.com/magazine/003jan05/features/dbus/ to https://www.redhat.com/magazine/003jan05/features/dbus/

When you have finished reviewing my changes, you may follow the instructions on the template below to fix any issues with the URLs.

Cheers.— InternetArchiveBot  (Report bug) 22:29, 2 January 2018 (UTC)

zbus was removed
I added a mention of zbus but it was removed by @Hinanawi when they added the "language bindings" section. I think they misunderstood zbus as a binding, which it is not. It's pure Rust library that implements D-Bus. Zeenix (talk) 18:47, 5 March 2024 (UTC)

Immutability of bus names
> Bus names of this type are immutable—it is guaranteed they will not change as long as the connection exists

I don't think there are any D-bus type names which are mutable. This should re-worded. 2001:464F:B0DF:0:ACEF:C4D3:76BA:9D35 (talk) 13:55, 8 May 2024 (UTC)