Add dbus-run-session
[platform/upstream/dbus.git] / doc / TODO
index 2cd7e44..eb4e797 100644 (file)
--- a/doc/TODO
+++ b/doc/TODO
+Important for 1.2
+===
 
- - Message matching rules (so broadcasts can be filtered) need sorting
-   out.
+ - System bus activation
 
- - How we will handle DCOP needs sorting out. Among other things, we
-   need to check that service and service-ownership semantics map to DCOP 
-   reasonably well.
+ - Windows port
 
- - Activation needs some careful additional thinking-through.
+Important for 1.0 GLib Bindings
+===
+
+ - Test point-to-point mode
+
+ - Add support for getting sender
+
+ - format_version in the object info doesn't look like it's handled correctly. The creator
+   of the object info should specify some fixed number per struct version; the library
+   should handle only specific numbers it knows about. There's no assumption that all 
+   numbers >= the given one are compatible. The idea is that new versions of the lib
+   can offer totally different object info structs, but old versions
+   keep working.
+
+Important for 1.0 Python bindings
+===
+
+ - Hammer down API
+
+ - Fix removing of signals from the match tree
+
+ - Fix refcounting and userdata lifecycles
+
+ - Write a generic mainloop
+
+Might as Well for 1.0
+===
+
+ - protocol version in each message is pretty silly
+
+Can Be Post 1.0
+===
+
+ - revamp dbus-launch a bit,
+   see http://lists.freedesktop.org/archives/dbus/2006-October/005906.html
+   for some thoughts.
+
+ - clean up the creds issue on *BSD's in dbus/dbus-sysdeps-unix.c.
+   They should work as is but we need to rearange it to make it
+   clearer which method is being used.  configure.in should
+   be fixed up to make that decition.
+
+ - _dbus_connection_unref_unlocked() is essentially always broken because
+   the connection finalizer calls non-unlocked functions. One fix is to make 
+   the finalizer run with the lock held, but since it calls out to the app that may 
+   be pretty broken. More likely all the uses of unref_unlocked are just wrong.
+
+ - if the GUID is obtained only during authentication, not in the address, 
+   we could still share the connection
+
+ - Allow a dbus_g_proxy_to_string()/g_object_to_string() that
+   would convert the proxy to an "IOR" and dbus_g_proxy_from_string()
+   that would decode; using these, dbus-glib users could avoid
+   DBusConnection entirely. Of course the same applies to other kinds
+   of binding. This would use dbus_connection_open()'s connection-sharing
+   feature to avoid massive proliferation of connections.
+
+ - DBusWatchList/TimeoutList duplicate a lot of code, as do
+   protected_change_watch/protected_change_timeout in dbus-connection.c
+   and dbus-server.c. This could all be mopped up, cut-and-paste 
+   fixed, code size reduced.
+
+ - change .service files to allow Names=list in addition to Name=string
+
+ - The message bus internal code still says "service" for 
+   "name", "base service" for "unique name", "activate" for 
+   "start"; would be nice to clean up.
 
  - Property list feature on message bus (list of properties associated 
    with a connection). May also include message matching rules 
    that involve the properties of the source or destination
    connection.
 
- - Implement all the needed resource limits to keep clients from
-   killing the message bus.
-
- - Automatic service activation, should probably be done through a message flag.
-
  - Disconnecting the remote end on invalid UTF-8 is probably not a good 
-   idea. The definitiion of "valid" is slightly fuzzy. I think it might 
+   idea. The definition of "valid" is slightly fuzzy. I think it might 
    be better to just silently "fix" the UTF-8, or perhaps return an error.
 
-   Owen says we should only validate the UTF-8 on dbus_message_get_string()
-   (changing get_string to have an error return, and allowing a type error 
-   as a possible return)
+ - build and install the Doxygen manual in Makefile when --enable-docs
+
+ - if you send the same message to multiple connections, the serial number 
+   will only be right for one of them. Probably need to just write() the serial 
+   number, rather than putting it in the DBusMessage, or something.
+
+ - perhaps the bus driver should have properties that reflect attributes
+   of the session, such as hostname, architecture, operating system, 
+   etc. Could be useful for code that wants to special-case behavior 
+   for a particular host or class of hosts, for example.
+
+ - currently the security policy stuff for messages to/from 
+   the bus driver is kind of strange; basically it's hardcoded that 
+   you can always talk to the driver, but the default config file 
+   has rules for it anyway, or something. it's conceptually 
+   screwy at the moment.
+
+ - when making a method call, if the call serial were globally unique,
+   we could forward the call serial along with any method calls made
+   as a result of the first method call, and allow reentrancy that was
+   strictly part of the call stack of said method call. But I don't
+   really see how to do this without making the user pass around the
+   call serial to all method calls all the time, or disallowing 
+   async calls.
+
+   If done post 1.0 will probably be an optional/ugly-API type 
+   of thing.
+
+ - I don't want to introduce DBusObject, but refcounting and object
+   data could still be factored out into an internal "base class" 
+   perhaps.
+
+ - Keep convenience wrappers in sync with bus methods
+
+ - document the auth protocol as a set of states and transitions, and
+   then reimplement it in those terms
+
+ - recursive dispatch, see dbus_connection_dispatch()
+
+ - do we need per-display activation; if so I'd like to do this by setting a
+   "display ID" property on screen 0, with a GUID, and keying activation by 
+   said GUID. Otherwise you get all kinds of unrobust
+   string/hostname-based mess. per-screen is then done by appending screen number
+   to the display. If displays have a deterministic ID like this, you can 
+   do per-display by simply including GUID in the service name.
 
- - We might consider returning a "no such operation" error in dbus-connection.c 
-   for unhandled messages.
+ - optimization and profiling!
 
- - The convenience functions in dbus-bus.h should perhaps have
-   the signatures that they would have if they were autogenerated
-   stubs. e.g. the acquire service function. We should also evaluate 
-   which of these functions to include, in light of the fact that 
-   GLib/Qt native stubs will probably also exist.
+ - Match rules aren't in the spec (probably a lot of methods on the bus
+   are not)
 
- - The message handler interface needs rethinking, perhaps handlers should be able 
-   to return an error that automatically gets turned into a message; most likely 
-   some basic spec'ing out of the GLib/Qt level stubs/skels stuff will be 
-   needed to understand the right approach.
+ - the "break loader" and valid/invalid message tests are all disabled;
+   they need to be fixed and re-enabled with the new message args stuff.
+   I think I want to drop the .message files thing and just have code
+   that generates messages, more like the tests for
+   dbus-marshal-recursive.c (this is mostly done now, just needs some
+   cleanup)
 
- - there are various bits of code to manage ref/unref of data slots, that should 
-   be merged into a generic facility
+ - just before 1.0, try a HAVE_INT64=0 build and be sure it runs
 
- - add _dbus_return_if_fail, _dbus_return_val_if_fail() and use on public entry 
-   points in place of _dbus_assert(). Add --disable-checks to control whether these
-   do anything.
+ - Windows port needs recursive mutexes
 
- - assorted _-prefixed symbols in libdbus aren't actually used by
-   libdbus, only by the message bus. These bloat up the library
-   size. Not sure how to fix, really.
+Should Be Post 1.0
+===
 
- - dbus_error_has_name(), dbus_message_name_is()
+ - look into supporting the concept of a "connection" generically
+   (what does this TODO item mean?)
 
- - add DBUS_TYPE_INT64 ? 
+ - test/name-test should be named test/with-bus or something like that
 
- - if you send a message to a service then block for reply, and the service exits/crashes
-   after the message bus has processed your message but before the service has replied, 
-   it would be nice if the message bus sent you an error reply.
 
- - We have a limit on the number of messages a connection can send, but 
-   not on how many can be buffered for a given connection.