chiark / gitweb /
Update TODO
[elogind.git] / TODO
diff --git a/TODO b/TODO
index e85eb55672d5f940c4f4257578e0983162f6fd16..4e16cd35444fc8bd550ce3bc3d7ca4790c995c23 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,6 +1,4 @@
 Bugfixes:
-* Re-enable "fsck -l" when it is ready:
-   https://bugs.freedesktop.org/show_bug.cgi?id=79576#c5
 
 * Should systemctl status \* work on all unit types, not just .service?
 
@@ -10,9 +8,19 @@ Bugfixes:
 
 * properly handle .mount unit state tracking when two mount points are stacked one on top of another on the exact same mount point.
 
+* ExecStart with unicode characters fails in strv_split_quoted:
+
+          [Service]
+          Environment=ONE='one' "TWO='two two' too" THREE=
+          ExecStart=/bin/python3 -c 'import sys;print(sys.argv)' $ONE $TWO $THREE
+
+* MEMORY return code is overloaded for syntax errors in the command line.
+  str_split_quoted() should return a real return code, so spawn_child can
+  report the failure properly.
+
+* udev_set_log_priority should verify the value before saving it.
+
 External:
-* Fedora: when installing fedora with yum --installroot /var/run is a directory, not a symlink
-   https://bugzilla.redhat.com/show_bug.cgi?id=975864
 
 * Fedora: add an rpmlint check that verifies that all unit files in the RPM are listed in %systemd_post macros.
 
@@ -22,46 +30,114 @@ External:
 
 * Fedora: remove /etc/resolv.conf tmpfiles hack
 
+* wiki: update journal format documentation for lz4 additions
+
+* When lz4 gets an API for lz4 command output, make use of it to
+  compress coredumps in a way compatible with /usr/bin/lz4.
+
 Features:
 
-* sd_notify("SHUTDOWN=1") to fix a dbus activation race.
-  http://lists.freedesktop.org/archives/systemd-devel/2014-July/020983.html
+* increase CORE resource limit by default for all services, so that coredumpctl becomes useful
 
-* merge ~/.local/share and ~/.local/lib into one similar /usr/lib and /usr/share....
+* firstboot: make it useful to be run immediately after yum --installroot to set up a machine.
+
+* networkd-wait-online really should have a timeout by default
+
+* expose orientation sensors through logind
+
+* add infrastructure to allocate dynamic/transient users and UID ranges, for use in user-namespaced containers, per-seat gdm login screens and gdm guest sessions
+
+* resolved: maybe randomize DNS UDP source ports
+
+* resolved: maybe compare query section of DNS replies
+
+* machined: add an API so that libvirt-lxc can inform us about network interfaces being removed or added to an existing machine
+
+* maybe add support for specifier expansion in user.conf, specifically DefaultEnvironment=
+
+* kdbus: set the bus-wide creds sender requirement mask to ANY
+
+* kdbus: busnames.target should get pulled in by basic.target
+
+* code cleanup: retire FOREACH_WORD_QUOTED, port to unquote_first_word() loops instead
+
+* logind: when the power button is pressed short, just popup a logout dialog. If it is pressed for 1s, do the usual shutdown. Inspiration are Macs here.
+
+* optionally support running journald from the command line for testing purposes in external projects
+
+* journald: allow per-priority and per-service retention times when rotating/vacuuming
+
+* introduce systemd-timesync-wait.service or so to sync on an NTP fix?
+
+* systemd --user should issue sd_notify() upon reaching basic.target, not on becoming idle
+
+* configure.ac pretends dbus was optional but actually hardcodes use of dbus' pkg-config file to determine various dbus dirs such as policy and activation dirs
+
+* consider showing the unit names during boot up in the status output, not just the unit descriptions
+
+* dhcp: do we allow configuring dhcp routes on interfaces that are not the one we got the dhcp info from?
+
+* maybe allow timer units with an empty Units= setting, so that they
+  can be used for resuming the system but nothing else.
+
+* what to do about udev db binary stability for apps?
+
+* maybe provide an API to allow migration of foreign PIDs into existing scopes.
+
+* PID 1 doesn't apply nspawns devices cgroup policy
+
+* maybe support a new very "soft" reboot mode, that simply kills all processes, disassembles everything, flushes /run and sysvipc, and then reexecs systemd again
+
+* man: document that corrupted journal files is nothing to act on
+
+* bus-proxy: when passing messages from kdbus, make sure we properly
+  handle the case where a large number of fds is appended that we
+  cannot pass into sendmsg() of the AF_UNIX sokcet (which only accepts
+  253 messages)
 
-* make "systemctl suspend" block until we are back from suspend
+* man: maybe use the word "inspect" rather than "introspect"?
 
-* remove readahead in 217
+* introduce machines.target to order after all nspawn instances
+
+* systemd-nspawn@.service should fail if some nspawn arg is invalid, with Type=notify
+
+* "machinectl list" should probably show columns for OS version and IP addresses
+
+* systemctl: if it fails, show log output?
+
+* maybe add "systemctl edit" that copies unit files from /usr/lib/systemd/system to /etc/systemd/system and invokes vim on them
+
+* refcounting in sd-resolve is borked
+
+* exponential backoff in timesyncd and resolved when we cannot reach a server
+
+* journald: make use of uid-range.h to managed uid ranges to split
+  journals in.
+
+* tmpfiles: port to unquote_many_words(), similar to sysusers
+
+* unquote_many_words() should probably be used by a lot of code that
+  currently uses FOREACH_WORD and friends. For example, most conf
+  parsing callbacks should use it.
+
+* logind: make the Suspend()/Hibernate() bus calls wait for the for
+  the job to be completed. before returning, so that clients can wait
+  for "systemctl suspend" to finish to know when the suspending is
+  complete.
+
+* merge ~/.local/share and ~/.local/lib into one similar /usr/lib and /usr/share....
 
 * journald: allows specification of UID range for splitting up journal files
 
 * systemd.show_status= should probably have a mode where only failed
   units are shown.
 
-* sd-event: - make it possible to embedd our event loop into foreign
-  event loops by passing out the epoll fd and providing three functions
-  that fit into GSource nicely.
-
 * networkd:
-  - add LLDP support
-  - ipv4ll with multiple interfaces doesn't work when both dhcp and
-    ipv4ll is used. for some reasons the kernel will currently pick an
-    ipv4ll source address to reach non-ipv4ll gateways.
-  - dhcp and ipv4ll should probably be skipped for "lo" devices, even
-    if the user has a catchall .network file installed, that might
-    theoretically match it.
-  - we probably should introduce a new operational state that
-    indicates that we are trying to acquire some configuration for a
-    link but haven't acquired any yet. Just to inform the admin that
-    networkd cares about an interface, but is still in progress..
+  - add LLDP client side support
   - the DHCP lease data (such as NTP/DNS) is still made available when
     a carrier is lost on a link. It should be removed instantly.
   - .network setting that allows overriding of the hostname to send to the dhcp server
     http://lists.freedesktop.org/archives/systemd-devel/2014-July/021550.html
-  - add per-network Domains= settings, with a special syntax Domains=*
-    for routing all non-otherwise routed traffic to this link
-  - add UseDomains= setting to [DHCP] to add dhcp supplied domains to
-    per-interface Domains= list.
   - expose in the API the following bits:
         - option 15, domain name and/or option 119, search list
         - option 12, host name and/or option 81, fqdn
@@ -73,6 +149,8 @@ Features:
     to clients. It should also pass on its own timezone information.
   - provide a way to define a per-network interface default metric value
     for all routes to it. possibly a second default for DHCP routes.
+  - allow Name= to be specified repeatedly in the [Match] section. Maybe also
+    support Name=foo*|bar*|baz ?
 
 * resolved:
   - put networkd events and rtnl events at a higher priority, so that
@@ -96,14 +174,6 @@ Features:
 
 * Allow multiple ExecStart= for all Type= settings, so that we can cover rescue.service nicely
 
-* the resolv.conf tmpfiles line should be covered by ENABLE_NETWORKD...
-
-* sysusers:
-  - also create entries in /etc/shadow, /etc/gshadow
-  - allow setting the home directory of system users
-  - allow configuration of ranges to allocate items in
-  - add mode where we read sysusers data from stdin, so that we can run this from rpm scriptlets
-
 * Add a new verb "systemctl top"
 
 * logind: allow users to kill or lock their own sessions
@@ -113,15 +183,11 @@ Features:
 * support empty /etc boots nicely:
   - nspawn/gpt-generator: introduce new gpt partition type for /usr
   - fstab-generator: support systemd.volatile=yes|no|state on the kernel cmdline, too, similar to nspawn's --volatile=
-  - fstab-generator: add support for usr= in addition to root= on the kernel cmdline
 
 * generator that automatically discovers btrfs subvolumes, identifies their purpose based on some xattr on them.
 
 * support setting empty environment variables with Environment= and EnvironmentFile=
 
-* machined/machinectl: sort IP addresses we return by scope and protocol
-* machined: write NSS module for looking up IP addresses for machines
-
 * timer units: actually add extra delays to timer units with high AccuracySec values, don't start them already when we are awake...
 
 * a way for container managers to turn off getty starting via $container_headless= or so...
@@ -130,15 +196,11 @@ Features:
 
 * journalctl: add the ability to look for the most recent process of a binary. journalctl /usr/bin/X11 --pid=-1 or so...
 
-* set NOTIFY_SOCKET also for control processes
-
 * mount_cgroup_controllers(): symlinks need to get the label applied
 
 * For timer units: add some mechanisms so that timer units that trigger immediately on boot do not have the services
   they run added to the initial transaction and thus confuse Type=idle.
 
-* Add timeout to early-boot, and shut down the system if it is hit. Solves the laptop-in-bag problem and is useful for embedded cases
-
 * Run most system services with cgroupfs read-only and procfs with a more secure mode (doesn't work, since the hidepid= option is per-pid-namespace, not per-mount)
 
 * sd-event: generate a failure of a default event loop is executed out-of-thread
@@ -218,8 +280,6 @@ Features:
 
 * unify dispatch table in systemctl_main() and friends
 
-* Automatically configure swap partition to use for hibernation by looking for largest swap partition on the root disk?
-
 * 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
 
 * After coming back from hibernation reset hibernation swap partition using the /dev/snapshot ioctl APIs
@@ -246,6 +306,8 @@ Features:
   ReadOnlyDirectories=... for whitelisting files for a service.
 
 * sd-bus:
+  - kdbus: maybe add euid, egid, fsuid, fsgid, controlling tty and ppid metadata fields
+  - see if we can introduce a new sd_bus_get_owner_machine_id() call to retrieve the machine ID of the machine of the bus itself
   - when kdbus does not take our message without memfds, try again with memfds
   - systemd-bus-proxyd needs to enforce good old XML policy
   - allow updating attach flags during runtime
@@ -261,13 +323,13 @@ Features:
        - kdbus mapping
        - NameLost/NameAcquired obsolete
        - GVariant
-       - "const" properties (posted)
        - path escaping
   - update systemd.special(7) to mention that dbus.socket is only about the compatibility socket now
   - test bloom filter generation indexes
 
 * sd-event
   - allow multiple signal handlers per signal?
+  - document chaining of signal handler for SIGCHLD and child handlers
 
 * in the final killing spree, detect processes from the root directory, and
   complain loudly if they have argv[0][0] == '@' set.
@@ -284,10 +346,6 @@ Features:
 
 * maybe add a generator that looks for "systemd.run=" on the kernel cmdline for container usercases...
 
-* timedatctl, localectl: possibly make some commands work without the daemon, for chroot situations...
-
-* timedatectl: print a nicer message when enabling ntp fails because ntpd/chrony are not installed
-
 * cgtop: make cgtop useful in a container
 
 * test/:
@@ -329,8 +387,6 @@ Features:
 
 * think about window-manager-run-as-user-service problem: exit 0 → activate shutdown.target; exit != 0 → restart service
 
-* use "log level" rather than "log priority" everywhere
-
 * merge unit_kill_common() and unit_kill_context()
 
 * introduce ExecCondition= in services
@@ -370,6 +426,7 @@ Features:
 * service: watchdog logic: for testing purposes allow ping, but do not require pong
 
 * journal:
+  - consider introducing implicit _TTY= + _PPID= + _EUID= + _EGID= + _FSUID= + _FSGID= fields
   - import and delete pstore filesystem content at startup
   - journald: also get thread ID from client, plus thread name
   - journal: when waiting for journal additions in the client always sleep at least 1s or so, in order to minimize wakeups
@@ -391,17 +448,14 @@ Features:
   - journal-send.c, log.c: when the log socket is clogged, and we drop, count this and write a message about this when it gets unclogged again.
   - journal: find a way to allow dropping history early, based on priority, other rules
   - journal: When used on NFS, check payload hashes
-  - journald: check whether it is OK if the client can still modify delivered journal entries
   - journal live copy, based on libneon (client) and libmicrohttpd (server)
   - journald: add kernel cmdline option to disable ratelimiting for debug purposes
   - refuse taking lower-case variable names in sd_journal_send() and friends.
   - journald: we currently rotate only after MaxUse+MaxFilesize has been reached.
   - journal: deal nicely with byte-by-byte copied files, especially regards header
-  - journal: store euid in journal if it differs from uid
   - journal: sanely deal with entries which are larger than the individual file size, but where the components would fit
   - Replace utmp, wtmp, btmp, and lastlog completely with journal
   - journalctl: instead --after-cursor= maybe have a --cursor=XYZ+1 syntax?
-  - tmpfiles: when applying ownership to /run/log/journal, also do this for the journal fails contained in it
   - when a kernel driver logs in a tight loop, we should ratelimit that too.
   - journald: optionally, log debug messages to /run but everything else to /var
   - journald: when we drop syslog messages because the syslog socket is
@@ -448,7 +502,6 @@ Features:
   - "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
   - systemctl list-unit-files should list generated files (and probably with a new state "generated" for them, or so)
-  - systemctl: maybe add "systemctl add-wants" or so...
 
 * timer units:
   - timer units should get the ability to trigger when:
@@ -459,15 +512,6 @@ Features:
   - when parsing calendar timestamps support the UTC timezone (even if we will not support arbitrary timezone specs, support UTC itself certainly makes sense), also support syntaxes such as +0200
   - Modulate timer frequency based on battery state
 
-* update the kernel's TZ (sys_tz) when DST changes
-
-* sync down the system time to the RTC when:
-    - CLOCK_REALTIME makes jumps (the user explicitely requested a time set)
-    - DST/timezone changes && ntp is active && RTC-in-localtime (never do it without ntp)
-  This takes care of syncing ntpdate updates to the RTC, and DST updates for localtime
-  mode, it will never touch the RTC if the no reliable time source is active or the
-  user did not request anything like it.
-
 * add libsystemd-password or so to query passwords during boot using the password agent logic
 
 * If we show an error about a unit (such as not showing up) and it has no Description string, then show a description string generated form the reverse of unit_name_mangle().
@@ -505,8 +549,6 @@ Features:
 
 * make timer units go away after they elapsed
 
-* come up with a nice way to write queue/read_ahead_kb for a block device without interfering with readahead
-
 * move PID 1 segfaults to /var/lib/systemd/coredump?
 
 * create /sbin/init symlinks from the build system
@@ -524,10 +566,6 @@ Features:
 
 * properly handle loop back mounts via fstab, especially regards to fsck/passno
 
-* allow services with no ExecStart= but with an ExecStop=
-
-* dracut-shutdown needs to be ordered before unmounting /boot
-
 * initialize the hostname from the fs label of /, if /etc/hostname does not exist?
 
 * rename "userspace" to "core-os"
@@ -555,7 +593,6 @@ Features:
 * ExecOnFailure=/usr/bin/foo
 
 * udev:
-  - remove src/udev/udev-builtin-firmware.c (CONFIG_FW_LOADER_USER_HELPER=n)
   - move to LGPL
   - kill scsi_id
   - add trigger --subsystem-match=usb/usb_device device
@@ -601,9 +638,7 @@ Features:
 
 * make sure systemd-ask-password-wall does not shutdown systemd-ask-password-console too early
 
-* support sd_notify() style notification when reload begins (RELOADING=1), reload is finished (READY=1), and add ReloadSignal= then to use in combination
-
-* support sd_notify() style notification when shutting down, to make auto-exit bus services work (STOPPING=1)
+* add ReloadSignal= for configuring a reload signal to use
 
 * verify that the AF_UNIX sockets of a service in the fs still exist
   when we start a service in order to avoid confusion when a user
@@ -614,13 +649,6 @@ Features:
 
 * and a dbus call to generate target from current state
 
-* readahead:
-  - drop /.readahead on bigger upgrades with yum
-  - move readahead files into /var (look for them with .path units?)
-  - readahead: use BTRFS_IOC_DEFRAG_RANGE instead of BTRFS_IOC_DEFRAG ioctl, with START_IO
-  - readahead: when bumping /sys readahead variable save mtime and compare later to detect changes
-  - readahead: make use of EXT4_IOC_MOVE_EXT, as used by http://e4rat.sourceforge.net/
-
 * GC unreferenced jobs (such as .device jobs)
 
 * write blog stories about:
@@ -658,8 +686,6 @@ Features:
 
 * fingerprint.target, wireless.target, gps.target, netdevice.target
 
-* drop cap bounding set in readahead and other services
-
 * systemd-python:
    - figure out a simple way to wait for journal events in a way that
      works with ^C
@@ -708,7 +734,6 @@ Features:
    - implement reconfigure support, see 5.3., 15.11. and 22.20.
    - implement information request, see 1.2. and 18.1.5.
    - implement support for temporary adressess (IA_TA)
-   - implement elapsed time option
    - implement dhcpv6 authentication
    - investigate the usefulness of Confirm messages; i.e. are there any
      situations where the link changes without any loss in carrier detection
@@ -750,8 +775,10 @@ External:
 
 * register catalog database signature as file magic
 
-* zsh shell completion: <command> <verb> -<TAB> should complete options, but currently
-  does not
+* zsh shell completion:
+  - <command> <verb> -<TAB> should complete options, but currently does not
+  - systemctl add-wants,add-requires
+
 
 Regularly: