chiark / gitweb /
pam_systemd: do not set XDG_RUNTIME_DIR if the session's original user is not the...
[elogind.git] / TODO
diff --git a/TODO b/TODO
index 8896747073d3e3617b9d7645879a3b86b43e3894..d63e13e3189c81b60e59f05fdc09193666bb49fc 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,5 +1,5 @@
 Bugfixes:
 Bugfixes:
-* enabling an instance unit creates pointless link, and
+* enabling an instance unit creates pointless link, and
   the unit will be started with getty@getty.service:
     $ systemctl enable getty@.service
     ln -s '/usr/lib/systemd/system/getty@.service' '/etc/systemd/system/getty.target.wants/getty@.service'
   the unit will be started with getty@getty.service:
     $ systemctl enable getty@.service
     ln -s '/usr/lib/systemd/system/getty@.service' '/etc/systemd/system/getty.target.wants/getty@.service'
@@ -12,13 +12,18 @@ Bugfixes:
   automount points even when the original .automount file did not exist
   anymore. Only the .mount unit was still around.
 
   automount points even when the original .automount file did not exist
   anymore. Only the .mount unit was still around.
 
-* make polkit checks async
-
 * properly handle .mount unit state tracking when two mount points are stacked one on top of another on the exact same mount point.
 
 * properly handle .mount unit state tracking when two mount points are stacked one on top of another on the exact same mount point.
 
+* When we detect invalid UTF-8, we cannot use it in an error message:
+  log...("Path is not UTF-8 clean, ignoring assignment: %s", rvalue);
+
+* shorten the message to sane length:
+
+  Cannot add dependency job for unit display-manager.service, ignoring: Unit display-manager.service failed to load: No such file or directory. See system logs and 'systemctl status display-manager.service' for details.
+
 Fedora 20:
 
 Fedora 20:
 
-* external: ps should gain colums for slice and machine
+* external: ps should gain colums for slice
 
 * localed:
   - localectl: support new converted x11→console keymaps
 
 * localed:
   - localectl: support new converted x11→console keymaps
@@ -28,23 +33,115 @@ Fedora 20:
 
 CGroup Rework Completion:
 
 
 CGroup Rework Completion:
 
-* introduce "mainpid" for scopes
-
 * implement system-wide DefaultCPUAccounting=1 switch (and similar for blockio, memory?)
 
 * implement per-slice CPUFairScheduling=1 switch
 
 * handle jointly mounted controllers correctly
 
 * implement system-wide DefaultCPUAccounting=1 switch (and similar for blockio, memory?)
 
 * implement per-slice CPUFairScheduling=1 switch
 
 * handle jointly mounted controllers correctly
 
-* logind: implement session kill exceptions
+* introduce high-level settings for RT budget, swappiness
 
 
-* make BlockIODeviceWeight=, BlockIODeviceBandwidth= runtime settable
+Features:
 
 
-* introduce high-level settings for RT budget, swappiness
+* general: get rid of readdir_r/dirent_storage stuff, it's unnecessary on Linux
 
 
-* wiki: document new bus APIs of PID 1 (transient units, Reloading signal)
+* add API to clone sd_bus_message objects
 
 
-Features:
+* sd-bus: synthesized messages should get serial number (uint32_t) -1
+
+* sd-event: allow multiple signal handlers per signal
+
+* when we detect low battery and no AC on boot, show pretty splash and refuse boot
+
+* move libasyncns into systemd as libsystemd-asyncns
+
+* calendarspec: support value ranges with ".." notation. Example: 2013-4..8-1
+
+* sd-bus: when triggering property change events, allow a NULL strv indicate that all properties listed as such are send out as changed
+
+* sd-bus: enforce signatures on response messages
+
+* sd-bus: see if we can drop more message validation on the sending side
+
+* sd-bus: introduce sd_bus_creds object and attach it to messages as well as allow querying it for names
+
+* sd-bus: support "const" properties as flag
+
+* sd-event: when a handler returns an error, just turn off its event
+  source, but do not return anything up to the event loop
+  caller. Instead add parameter to sd_event_request_quit() to take
+  retval. This way errors rippling upwards are the option, not the
+  default
+
+* sd-event: child pid handling: first invoke waitid(WNOHANG) and call event handler, only afterwards reap the process
+
+* sd-event: native support for watchdog stuff
+
+* machined, localed: when we try to kill an empty cgroup, generate an ESRCH call over the bus
+
+* sd-bus: SD_BUS_COMMENT() macro for inclusion in vtables, syntax inspired by gdbus
+
+* libsystemd-journal, libsystemd-login, libudev: add calls to easily attach these objects to sd-event event loops
+
+* be more careful what we export on the bus as (usec_t) 0 and (usec_t) -1
+
+* increase journal files by a few MB each time, instead of piecemeal
+
+* add field to transient units that indicate whether systemd or somebody else saves/restores its settings, for integration with libvirt
+
+* systemctl: rework wait filter to not require match callback
+
+* unify dispatch table in systemctl_main() and friends
+
+* bus: access policy as vtable flag
+
+* journalctl: support -M to read journal of containers and determine journal directory from root directory of container
+
+* tmpfiles: to make sure we don't delete unpacked tarballs with old timestamps right-away never delete stuff that is inside a directory with a new mtime
+
+* "systemctl mask" should find all names by which a unit is accessible
+  (i.e. by scanning for symlinks to it) and link them all to /dev/null
+
+* Automatically configure swap partition to use for hibernation by looking for largest swap partition on the root disk?
+
+* remove NSS usage from PID 1 (notably the specifiers)
+
+* socket-proxyd:
+  - Use a nonblocking alternative to getaddrinfo
+  - Until we can start daemons directly, find a less ugly, less racy alternative than shell scripts for the second man page example.
+  - Support starting daemons directly without requiring a shell script; update man pages
+
+* "systemctl cat" or "systemctl view" command or or so, that cats the backing unit file of a service, plus its drop-ins and shows them in a pager
+
+* rfkill,backlight: we probably should run the load tools inside of the udev rules so that the state is properly initialized by the time other software sees it
+
+* Add a new Distribute=$NUMBER key to socket units that makes use of SO_REUSEPORT to distribute network traffic on $NUMBER instances
+
+* tmpfiles: when applying ownership to /run/log/journal, also do this for the journal fails contained in it
+
+* we probably should replace the left-over uses of strv_append() and replace them by strv_push() or strv_extend()
+
+* move config_parse_path_strv() out of conf-parser.c
+
+* libdsystemd-bus should expose utf8 validation calls
+
+* After coming back from hibernation reset hibernation swap partition using the /dev/snapshot ioctl APIs
+
+* If we try to find a unit via a dangling symlink, generate a clean
+  error. Currently, we just ignore it and read the unit from the search
+  path anyway.
+
+* When a Type=forking service fails and needed another service, that
+  service is not cleaned up again when it has StopWhenUnneeded=yes
+  http://lists.freedesktop.org/archives/systemd-devel/2013-July/012141.html
+
+* refuse boot if /etc/os-release is missing or /etc/machine-id cannot be set up
+
+* ensure scope units may be started only a single time
+
+* better error message if you run systemctl without systemd running
+
+* systemctl status output should should include list of triggering units and their status
 
 * for transient units, instead of writing out drop-ins for all properties consider serializing them in the normal serialization stream
 
 
 * for transient units, instead of writing out drop-ins for all properties consider serializing them in the normal serialization stream
 
@@ -56,7 +153,7 @@ Features:
 
 * journalctl: instead --after-cursor= maybe have a --cursor=XYZ+1 syntax?
 
 
 * journalctl: instead --after-cursor= maybe have a --cursor=XYZ+1 syntax?
 
-* given that logind/machined now let PID 1 do all nasty work we can
+* given that logind/machined now let PID 1 do all nasty work, we can
   probably reduce the capability set they retain substantially.
 
 * btrfs raid assembly: some .device jobs stay stuck in the queue
   probably reduce the capability set they retain substantially.
 
 * btrfs raid assembly: some .device jobs stay stuck in the queue
@@ -69,9 +166,9 @@ Features:
 
 * when parsing calendar timestamps support the UTC timezone (even if we won't support arbitrary timezone specs, support UTC itself certainly makes sense), also support syntaxes such as +0200
 
 
 * when parsing calendar timestamps support the UTC timezone (even if we won't support arbitrary timezone specs, support UTC itself certainly makes sense), also support syntaxes such as +0200
 
-* when a kernel driver logs in a tight loop we should ratelimit that too.
+* when a kernel driver logs in a tight loop, we should ratelimit that too.
 
 
-* "systemctl disable" of a unit instance removes all symlinks, should
+* "systemctl disable" of a unit instance removes all symlinks, but should
   only remove the instance symlink (systemctl disable of a template
   unit however should remove them all).
 
   only remove the instance symlink (systemctl disable of a template
   unit however should remove them all).
 
@@ -79,21 +176,15 @@ Features:
 
 * systemctl list-unit-files should list generated files (and probably with a new state "generated" for them, or so)
 
 
 * systemctl list-unit-files should list generated files (and probably with a new state "generated" for them, or so)
 
-* do we really need both hasprefix() and startswith()?
-
 * journald: when we drop syslog messages because the syslog socket is
   full, make sure to write how many messages are lost as first thing
   to syslog when it works again.
 
 * journald: when we drop syslog messages because the syslog socket is
   full, make sure to write how many messages are lost as first thing
   to syslog when it works again.
 
-* prohibit Restart= set with Type=oneshot
-
 * man: the documentation of Restart= currently is very misleading and suggests the tools from ExecStartPre= might get restarted.
 
 * load .d/*.conf dropins for device units
 
 * man: the documentation of Restart= currently is very misleading and suggests the tools from ExecStartPre= might get restarted.
 
 * load .d/*.conf dropins for device units
 
-* add a fixed dbus path for "my own unit", "my own session", ... to PID1, logind, ...
-
-* service_coldplug() appears to reinstall the wrong stop timeout watch?
+* service_coldplug() appears to reinstall the wrong stop timeout watch.
 
 * transient units: allow creating auxiliary units with the same call
 
 
 * transient units: allow creating auxiliary units with the same call
 
@@ -103,26 +194,18 @@ Features:
 
 * journald: make sure ratelimit is actually really per-service with the new cgroup changes
 
 
 * journald: make sure ratelimit is actually really per-service with the new cgroup changes
 
-* libsystemd-logind: sd_session_is_active() and friends: verify
-  validity of session name before appending it to a path
-
 * gparted needs to disable auto-activation of mount units somehow, or
   maybe we should stop doing auto-activation of this after boot
   entirely. https://bugzilla.gnome.org/show_bug.cgi?id=701676
   Maybe take a BSD lock at the disk device node and teach udev to
   check for that and suppress event handling.
 
 * gparted needs to disable auto-activation of mount units somehow, or
   maybe we should stop doing auto-activation of this after boot
   entirely. https://bugzilla.gnome.org/show_bug.cgi?id=701676
   Maybe take a BSD lock at the disk device node and teach udev to
   check for that and suppress event handling.
 
-* when a service changes state make reflect that in the
-  RUNNING/LISTENING states of its socket
-
 * when recursively showing the cgroup hierarchy, optionally also show
   the hierarchies of child processes
 
 * document logic of auto/noauto and fail/nofail in fstab in systemd.mount or systemd-fstab-generator man page
 
 * when recursively showing the cgroup hierarchy, optionally also show
   the hierarchies of child processes
 
 * document logic of auto/noauto and fail/nofail in fstab in systemd.mount or systemd-fstab-generator man page
 
-* we should properly escape ssh hostnames we add into dbus server strings
-
-* something pulls in pcre as so dep into our daemons such as hostnamed.
+* something pulls in pcre as shared object dependency into our daemons such as hostnamed.
 
 * document systemd-journal-flush.service properly
 
 
 * document systemd-journal-flush.service properly
 
@@ -145,9 +228,8 @@ Features:
   - merge busctl into systemctl or so?
   - synthesize sd_bus_message objects from kernel messages
   - properly implement name registry ioctls for kdbus
   - merge busctl into systemctl or so?
   - synthesize sd_bus_message objects from kernel messages
   - properly implement name registry ioctls for kdbus
-  - get rid of object hash table, use decision tree everyhwere instead?
   - implement monitor logic
   - implement monitor logic
-  - object vtable logic
+  - properly map matches with well-known names against messages with unique names
   - longer term:
     * priority queues
     * priority inheritance
   - longer term:
     * priority queues
     * priority inheritance
@@ -186,14 +268,12 @@ Features:
 
 * logind: add Suspend() bus calls which take timestamps to fix double suspend issues when somebody hits suspend and closes laptop quickly.
 
 
 * logind: add Suspend() bus calls which take timestamps to fix double suspend issues when somebody hits suspend and closes laptop quickly.
 
-* we need dynamic units
-
 * cgtop: make cgtop useful in a container
 
 * test/:
   - add 'set -e' to scripts in test/
   - make stuff in test/ work with separate output dir
 * cgtop: make cgtop useful in a container
 
 * test/:
   - add 'set -e' to scripts in test/
   - make stuff in test/ work with separate output dir
-  - remove all the duplicated code in test/
+  - qemu wrapper script: http://www.spinics.net/lists/kvm/msg72389.html
 
 * systemctl delete x.snapshot leaves no trace in logs (at least at default level).
 
 
 * systemctl delete x.snapshot leaves no trace in logs (at least at default level).
 
@@ -206,8 +286,6 @@ Features:
   /etc should always override /run+/usr and also any symlink
   destination.
 
   /etc should always override /run+/usr and also any symlink
   destination.
 
-* remove duplicate default deps logic from fstab-generator vs. mount.c
-
 * when isolating, try to figure out a way how we implicitly can order
   all units we stop before the isolating unit...
 
 * when isolating, try to figure out a way how we implicitly can order
   all units we stop before the isolating unit...
 
@@ -272,9 +350,6 @@ Features:
 
 * timedate: have global on/off switches for auto-time (NTP), and auto-timezone that connman can subscribe to.
 
 
 * timedate: have global on/off switches for auto-time (NTP), and auto-timezone that connman can subscribe to.
 
-* Honour "-" prefix for InaccessibleDirectories= and ReadOnlyDirectories= to
-  suppress errors of the specified path doesn't exist
-
 * dev-setup.c: when running in a container, create a tiny stub udev
   database with the systemd tag set for all network interfaces found,
   so that libudev reports them as present, and systemd's .device units
 * dev-setup.c: when running in a container, create a tiny stub udev
   database with the systemd tag set for all network interfaces found,
   so that libudev reports them as present, and systemd's .device units
@@ -285,7 +360,6 @@ Features:
 * introduce ExecCondition= in services
 
 * EFI:
 * introduce ExecCondition= in services
 
 * EFI:
-  - fsck hookup for the ESP mount is missing
   - write man page for efi boot generator
   - honor language efi variables for default language selection (if there are any?)
   - honor timezone efi variables for default timezone selection (if there are any?)
   - write man page for efi boot generator
   - honor language efi variables for default language selection (if there are any?)
   - honor timezone efi variables for default timezone selection (if there are any?)
@@ -308,17 +382,13 @@ Features:
   - logind: wakelock/opportunistic suspend support
   - Add pretty name for seats in logind
   - logind: allow showing logout dialog from system?
   - logind: wakelock/opportunistic suspend support
   - Add pretty name for seats in logind
   - logind: allow showing logout dialog from system?
-  - logind: spawn user@..service on login
   - logind: non-local X11 server handling
   - logind: add equivalent to sd_pid_get_owner_uid() to the D-Bus API
   - pam: when leaving a session explicitly exclude the ReleaseSession() caller process from the killing spree
   - logind: non-local X11 server handling
   - logind: add equivalent to sd_pid_get_owner_uid() to the D-Bus API
   - pam: when leaving a session explicitly exclude the ReleaseSession() caller process from the killing spree
-  - logind: GetSessionByPID() should accept 0 as PID value
   - we should probably handle SIGTERM/SIGINT to not leave dot files around, just in case
 
 * exec: when deinitializating a tty device fix the perms and group, too, not only when initializing. Set access mode/gid to 0620/tty.
 
   - we should probably handle SIGTERM/SIGINT to not leave dot files around, just in case
 
 * exec: when deinitializating a tty device fix the perms and group, too, not only when initializing. Set access mode/gid to 0620/tty.
 
-* DeviceAllow/DeviceDeny: disallow everything by default, but whitelist /dev/zero, /dev/null and friends
-
 * service: watchdog logic: for testing purposes allow ping, but do not require pong
 
 * journal:
 * service: watchdog logic: for testing purposes allow ping, but do not require pong
 
 * journal:
@@ -390,12 +460,13 @@ Features:
 * deal with sendmail/postfix exclusivity
 
 * timer units:
 * deal with sendmail/postfix exclusivity
 
 * timer units:
-  - configurable jitter for timer events
   - timer events with system resume
   - timer units should get the ability to trigger when:
     o CLOCK_REALTIME makes jumps (TFD_TIMER_CANCEL_ON_SET)
     o DST changes
   - Support 2012-02~4 as syntax for specifying the fourth to last day of the month.
   - timer events with system resume
   - timer units should get the ability to trigger when:
     o CLOCK_REALTIME makes jumps (TFD_TIMER_CANCEL_ON_SET)
     o DST changes
   - Support 2012-02~4 as syntax for specifying the fourth to last day of the month.
+  - Modulate timer frequency based on battery state
+  - anacron-like feature
 
 * update the kernel's TZ (sys_tz) when DST changes
 
 
 * update the kernel's TZ (sys_tz) when DST changes
 
@@ -466,6 +537,7 @@ Features:
   - nspawn: maybe add a way to drop additional caps, in addition to add additional caps
   - nspawn: maybe explicitly reset loginuid?
   - nspawn: make it work for dwalsh and shared /usr containers -- tmpfs mounts as command line parameters, selinux exec context
   - nspawn: maybe add a way to drop additional caps, in addition to add additional caps
   - nspawn: maybe explicitly reset loginuid?
   - nspawn: make it work for dwalsh and shared /usr containers -- tmpfs mounts as command line parameters, selinux exec context
+  - refuses to boot containers without /etc/machine-id (OK?), and with empty /etc/machine-id (not OK).
 
 * cryptsetup:
   - cryptsetup-generator: allow specification of passwords in crypttab itself
 
 * cryptsetup:
   - cryptsetup-generator: allow specification of passwords in crypttab itself
@@ -493,8 +565,6 @@ Features:
 
 * Query Paul Moore about relabelling socket fds while they are open
 
 
 * Query Paul Moore about relabelling socket fds while they are open
 
-* system.conf should have controls for cgroups
-
 * allow writing multiple conditions in unit files on one line
 
 * explore multiple service instances per listening socket idea
 * allow writing multiple conditions in unit files on one line
 
 * explore multiple service instances per listening socket idea
@@ -542,8 +612,6 @@ Features:
 
 * when breaking cycles drop sysv services first, then services from /run, then from /etc, then from /usr
 
 
 * when breaking cycles drop sysv services first, then services from /run, then from /etc, then from /usr
 
-* move passno parsing to fstab generator
-
 * automount: implement expire:
    - set superblock timeout AUTOFS_DEV_IOCTL_TIMEOUT_CMD
    - periodically run AUTOFS_DEV_IOCTL_EXPIRE_CMD
 * automount: implement expire:
    - set superblock timeout AUTOFS_DEV_IOCTL_TIMEOUT_CMD
    - periodically run AUTOFS_DEV_IOCTL_EXPIRE_CMD
@@ -562,7 +630,6 @@ Features:
 * udev:
   - remove src/udev/udev-builtin-firmware.c (CONFIG_FW_LOADER_USER_HELPER=n)
   - move to LGPL
 * udev:
   - remove src/udev/udev-builtin-firmware.c (CONFIG_FW_LOADER_USER_HELPER=n)
   - move to LGPL
-  - unify utf8 validator code with shared/
   - kill scsi_id
   - add trigger --subsystem-match=usb/usb_device device
 
   - kill scsi_id
   - add trigger --subsystem-match=usb/usb_device device
 
@@ -586,10 +653,6 @@ Features:
 
 * support crash reporting operation modes (https://live.gnome.org/GnomeOS/Design/Whiteboards/ProblemReporting)
 
 
 * support crash reporting operation modes (https://live.gnome.org/GnomeOS/Design/Whiteboards/ProblemReporting)
 
-* clean up session cgroups that remain after logout (think sshd), but eventually run empty
-
-* when an instanced service exits, remove its parent cgroup too if possible.
-
 * default to actual 32bit PIDs, via /proc/sys/kernel/pid_max
 
 * be able to specify a forced restart of service A where service B depends on, in case B
 * default to actual 32bit PIDs, via /proc/sys/kernel/pid_max
 
 * be able to specify a forced restart of service A where service B depends on, in case B
@@ -623,6 +686,8 @@ Features:
   when we start a service in order to avoid confusion when a user
   assumes starting a service is enough to make it accessible
 
   when we start a service in order to avoid confusion when a user
   assumes starting a service is enough to make it accessible
 
+* support User= and Group= attributes for AF_UNIX sockets.
+
 * Make it possible to set the keymap independently from the font on
   the kernel cmdline. Right now setting one resets also the other.
 
 * Make it possible to set the keymap independently from the font on
   the kernel cmdline. Right now setting one resets also the other.
 
@@ -700,6 +765,14 @@ Features:
    - document initcall_debug
    - kernel cmdline "bootchart" option for simplicity?
 
    - document initcall_debug
    - kernel cmdline "bootchart" option for simplicity?
 
+* udev-link-config:
+   - Make sure ID_PATH is always exported and complete for
+     network devices where possible, so we can safely rely
+     on Path= matching
+   - NamePolicy= replace the current naming rules
+   - MACPolicy= support 'firmware', 'synthetic' and 'random'
+   - Check if Driver= is broken, or just my driver (bcma)
+
 External:
 
 * dbus:
 External:
 
 * dbus: