]> git.ipfire.org Git - thirdparty/systemd.git/blame - TODO
Merge pull request #10757 from Antique/cgroupv2
[thirdparty/systemd.git] / TODO
CommitLineData
afe3ab58 1Bugfixes:
c343be28 2
c6407108 3* copy.c: set the right chattrs before copying files and others after
d19e85f0 4
54fcb619
ZJS
5* Many manager configuration settings that are only applicable to user
6 manager or system manager can be always set. It would be better to reject
7 them when parsing config.
8
f38afcd0 9External:
f85857df 10
f38afcd0 11* Fedora: add an rpmlint check that verifies that all unit files in the RPM are listed in %systemd_post macros.
bafb15ba 12
83a1ff25
ZJS
13* wiki: update journal format documentation for lz4 additions
14
5e524b40
LP
15Janitorial Clean-ups:
16
5e524b40
LP
17* Rearrange tests so that the various test-xyz.c match a specific src/basic/xyz.c again
18
bb527e11
LP
19* rework mount.c and swap.c to follow proper state enumeration/deserialization
20 semantics, like we do for device.c now
21
c6407108
LP
22Features:
23
d49881a0
LP
24* systemd-gpt-auto: if we find the root dir mounted read-only and the gpt flag
25 doesn't say so generate job that remounts it writable
26
bc137cf4
LP
27* When logind.conf contains HandleLidSwitch=suspend-then-hibernate and we can't
28 hibernate because the swap partition isn't large enough, still suspend
29
30* Now that C.UTF-8 is standardized in glibc, default to it if locale.conf
31 doesn't set anything otherwise
32
d3584ec4
LP
33* bootctl: implement Type #2 boot loader entry discovery
34
35* bootctl,sd-boot: actually honour the "architecture" key
36
876449bb
LP
37* consider splitting out all temporary file creation APIs (we have so many in
38 fileio.h and elsewhere!) into a new util file of its own.
39
32875617
LP
40* set memory.oom.group in cgroupsv2 for all leaf cgroups
41
06898123
LP
42* drop umask() calls and suchlike from our generators, pid1 should set things up correctly anyway
43
44* paranoia: whenever we process passwords, call mlock() on the memory
45 first. i.e. look for all places we use string_erase()/string_free_erase() and
46 augment them with mlock()
47
32875617
LP
48* whenever oom_kill memory.event event is triggered print a nice log message
49
50* Move RestrictAddressFamily= to the new cgroup create socket
51
52* support the bind/connect/sendmsg cgroup stuff for sandboxing, and possibly
53 patching around
54
76853293
LP
55* maybe implicitly attach monotonic+realtime timestamps to outgoing messages in
56 log.c and sd-journal-send
57
bd1b3f75
LP
58* chown() tty a service is attached to after the service goes down
59
06898123
LP
60* optionally: turn on cgroup delegation for per-session scope units
61
d3aeddb8
LP
62* introduce per-unit (i.e. per-slice, per-service) journal log size limits.
63
af560fc1
LP
64* optionally, if a per-partition GPT flag is set for the root/home/… partitions
65 format the partition on next boot and unset the flag, in order to implement
66 factory reset. also, add a second flag that simply indicates whether such a
67 scheme is supported. then, add a tool (or maybe beef up systemd-dissect) to
68 show state of these flags, and optionally trigger such a factory reset on
69 next boot by setting the flag.
70
42e18088
LP
71* sd-boot: search drop-ins in $BOOT, too
72
73* sd-boot: add "oneshot boot timeout" variable support
74
75* sd-boot: automatically load EFI modules from some drop-in dir, so that people
76 can add in file system drivers and such
77
78* esp generator: also mount $BOOT if found
79
80* sd-boot: optionally, show boot menu when previous default boot item has
81 non-zero "tries done" count
82
83* logind: add "boot into bootmenu" API, and possibly even "boot into windows"
84 and "boot into macos".
85
86* bootspec.c: also enumerate EFI unified kernel images.
87
7bd4bcf7
LP
88* maybe extend .path units to expose fanotify() per-mount change events
89
a33ffd15
LP
90* Add a "systemctl list-units --by-slice" mode or so, which rearranges the
91 output of "systemctl list-units" slightly by showing the tree structure of
92 the slices, and the units attached to them.
93
20d4b101
LP
94* the a-posteriori stopping of units bound to units that disappeared logic
95 should be reworked: there should be a queue of units, and we should only
96 enqeue stop jobs from a defer event that processes queue instead of
97 right-away when we find a unit that is bound to one that doesn't exist
98 anymore. (similar to how the stop-unneeded queue has been reworked the same
99 way)
4e8113bb 100
126708fa
LP
101* nspawn: make nspawn suitable for shell pipelines: instead of triggering a
102 hangup when input is finished, send ^D, which synthesizes an EOF. Then wait
103 for hangup or ^D before passing on the EOF.
104
bb527e11
LP
105* When reloading configuration PID 1 should reset all its properties to the
106 original defaults before calling parse_config()
107
cd710e6a
LP
108* Add OnTimezoneChange= and OnTimeChange= stanzas to .timer units in order to
109 schedule events based on time and timezone changes.
110
72d711ef 111* nspawn: greater control over selinux label?
c7db2a9d 112
070d0ac9
LP
113* cgroups: figure out if we can somehow communicate in a cleaner way whether a
114 systemd instance not running in the cgroup root shall or shall not manage the
115 attributes of its top-level cgroup. Currently it assumes it manages all, but
116 then might get EPERM due to permission porblems/userns, which is OK, but this
117 should be revisited to make clearer and also work if the payload systemd runs
118 with full privs and without userns.
119
c633b0a6
LP
120* hibernate/s2h: make this robust and safe to enable in Fedora by default.
121 Specifically:
122
123 1. add resume_offset support to the resume code (i.e. support swap files
124 properly)
e83419d0 125 2. check if swap is on weird storage and refuse if so
9259d0e2 126 3. add autodetection of hibernation images
c633b0a6 127
070d0ac9
LP
128* cgroups: use inotify to get notified when somebody else modifies cgroups
129 owned by us, then log a friendly warning.
130
e44924f5
LP
131* beef up log.c with support for stripping ANSI sequences from strings, so that
132 it is OK to include them in log strings. This would be particularly useful so
133 that our log messages could contain clickable links for example for unit
134 files and suchlike we operate on.
070d0ac9 135
8c4c2dfc
LP
136* add support for "portablectl attach http://foobar.com/waaa.raw (i.e. importd integration)
137
138* add attach --enable and attach --now (for attach+enable+start)
139
140* sync dynamic uids/gids between host+portable srvice (i.e. if DynamicUser=1 is set for a service, make sure that the
141 selected user is resolvable in the service even if it ships its own /etc/passwd)
142
5da19043
LP
143* Fix DECIMAL_STR_MAX or DECIMAL_STR_WIDTH. One includes a trailing NUL, the
144 other doesn't. What a desaster. Probably to exclude it. Also
145 DECIMAL_STR_WIDTH should probably add an extra "-" into account for negative
146 numbers.
147
16270697
LP
148* Check that users of inotify's IN_DELETE_SELF flag are using it properly, as
149 usually IN_ATTRIB is the right way to watch deleted files, as the former only
150 fires when a file is actually removed from disk, i.e. the link count drops to
151 zero and is not open anymore, while the latter happens when a file is
152 unlinked from any dir.
153
bd1b3f75 154* port systemctl, busctl, … over to format-table.[ch]'s table formatters
5da19043 155
7bc756ff
LP
156* pid1: lock image configured with RootDirectory=/RootImage= using the usual nspawn semantics while the unit is up
157
158* add --vacuum-xyz options to coredumpctl, matching those journalctl already has.
159
0bb8dfaa
LP
160* SuccessExitStatus= and friends should probably also accept symbolic exit
161 codes names, i.e. error codes from the list maintained in exit-codes.[ch]
162
53c70a27
LP
163* introduce Ephemeral= unit file switch, that creates an ephemeral copy of all
164 files and directories that are left writable for a unit, and which are
165 removed after the unit goes down again. A bit like --ephemeral for
166 systemd-nspawn but for system services. If used together with RootImage= this
167 should reflink the image file itself.
168
169 Related: add Ephemeral=<path1> <path2> … which would allow marking
170 specific paths only like this.
171
53c70a27
LP
172* add CopyFile= or so as unit file setting that may be used to copy files or
173 directory trees from the host to te services RootImage= and RootDirectory=
174 environment. Which we can use for /etc/machine-id and in particular
175 /etc/resolv.conf. Should be smart and do something useful on read-only
176 images, for example fallback to read-only bind mounting the file instead.
177
d9b50610
LP
178* nspawn's console TTY should be allocated from within the container, not
179 mounted in from the outside
180
181* show invocation ID in systemd-run output
182
183* bypass SIGTERM state in unit files if KillSignal is SIGKILL
184
185* tree-wide: ensure we always block the signals we hook into with
186 sd_event_add_signal() first
187
9711b1ad
LP
188* add proper dbus APIs for the various sd_notify() commands, such as MAINPID=1
189 and so on, which would mean we could report errors and such.
190
1e784321
LP
191* teach tmpfiles.d q/Q logic something sensible in the context of XFS/ext4
192 project quota
0d545655 193
6b7b0f39
LP
194* introduce DefaultSlice= or so in system.conf that allows changing where we
195 place our units by default, i.e. change system.slice to something
196 else. Similar, ManagerSlice= should exist so that PID1's own scope unit could
197 be moved somewhere else too. Finally machined and logind should get similar
198 options so that it is possible to move user session scopes and machines to a
199 different slice too by default. Usecase: people who want to put resources on
200 the entire system, with the exception of one specific service. See:
201 https://lists.freedesktop.org/archives/systemd-devel/2018-February/040369.html
202
aa79f932
LP
203* maybe rework get_user_creds() to query the user database if $SHELL is used
204 for root, but only then.
586a8e93 205
46099c9e
LP
206* be stricter with fds we receive for the fdstore: close them asynchronously
207
46099c9e
LP
208* calenderspec: add support for week numbers and day numbers within a
209 year. This would allow us to define "bi-weekly" triggers safely.
210
c3cd7cc9
LP
211* sd-bus: add vtable flag, that may be used to request client creds implicitly
212 and asynchronously before dispatching the operation
213
06345858
LP
214* make use of ethtool veth peer info in machined, for automatically finding out
215 host-side interface pointing to the container.
216
48f1b5e5
LP
217* add some special mode to LogsDirectory=/StateDirectory=… that allows
218 declaring these directories without necessarily pulling in deps for them, or
219 creating them when starting up. That way, we could declare that
220 systemd-journald writes to /var/log/journal, which could be useful when we
221 doing disk usage calculations and so on.
222
cb77e122 223* taint systemd if there are fewer than 65536 users assigned (userns) to the system.
c6009ff0
LP
224
225* deprecate PermissionsStartOnly= and RootDirectoryStartOnly= in favour of the ExecStart= prefix chars
226
3d80d454
LP
227* add a new RuntimeDirectoryPreserve= mode that defines a similar lifecycle for
228 the runtime dir as we maintain for the fdstore: i.e. keep it around as long
229 as the unit is running or has a job queued.
230
5962e9db
LP
231* support projid-based quota in machinectl for containers, and then drop
232 implicit btrfs loopback magic in machined
233
17b6f896
LP
234* Add NetworkNamespacePath= to specify a path to a network namespace
235
17b6f896
LP
236* maybe use SOURCE_DATE_EPOCH (i.e. the env var the reproducible builds folks
237 introduced) as the RTC epoch, instead of the mtime of NEWS.
238
17b6f896
LP
239* add a way to lock down cgroup migration: a boolean, which when set for a unit
240 makes sure the processes in it can never migrate out of it
241
17b6f896
LP
242* blog about fd store and restartable services
243
244* document Environment=SYSTEMD_LOG_LEVEL=debug drop-in in debugging document
245
370f9c21
LP
246* rework ExecOutput and ExecInput enums so that EXEC_OUTPUT_NULL loses its
247 magic meaning and is no longer upgraded to something else if set explicitly.
248
17b6f896
LP
249* in the long run: permit a system with /etc/machine-id linked to /dev/null, to
250 make it lose its identity, i.e. be anonymous. For this we'd have to patch
251 through the whole tree to make all code deal with the case where no machine
252 ID is available.
253
254* optionally, collect cgroup resource data, and store it in per-unit RRD files,
255 suitable for processing with rrdtool. Add bus API to access this data, and
256 possibly implement a CPULoad property based on it.
257
e7e4a258
LP
258* beef up pam_systemd to take unit file settings such as cgroups properties as
259 parameters
260
e7e4a258
LP
261* a new "systemd-analyze security" tool outputting a checklist of security
262 features a service does and does not implement
263
6fc373ee
LP
264* maybe hook of xfs/ext4 quotactl() with services? i.e. automatically manage
265 the quota of a the user indicated in User= via unit file settings, like the
5962e9db
LP
266 other resource management concepts. Would mix nicely with DynamicUser=1. Or
267 alternatively, do this with projids, so that we can also cover services
268 running as root. Quota should probably cover all the special dirs such as
269 StateDirectory=, LogsDirectory=, CacheDirectory=, as well as RootDirectory= if it
270 is set, plus the whole disk space any image configured with RootImage=.
6fc373ee 271
9a92a97a
LP
272* Introduce "exit" as an EmergencyAction value, and allow to configure a
273 per-unit success/failure exit code to configure. This would be useful for
274 running commands inside of services inside of containers, which could then
275 propagate their failure state all the way up.
276
277* In DynamicUser= mode: before selecting a UID, use disk quota APIs on relevant
278 disks to see if the UID is already in use.
279
2368e974
LP
280* add "systemctl wait" or so, which does what "systemd-run --wait" does, but
281 for all units. It should be both a way to pin units into memory as well as a
282 wait to retrieve their exit data.
283
fa991fb7
LP
284* expose IO accounting data on the bus, show it in systemd-run --wait and log
285 about it in the resource log message
286
287* add "systemctl purge" for flushing out configuration, state, logs, ... of a
288 unit when it is stopped
289
290* show whether a service has out-of-date configuration in "systemctl status" by
291 using mtime data of ConfigurationDirectory=.
292
620218fb
LP
293* replace all uses of fgets() + LINE_MAX by read_line()
294
d73b607d
LP
295* Add AddUser= setting to unit files, similar to DynamicUser=1 which however
296 creates a static, persistent user rather than a dynamic, transient user. We
297 can leverage code from sysusers.d for this.
298
fd63f36c
LP
299* add some optional flag to ReadWritePaths= and friends, that has the effect
300 that we create the dir in question when the service is started. Example:
301
302 ReadWritePaths=:/var/lib/foobar
303
3576dddf
LP
304* maybe add call sd_journal_set_block_timeout() or so to set SO_SNDTIMEO for
305 the sd-journal logging socket, and, if the timeout is set to 0, sets
306 O_NONBLOCK on it. That way people can control if and when to block for
307 logging.
308
fe6a0235
LP
309* hostnamed: populate form factor data from a new hwdb database, so that old
310 yogas can be recognized as "convertible" too, even if they predate the DMI
311 "convertible" form factor
312
08422e63
LP
313* Maybe add a small tool invoked early at boot, that adds in or resizes
314 partitions automatically, to be used when the media used is actually larger
315 than the image written onto it is.
316
d543b9f5
LP
317* Maybe add PrivatePIDs= as new unit setting, and do minimal PID namespacing
318 after all. Be strict however, only support the equivalent of nspawn's
319 --as-pid2 switch, and sanely proxy sd_notify() messages dropping stuff such
320 as MAINPID.
321
f59d1da8
LP
322* Add ExecMonitor= setting. May be used multiple times. Forks off a process in
323 the service cgroup, which is supposed to monitor the service, and when it
324 exits the service is considered failed by its monitor.
325
33bac67b
LP
326* track the per-service PAM process properly (i.e. as an additional control
327 process), so that it may be queried on the bus and everything.
328
329* add a new "debug" job mode, that is propagated to unit_start() and for
330 services results in two things: we raise SIGSTOP right before invoking
331 execve() and turn off watchdog support. Then, use that to implement
332 "systemd-gdb" for attaching to the start-up of any system service in its
333 natural habitat.
334
8eb7383b
LP
335* maybe introduce gpt auto discovery for /var/tmp?
336
8eb7383b
LP
337* maybe add gpt-partition-based user management: each user gets his own
338 LUKS-encrypted GPT partition with a new GPT type. A small nss module
339 enumerates users via udev partition enumeration. UIDs are assigned in a fixed
340 way: the partition index is added as offset to some fixed base uid. User name
341 is stored in GPT partition name. A PAM module authenticates the user via the
342 LUKS partition password. Benefits: strong per-user security, compatibility
343 with stateless/read-only/verity-enabled root. (other idea: do this based on
344 loopback files in /home, without GPT involvement)
345
346* gpt-auto logic: introduce support for discovering /var matching an image. For
347 that, use a partition type UUID that is hashed from the OS name (as encoded
348 in /etc/os-release), the architecture, and 4 new bits from the gpt flags
349 field of the root partition. This way can easily support multiple OS
350 installations on the same GPT partition table, without problems with
351 unmatched /var partitions.
352
353* gpt-auto logic: related to the above, maybe support a "secondary" root
354 partition, that is mounted to / and is writable, and where the actual root's
355 /usr is mounted into.
356
8eb7383b
LP
357* gpt-auto logic: support encrypted swap, add kernel cmdline option to force it, and honour a gpt bit about it, plus maybe a configuration file
358
67234d21
LP
359* drop nss-myhostname in favour of nss-resolve?
360
b5bdbcd5
LP
361* add a percentage syntax for TimeoutStopSec=, e.g. TimeoutStopSec=150%, and
362 then use that for the setting used in user@.service. It should be understood
363 relative to the configured default value.
364
d21494ea
LP
365* in networkd, when matching device types, fix up DEVTYPE rubbish the kernel passes to us
366
367* enable LockMLOCK to take a percentage value relative to physical memory
368
04397464 369* Permit masking specific netlink APIs with RestrictAddressFamily=
d82047be 370
d82047be
LP
371* nspawn: support that /proc, /sys/, /dev are pre-mounted
372
d82047be
LP
373* define gpt header bits to select volatility mode
374
42d61ded
LP
375* ProtectKernelLogs= (drops CAP_SYSLOG, add seccomp for syslog() syscall, and DeviceAllow to /dev/kmsg) in service files
376
377* ProtectClock= (drops CAP_SYS_TIMES, adds seecomp filters for settimeofday, adjtimex), sets DeviceAllow o /dev/rtc
378
04397464 379* ProtectTracing= (drops CAP_SYS_PTRACE, blocks ptrace syscall, makes /sys/kernel/tracing go away)
42d61ded 380
04397464 381* ProtectMount= (drop mount/umount/pivot_root from seccomp, disallow fuse via DeviceAllow, imply Mountflags=slave)
563a69f4 382
04397464 383* ProtectKeyRing= to take keyring calls away
2c5f2958 384
8ce9b83a 385* RemoveKeyRing= to remove all keyring entries of the specified user
a46eac1b
LP
386
387* ProtectReboot= that masks reboot() and kexec_load() syscalls, prohibits kill
388 on PID 1 with the relevant signals, and makes relevant files in /sys and
389 /proc (such as the sysrq stuff) unavailable
390
e40a326c 391* make sure the ratelimit object can deal with USEC_INFINITY as way to turn off things
89f193fa 392
6809de5b
LP
393* journalctl: make sure -f ends when the container indicated by -M terminates
394
2c5f2958
LP
395* mount: automatically search for "main" partition of an image has multiple
396 partitions
397
f8afc2a9
LP
398* expose the "privileged" flag of ExecCommand on the bus, and open it up to
399 transient units
400
8ce9b83a
LP
401* in nss-systemd, if we run inside of RootDirectory= with PrivateUsers= set,
402 find a way to map the User=/Group= of the service to the right name. This way
403 a user/group for a service only has to exist on the host for the right
404 mapping to work.
405
2c5f2958
LP
406* add bus API for creating unit files in /etc, reusing the code for transient units
407
408* add bus API to remove unit files from /etc
409
410* add bus API to retrieve current unit file contents (i.e. implement "systemctl cat" on the bus only)
411
b8c7afdf
LP
412* rework fopen_temporary() to make use of open_tmpfile_linkable() (problem: the
413 kernel doesn't support linkat() that replaces existing files, currently)
414
1e555cb5
LP
415* transient units: don't bother with actually setting unit properties, we
416 reload the unit file anyway
417
1e555cb5
LP
418* journald: sigbus API via a signal-handler safe function that people may call
419 from the SIGBUS handler
420
c8048350
LP
421* optionally, also require WATCHDOG=1 notifications during service start-up and shutdown
422
7a79d1ec
LP
423* resolved: when routing queries, make sure only look for the *longest* suffix...
424
648b1220
LP
425* delay activation of logind until somebody logs in, or when /dev/tty0 pulls it
426 in or lingering is on (so that containers don't bother with it until PAM is used). also exit-on-idle
427
3d39e6e5
LP
428* cache sd_event_now() result from before the first iteration...
429
f506d09f
LP
430* add systemctl stop --job-mode=triggering that follows TRIGGERED_BY deps and adds them to the same transaction
431
bd098bce
LP
432* PID1: find a way how we can reload unit file configuration for
433 specific units only, without reloading the whole of systemd
434
f9bf1b8f 435* add an explicit parser for LimitRTPRIO= that verifies
de7399eb 436 the specified range and generates sane error messages for incorrect
f9bf1b8f 437 specifications.
de7399eb 438
3efc8c72
LP
439* when we detect that there are waiting jobs but no running jobs, do something
440
06ce859b 441* push CPUAffinity= also into the "cpuset" cgroup controller (only after the cpuset controller got ported to the unified hierarchy)
03364e47 442
e6a26d8c
LP
443* PID 1 should send out sd_notify("WATCHDOG=1") messages (for usage in the --user mode, and when run via nspawn)
444
a2088fd0
LP
445* there's probably something wrong with having user mounts below /sys,
446 as we have for debugfs. for exmaple, src/core/mount.c handles mounts
447 prefixed with /sys generally special.
448 http://lists.freedesktop.org/archives/systemd-devel/2015-June/032962.html
449
8aa20381
LP
450* fstab-generator: default to tmpfs-as-root if only usr= is specified on the kernel cmdline
451
b18d23d7
LP
452* docs: bring http://www.freedesktop.org/wiki/Software/systemd/MyServiceCantGetRealtime up to date
453
60d17b74
LP
454* add a job mode that will fail if a transaction would mean stopping
455 running units. Use this in timedated to manage the NTP service
456 state.
457 http://lists.freedesktop.org/archives/systemd-devel/2015-April/030229.html
458
2f653bde
LP
459* Maybe add support for the equivalent of "ethtool advertise" to .link files?
460 http://lists.freedesktop.org/archives/systemd-devel/2015-April/030112.html
461
477e75ef
LP
462* The udev blkid built-in should expose a property that reflects
463 whether media was sensed in USB CF/SD card readers. This should then
464 be used to control SYSTEMD_READY=1/0 so that USB card readers aren't
465 picked up by systemd unless they contain a medium. This would mirror
466 the behaviour we already have for CD drives.
467
2bc39683
LP
468* networkd/udev: implement SR_IOV configuration in .link files:
469 http://lists.freedesktop.org/archives/systemd-devel/2015-January/027451.html
470
c3a0d00d
LP
471* hostnamectl: show root image uuid
472
d2f81fb0
LP
473* Find a solution for SMACK capabilities stuff:
474 http://lists.freedesktop.org/archives/systemd-devel/2014-December/026188.html
98cd2651 475
2a441c8a
LP
476* "systemctl preset-all" should probably order the unit files it
477 operates on lexicographically before starting to work, in order to
478 ensure deterministic behaviour if two unit files conflict (like DMs
479 do, for example)
480
0a86c1a9
LP
481* synchronize console access with BSD locks:
482 http://lists.freedesktop.org/archives/systemd-devel/2014-October/024582.html
483
e031c227 484* as soon as we have sender timestamps, revisit coalescing multiple parallel daemon reloads:
0a86c1a9
LP
485 http://lists.freedesktop.org/archives/systemd-devel/2014-December/025862.html
486
e3286870
LP
487* in systemctl list-unit-files: show the install value the presets would suggest for a service in a third column
488
8514b677
LP
489* figure out when we can use the coarse timers
490
7b0fce61
LP
491* add "systemctl start -v foobar.service" that shows logs of a service
492 while the start command runs. This is non-trivial to do without
493 races though, since we should flush out all journal messages before
494 returning from the "systemctl stop".
495
b568ef14 496* firstboot: make it useful to be run immediately after yum --installroot to set up a machine. (most specifically, make --copy-root-password work even if /etc/passwd already exists
c2d5b3c9 497
d48b7bd2
LP
498* maybe add support for specifier expansion in user.conf, specifically DefaultEnvironment=
499
8483d73f
LP
500* consider showing the unit names during boot up in the status output, not just the unit descriptions
501
8483d73f
LP
502* maybe allow timer units with an empty Units= setting, so that they
503 can be used for resuming the system but nothing else.
504
25e773ee 505* what to do about udev db binary stability for apps? (raw access is not an option)
b857e042 506
3bcde97e
LP
507* man: maybe use the word "inspect" rather than "introspect"?
508
279f0366 509* systemctl: if some operation fails, show log output?
533bb267 510
39c38ce1 511* systemctl edit: use equvalent of cat() to insert existing config as a comment, prepended with #.
b42de08a 512 Upon editor exit, lines with one # are removed, lines with two # are left with one #, etc.
202aea45 513
720652b3 514* exponential backoff in timesyncd when we cannot reach a server
42aeb14a 515
720652b3 516* timesyncd: add ugly bus calls to set NTP servers per-interface, for usage by NM
e25b5a8d 517
563b1bdc
LP
518* merge ~/.local/share and ~/.local/lib into one similar /usr/lib and /usr/share....
519
5dcf9838
LP
520* systemd.show_status= should probably have a mode where only failed
521 units are shown.
522
6bd7941e
TG
523* add systemd.abort_on_kill or some other such flag to send SIGABRT instead of SIGKILL
524 (throughout the codebase, not only PID1)
525
9d6db739 526* resolved:
9d6db739 527 - mDNS/DNS-SD
ccc3e8a1
LP
528 - service registration
529 - service/domain/types browsing
0f47ed0a 530 - avahi compat
9d6db739 531 - DNS-SD service registration from socket units
e25b5a8d
DH
532 - resolved should optionally register additional per-interface LLMNR
533 names, so that for the container case we can establish the same name
534 (maybe "host") for referencing the server, everywhere.
720652b3 535 - allow clients to request DNSSEC for a single lookup even if DNSSEC is off (?)
3efb871a 536 - hook up resolved with machined-based address resolution
3f77a1b1 537
e25b5a8d 538* refcounting in sd-resolve is borked
e2a69298 539
2834ffe7
LP
540* Add a new verb "systemctl top"
541
a940778f
LP
542* add new gpt type for btrfs volumes
543
a01647e5 544* support empty /etc boots nicely:
3c779fa5 545 - nspawn/gpt-generator: introduce new gpt partition type for /usr
a01647e5 546
3de03738
LP
547* generator that automatically discovers btrfs subvolumes, identifies their purpose based on some xattr on them.
548
37efac5d
LP
549* a way for container managers to turn off getty starting via $container_headless= or so...
550
7348b3ad
LP
551* figure out a nice way how we can let the admin know what child/sibling unit causes cgroup membership for a specific unit
552
81429136
KS
553* For timer units: add some mechanisms so that timer units that trigger immediately on boot do not have the services
554 they run added to the initial transaction and thus confuse Type=idle.
e107ed18 555
edb2935c
LP
556* add bus api to query unit file's X fields.
557
6a3f892a 558* gpt-auto-generator:
2a781fc9 559 - Define new partition type for encrypted swap? Support probed LUKS for encrypted swap?
6a3f892a 560 - Make /home automount rather than mount?
6a3f892a 561
65026403
LP
562* add generator that pulls in systemd-network from containers when
563 CAP_NET_ADMIN is set, more than the loopback device is defined, even
564 when it is otherwise off
f8901862 565
f9bf1b8f 566* MessageQueueMessageSize= (and suchlike) should use parse_iec_size().
eda8f067 567
af1082b0
LP
568* implement Distribute= in socket units to allow running multiple
569 service instances processing the listening socket, and open this up
570 for ReusePort=
571
488ad3b3
LP
572* socket units: support creating sockets in different namespace,
573 opening it up for JoinsNamespaceOf=. This would require to fork off
574 a tiny process that joins the namespace and creates/binds the socket
575 and passes this back to PID1 via SCM_RIGHTS. This also could be used
576 to allow Chown/chgrp on sockets without requiring NSS in PID 1.
577
09ecd746
LP
578* introduce bus call FreezeUnit(s, b), as well as "systemctl freeze
579 $UNIT" and "systemctl thaw $UNIT" as wrappers around this. The calls
580 should SIGSTOP all unit processes in a loop until all processes of
581 it are fully stopped. This can later be used for app management by
582 desktop UIs such as gnome-shell to freeze apps that are not visible
583 on screen, not unlike how job control works on the shell
584
f38afcd0 585* cgroups:
f38afcd0
LP
586 - implement per-slice CPUFairScheduling=1 switch
587 - handle jointly mounted controllers correctly
588 - introduce high-level settings for RT budget, swappiness
589 - how to reset dynamically changed unit cgroup attributes sanely?
590 - when reloading configuration, apply new cgroup configuration
591 - when recursively showing the cgroup hierarchy, optionally also show
592 the hierarchies of child processes
0bee65f0 593
f38afcd0 594* transient units:
f38afcd0 595 - add field to transient units that indicate whether systemd or somebody else saves/restores its settings, for integration with libvirt
ebcf1f97 596
47c94a96
LP
597* Automatically configure swap partition to use for hibernation by looking for largest swap partition on the root disk?
598
718db961
LP
599* when we detect low battery and no AC on boot, show pretty splash and refuse boot
600
718db961
LP
601* libsystemd-journal, libsystemd-login, libudev: add calls to easily attach these objects to sd-event event loops
602
966204e0
LP
603* be more careful what we export on the bus as (usec_t) 0 and (usec_t) -1
604
41644622
LP
605* 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
606
7f79cd71 607* After coming back from hibernation reset hibernation swap partition using the /dev/snapshot ioctl APIs
0aafd43d 608
19aadacf
JE
609* If we try to find a unit via a dangling symlink, generate a clean
610 error. Currently, we just ignore it and read the unit from the search
df5f6971
LP
611 path anyway.
612
04397464 613* refuse boot if /usr/lib/os-release is missing or /etc/machine-id cannot be set up
fcba531e 614
bdeeb6b5
LP
615* man: the documentation of Restart= currently is very misleading and suggests the tools from ExecStartPre= might get restarted.
616
617* load .d/*.conf dropins for device units
618
4e09014d
LP
619* allow implementation of InaccessibleDirectories=/ plus
620 ReadOnlyDirectories=... for whitelisting files for a service.
621
6bb648a1 622* sd-bus:
0d43ffef 623 - EBADSLT handling
fa607802 624 - GetAllProperties() on a non-existing object does not result in a failure currently
7212c608 625 - port to sd-resolve for connecting to TCP dbus servers
57f2a947 626 - 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
f38afcd0 627 - see if we can drop more message validation on the sending side
f38afcd0 628 - add API to clone sd_bus_message objects
ab9716c2 629 - longer term: priority inheritance
df98a87b 630 - dbus spec updates:
df98a87b
LP
631 - NameLost/NameAcquired obsolete
632 - GVariant
2ecfc64e 633 - path escaping
6a8b5fa4 634 - update systemd.special(7) to mention that dbus.socket is only about the compatibility socket now
f38afcd0
LP
635
636* sd-event
12179984 637 - allow multiple signal handlers per signal?
0536ce5d 638 - document chaining of signal handler for SIGCHLD and child handlers
e25b5a8d
DH
639 - define more intervals where we will shift wakeup intervals around in, 1h, 6h, 24h, ...
640 - generate a failure of a default event loop is executed out-of-thread
eb01ba5d 641
69af4503 642* investigate endianness issues of UUID vs. GUID
e8a7a315 643
461bd8e4
LP
644* dbus: when a unit failed to load (i.e. is in UNIT_ERROR state), we
645 should be able to safely try another attempt when the bus call LoadUnit() is invoked.
646
ab8e074c
LP
647* add a pam module that passes the hdd passphrase into the PAM stack and then expires it, for usage by gdm auto-login.
648
649* add a pam module that on password changes updates any LUKS slot where the password matches
650
b454b112
LP
651* maybe add a generator that looks for "systemd.run=" on the kernel cmdline for container usercases...
652
fff87a35 653* test/:
20d52ab6 654 - add unit tests for config_parse_device_allow()
b8b4d3dd 655
b5c03638 656* seems that when we follow symlinks to units we prefer the symlink
d28315e4 657 destination path over /etc and /usr. We should not do that. Instead
b5c03638
LP
658 /etc should always override /run+/usr and also any symlink
659 destination.
660
eece8c6f
LP
661* when isolating, try to figure out a way how we implicitly can order
662 all units we stop before the isolating unit...
663
356ce991
LP
664* teach ConditionKernelCommandLine= globs or regexes (in order to match foobar={no,0,off})
665
c1446921
LP
666* BootLoaderSpec: Clarify that the kernel has to be in $BOOT. Clarify
667 that the boot loader should be installed to the ESP. Define a way
668 how an installer can figure out whether a BLS compliant boot loader
669 is installed.
795607b2 670
0be8342c
LP
671* think about requeuing jobs when daemon-reload is issued? usecase:
672 the initrd issues a reload after fstab from the host is accessible
673 and we might want to requeue the mounts local-fs acquired through
674 that automatically.
675
e5ec62c5 676* systemd-inhibit: make taking delay locks useful: support sending SIGINT or SIGTERM on PrepareForSleep()
54c31a79 677
ccddd104 678* remove any syslog support from log.c — we probably cannot do this before split-off udev is gone for good
826872b6 679
3679d112
LP
680* shutdown logging: store to EFI var, and store to USB stick?
681
356ce991 682* merge unit_kill_common() and unit_kill_context()
490b7e47 683
81d112a8 684* introduce ExecCondition= in services
490b7e47 685
b44be3ec 686* EFI:
b44be3ec
LP
687 - honor language efi variables for default language selection (if there are any?)
688 - honor timezone efi variables for default timezone selection (if there are any?)
466784c8 689 - change bootctl to be backed by systemd-bootd to control temporary and persistent default boot goal plus efi variables
e4181484 690
c0fe5db5 691* maybe do not install getty@tty1.service symlink in /etc but in /usr?
e9fd44b7 692
b44be3ec 693* print a nicer explanation if people use variable/specifier expansion in ExecStart= for the first word
8ed20651 694
b44be3ec 695* mount: turn dependency information from /proc/self/mountinfo into dependency information between systemd units.
e6c6e7af 696
b44be3ec
LP
697* logind:
698 - logind: optionally, ignore idle-hint logic for autosuspend, block suspend as long as a session is around
b44be3ec
LP
699 - logind: wakelock/opportunistic suspend support
700 - Add pretty name for seats in logind
701 - logind: allow showing logout dialog from system?
f38afcd0
LP
702 - add Suspend() bus calls which take timestamps to fix double suspend issues when somebody hits suspend and closes laptop quickly.
703 - if pam_systemd is invoked by su from a process that is outside of a
704 any session we should probably just become a NOP, since that's
705 usually not a real user session but just some system code that just
706 needs setuid().
279f0366
LP
707 - logind: make the Suspend()/Hibernate() bus calls wait for the for
708 the job to be completed. before returning, so that clients can wait
709 for "systemctl suspend" to finish to know when the suspending is
710 complete.
711 - logind: when the power button is pressed short, just popup a
712 logout dialog. If it is pressed for 1s, do the usual
713 shutdown. Inspiration are Macs here.
279f0366 714 - expose "Locked" property on logind sesison objects
e25b5a8d
DH
715 - maybe allow configuration of the StopTimeout for session scopes
716 - rename session scope so that it includes the UID. THat way
717 the session scope can be arranged freely in slices and we don't have
718 make assumptions about their slice anymore.
719 - follow PropertiesChanged state more closely, to deal with quick logouts and
720 relogins
e673ad04 721
b44be3ec 722* exec: when deinitializating a tty device fix the perms and group, too, not only when initializing. Set access mode/gid to 0620/tty.
e673ad04 723
b44be3ec 724* journal:
57f2a947 725 - consider introducing implicit _TTY= + _PPID= + _EUID= + _EGID= + _FSUID= + _FSGID= fields
c06bf414 726 - import and delete pstore filesystem content at startup
b44be3ec
LP
727 - journald: also get thread ID from client, plus thread name
728 - journal: when waiting for journal additions in the client always sleep at least 1s or so, in order to minimize wakeups
729 - add API to close/reopen/get fd for journal client fd in libsystemd-journal.
d28315e4 730 - fallback to /dev/log based logging in libsystemd-journal, if we cannot log natively?
b44be3ec 731 - declare the local journal protocol stable in the wiki interface chart
b44be3ec
LP
732 - sd-journal: speed up sd_journal_get_data() with transparent hash table in bg
733 - journald: when dropping msgs due to ratelimit make sure to write
734 "dropped %u messages" not only when we are about to print the next
735 message that works, but alraedy after a short tiemout
736 - check if we can make journalctl by default use --follow mode inside of less if called without args?
737 - maybe add API to send pairs of iovecs via sd_journal_send
f47ec8eb 738 - journal: add a setgid "systemd-journal" utility to invoke from libsystemd-journal, which passes fds via STDOUT and does PK access
b44be3ec
LP
739 - journactl: support negative filtering, i.e. FOOBAR!="waldo",
740 and !FOOBAR for events without FOOBAR.
038cf334
ZJS
741 - journal: store timestamp of journal_file_set_offline() int he header,
742 so it is possible to display when the file was last synced.
b44be3ec
LP
743 - 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.
744 - journal: find a way to allow dropping history early, based on priority, other rules
745 - journal: When used on NFS, check payload hashes
b44be3ec
LP
746 - journald: add kernel cmdline option to disable ratelimiting for debug purposes
747 - refuse taking lower-case variable names in sd_journal_send() and friends.
748 - journald: we currently rotate only after MaxUse+MaxFilesize has been reached.
749 - journal: deal nicely with byte-by-byte copied files, especially regards header
b44be3ec 750 - journal: sanely deal with entries which are larger than the individual file size, but where the components would fit
601d9d6f 751 - Replace utmp, wtmp, btmp, and lastlog completely with journal
f38afcd0 752 - journalctl: instead --after-cursor= maybe have a --cursor=XYZ+1 syntax?
f38afcd0
LP
753 - when a kernel driver logs in a tight loop, we should ratelimit that too.
754 - journald: optionally, log debug messages to /run but everything else to /var
755 - journald: when we drop syslog messages because the syslog socket is
756 full, make sure to write how many messages are lost as first thing
757 to syslog when it works again.
f38afcd0
LP
758 - change systemd-journal-flush into a service that stays around during
759 boot, and causes the journal to be moved back to /run on shutdown,
d28315e4 760 so that we do not keep /var busy. This needs to happen synchronously,
f38afcd0 761 hence doing this via signals is not going to work.
279f0366
LP
762 - optionally support running journald from the command line for testing purposes in external projects
763 - journald: allow per-priority and per-service retention times when rotating/vacuuming
764 - journald: make use of uid-range.h to managed uid ranges to split
765 journals in.
766 - journalctl: add the ability to look for the most recent process of a binary. journalctl /usr/bin/X11 --pid=-1 or so...
767 - improve journalctl performance by loading journal files
768 lazily. Encode just enough information in the file name, so that we
769 do not have to open it to know that it is not interesting for us, for
770 the most common operations.
e25b5a8d 771 - man: document that corrupted journal files is nothing to act on
e25b5a8d
DH
772 - rework journald sigbus stuff to use mutex
773 - Set RLIMIT_NPROC for systemd-journal-xyz, and all other of our
774 services that run under their own user ids, and use User= (but only
775 in a world where userns is ubiquitous since otherwise we cannot
776 invoke those daemons on the host AND in a container anymore). Also,
777 if LimitNPROC= is used without User= we should warn and refuse
778 operation.
779 - journalctl --verify: don't show files that are currently being
780 written to as FAIL, but instead show that their are being written to.
781 - add journalctl -H that talks via ssh to a remote peer and passes through
782 binary logs data
e25b5a8d 783 - add a version of --merge which also merges /var/log/journal/remote
e25b5a8d
DH
784 - journalctl: -m should access container journals directly by enumerating
785 them via machined, and also watch containers coming and going.
786 Benefit: nspawn --ephemeral would start working nicely with the journal.
787 - assign MESSAGE_ID to log messages about failed services
b44be3ec 788
590171d1
ZJS
789* add a test if all entries in the catalog are properly formatted.
790 (Adding dashes in a catalog entry currently results in the catalog entry
791 being silently skipped. journalctl --update-catalog must warn about this,
792 and we should also have a unit test to check that all our message are OK.)
793
b44be3ec 794* document:
8b8f2591 795 - document that deps in [Unit] sections ignore Alias= fields in
b44be3ec
LP
796 [Install] units of other units, unless those units are disabled
797 - man: clarify that time-sync.target is not only sysv compat but also useful otherwise. Same for similar targets
b44be3ec 798 - document that service reload may be implemented as service reexec
f38afcd0
LP
799 - add a man page containing packaging guidelines and recommending usage of things like Documentation=, PrivateTmp=, PrivateNetwork= and ReadOnlyDirectories=/etc /usr.
800 - document systemd-journal-flush.service properly
f38afcd0
LP
801 - documentation: recommend to connect the timer units of a service to the service via Also= in [Install]
802 - man: document the very specific env the shutdown drop-in tools live in
f38afcd0
LP
803 - man: add more examples to man pages
804 - man: maybe sort directives in man pages, and take sections from --help and apply them to man too
b44be3ec
LP
805
806* systemctl:
b44be3ec
LP
807 - add systemctl switch to dump transaction without executing it
808 - Add a verbose mode to "systemctl start" and friends that explains what is being done or not done
809 - "systemctl disable" on a static unit prints no message and does
810 nothing. "systemctl enable" does nothing, and gives a bad message
811 about it. Should fix both to print nice actionable messages.
812 - print nice message from systemctl --failed if there are no entries shown, and hook that into ExecStartPre of rescue.service/emergency.service
813 - add new command to systemctl: "systemctl system-reexec" which reexecs as many daemons as virtually possible
d28315e4 814 - systemctl enable: fail if target to alias into does not exist? maybe show how many units are enabled afterwards?
b44be3ec 815 - systemctl: "Journal has been rotated since unit was started." message is misleading
61233823 816 - systemctl status output should include list of triggering units and their status
f38afcd0
LP
817
818* unit install:
819 - "systemctl mask" should find all names by which a unit is accessible
820 (i.e. by scanning for symlinks to it) and link them all to /dev/null
8b04b925 821
b44be3ec 822* timer units:
b44be3ec
LP
823 - timer units should get the ability to trigger when:
824 o CLOCK_REALTIME makes jumps (TFD_TIMER_CANCEL_ON_SET)
825 o DST changes
4db688e0 826 o timezone changes
90e071d1 827 - Modulate timer frequency based on battery state
d2e83c23 828
a19554ed
LP
829* add libsystemd-password or so to query passwords during boot using the password agent logic
830
a7a3f28b
LP
831* clean up date formatting and parsing so that all absolute/relative timestamps we format can also be parsed
832
b44be3ec 833* on shutdown: move utmp, wall, audit logic all into PID 1 (or logind?), get rid of systemd-update-utmp-runlevel
08f95888 834
f59d1da8 835* make repeated alt-ctrl-del presses printing a dump
dcfc4b2e 836
71ef24d0
LP
837* hostnamed: before returning information from /etc/machine-info.conf check the modification data and reread. Similar for localed, ...
838
d28315e4 839* currently x-systemd.timeout is lost in the initrd, since crypttab is copied into dracut, but fstab is not
1b89884b 840
b44be3ec 841* nspawn:
e25b5a8d
DH
842 - emulate /dev/kmsg using CUSE and turn off the syslog syscall
843 with seccomp. That should provide us with a useful log buffer that
844 systemd can log to during early boot, and disconnect container logs
845 from the kernel's logs.
846 - as soon as networkd has a bus interface, hook up --network-interface=,
847 --network-bridge= with networkd, to trigger netdev creation should an
848 interface be missing
e25b5a8d
DH
849 - a nice way to boot up without machine id set, so that it is set at boot
850 automatically for supporting --ephemeral. Maybe hash the host machine id
851 together with the machine name to generate the machine id for the container
852 - fix logic always print a final newline on output.
853 https://github.com/systemd/systemd/pull/272#issuecomment-113153176
854 - should optionally support receiving WATCHDOG=1 messages from its payload
855 PID 1...
e25b5a8d
DH
856 - optionally automatically add FORWARD rules to iptables whenever nspawn is
857 running, remove them when shut down.
e25b5a8d
DH
858 - maybe make copying of /etc/resolv.conf optional, and skip it if --read-only
859 is used
860
347a17d5
ZJS
861* dissect
862 - refuse mounting over a mount point
863 - automatically discover .roothash files in dissect, similarly to nspawn
864
e25b5a8d 865* machined:
e25b5a8d
DH
866 - add an API so that libvirt-lxc can inform us about network interfaces being
867 removed or added to an existing machine
868 - "machinectl migrate" or similar to copy a container from or to a
869 difference host, via ssh
e25b5a8d
DH
870 - introduce systemd-nspawn-ephemeral@.service, and hook it into
871 "machinectl start" with a new --ephemeral switch
872 - "machinectl status" should also show internal logs of the container in
873 question
e25b5a8d
DH
874 - "machinectl history"
875 - "machinectl diff"
876 - "machinectl commit" that takes a writable snapshot of a tree, invokes a
877 shell in it, and marks it read-only after use
878
879* importd:
e25b5a8d 880 - generate a nice warning if mkfs.btrfs is missing
b44be3ec
LP
881
882* cryptsetup:
b44be3ec 883 - cryptsetup-generator: allow specification of passwords in crypttab itself
5f1dac6b 884 - support rd.luks.allow-discards= kernel cmdline params in cryptsetup generator
f8019684 885
424a19f8 886* hw watchdog: optionally try to use the preset watchdog timeout instead of always overriding it
41f9172f 887 https://bugs.freedesktop.org/show_bug.cgi?id=54712
424a19f8 888
83fefc88
ZJS
889* add a dependency on standard-conf.xml and other included files to man pages
890
68f16003 891* MountFlags=shared acts as MountFlags=slave right now.
0790b9fe 892
fd4d89b2
LP
893* properly handle loop back mounts via fstab, especially regards to fsck/passno
894
47ae7201
LP
895* initialize the hostname from the fs label of /, if /etc/hostname does not exist?
896
abd55b16 897* udev:
abd55b16 898 - move to LGPL
abd55b16
KS
899 - kill scsi_id
900 - add trigger --subsystem-match=usb/usb_device device
e8d842a0 901 - reimport udev db after MOVE events for devices without dev_t
b8217b7b 902
7f110ff9
LP
903* There's currently no way to cancel fsck (used to be possible via C-c or c on the console)
904
d0e5a333
LP
905* add option to sockets to avoid activation. Instead just drop packets/connections, see http://cyberelk.net/tim/2012/02/15/portreserve-systemd-solution/
906
e25b5a8d
DH
907* coredump:
908 - save coredump in Windows/Mozilla minidump format
73a99163 909 - when truncating coredumps, also log the full size that the process had, and make a metadata field so we can report truncated coredumps
87a8baa3
LP
910
911* support crash reporting operation modes (https://live.gnome.org/GnomeOS/Design/Whiteboards/ProblemReporting)
912
70a44afe 913* default to actual 32-bit PIDs, via /proc/sys/kernel/pid_max
65c0cf71 914
f957632b
KS
915* be able to specify a forced restart of service A where service B depends on, in case B
916 needs to be auto-respawned?
917
f38afcd0 918* tmpfiles:
f38afcd0 919 - apply "x" on "D" too (see patch from William Douglas)
614cc34f
ZJS
920 - replace F with f+.
921 - instead of ignoring unknown fields, reject them.
e25b5a8d
DH
922 - creating new directories/subvolumes/fifos/device nodes
923 should not follow symlinks. None of the other adjustment or creation
924 calls follow symlinks.
1258097c 925
a4c279f8
LP
926* make sure systemd-ask-password-wall does not shutdown systemd-ask-password-console too early
927
f28f1daf
LP
928* verify that the AF_UNIX sockets of a service in the fs still exist
929 when we start a service in order to avoid confusion when a user
930 assumes starting a service is enough to make it accessible
931
88a07670
LP
932* Make it possible to set the keymap independently from the font on
933 the kernel cmdline. Right now setting one resets also the other.
934
71092d70 935* and a dbus call to generate target from current state
916abb21 936
68c7d001 937* write blog stories about:
796b06c2 938 - hwdb: what belongs into it, lsusb
68c7d001 939 - enabling dbus services
7a2a0b90 940 - how to make changes to sysctl and sysfs attributes
253ee27a 941 - remote access
5d0fcd7c 942 - how to pass throw-away units to systemd, or dynamically change properties of existing units
8bbabc44 943 - testing with Harald's awesome test kit
f530371f 944 - auto-restart
e707c494 945 - how to develop against journal browsing APIs
a19554ed 946 - the journal HTTP iface
a73d88fa 947 - non-cgroup resource management
a74a8793 948 - dynamic resource management with cgroups
3040728b 949 - refreshed, longer missions statement
3679d112
LP
950 - calendar time events
951 - init=/bin/sh vs. "emergency" mode, vs. "rescue" mode, vs. "multi-user" mode, vs. "graphical" mode, and the debug shell
952 - how to create your own target
953 - instantiated apache, dovecot and so on
954 - hooking a script into various stages of shutdown/rearly booot
73090dc8 955
21bdae12
LP
956* investigate whether the gnome pty helper should be moved into systemd, to provide cgroup support.
957
59fee421
LP
958* dot output for --test showing the 'initial transaction'
959
e25b5a8d 960* pid1:
e25b5a8d
DH
961 - When logging about multiple units (stopping BoundTo units, conflicts, etc.),
962 log both units as UNIT=, so that journalctl -u triggers on both.
963 - generate better errors when people try to set transient properties
964 that are not supported...
965 http://lists.freedesktop.org/archives/systemd-devel/2015-February/028076.html
966 - maybe introduce WantsMountsFor=? Usecase:
967 http://lists.freedesktop.org/archives/systemd-devel/2015-January/027729.html
968 - recreate systemd's D-Bus private socket file on SIGUSR2
e25b5a8d
DH
969 - move PAM code into its own binary
970 - when we automatically restart a service, ensure we restart its rdeps, too.
e25b5a8d
DH
971 - hide PAM options in fragment parser when compile time disabled
972 - Support --test based on current system state
973 - 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().
974 - after deserializing sockets in socket.c we should reapply sockopts and things
e25b5a8d
DH
975 - drop PID 1 reloading, only do reexecing (difficult: Reload()
976 currently is properly synchronous, Reexec() is weird, because we
977 cannot delay the response properly until we are back, so instead of
978 being properly synchronous we just keep open the fd and close it
979 when done. That means clients do not get a successful method reply,
980 but much rather a disconnect on success.
981 - when breaking cycles drop sysv services first, then services from /run, then from /etc, then from /usr
982 - when a bus name of a service disappears from the bus make sure to queue further activation requests
983
984* unit files:
985 - allow port=0 in .socket units
986 - maybe introduce ExecRestartPre=
987 - add ReloadSignal= for configuring a reload signal to use
988 - implement Register= switch in .socket units to enable registration
989 in Avahi, RPC and other socket registration services.
990 - allow Type=simple with PIDFile=
991 https://bugzilla.redhat.com/show_bug.cgi?id=723942
992 - allow writing multiple conditions in unit files on one line
993 - load-fragment: when loading a unit file via a chain of symlinks
994 verify that it is not masked via any of the names traversed.
995 - introduce Type=pid-file
e25b5a8d
DH
996 - introduce mix of BindTo and Requisite
997 - add a concept of RemainAfterExit= to scope units
e25b5a8d 998 - Allow multiple ExecStart= for all Type= settings, so that we can cover rescue.service nicely
e25b5a8d 999
af6f0d42
TG
1000* udev-link-config:
1001 - Make sure ID_PATH is always exported and complete for
1002 network devices where possible, so we can safely rely
1003 on Path= matching
8faf88e5 1004 - check MTUBytes parsing (expecting size_t but we are using unsigned)
af6f0d42 1005
88e4d1d7 1006* sd-rtnl:
88e4d1d7 1007 - add support for more attribute types
c589a0e6 1008 - inbuilt piping support (essentially degenerate async)? see loopback-setup.c and other places
88e4d1d7 1009
0a4b9a07 1010* networkd:
c74ecd71
TG
1011 - add more keys to [Route] and [Address] sections
1012 - add support for more DHCPv4 options (and, longer term, other kinds of dynamic config)
0a4b9a07 1013 - add proper initrd support (in particular generate .network/.link files based on /proc/cmdline)
e8d842a0 1014 - add reduced [Link] support to .network files
5c1d3fc9 1015 - add Scope= parsing option for [Network]
798e174a 1016 - properly handle routerless dhcp leases
a8eaaee7 1017 - work with non-Ethernet devices
c9fa3670 1018 - add support for more bond options
e25b5a8d 1019 - dhcp: do we allow configuring dhcp routes on interfaces that are not the one we got the dhcp info from?
e25b5a8d
DH
1020 - the DHCP lease data (such as NTP/DNS) is still made available when
1021 a carrier is lost on a link. It should be removed instantly.
1022 - expose in the API the following bits:
1023 - option 15, domain name and/or option 119, search list
1024 - option 12, host name and/or option 81, fqdn
1025 - option 123, 144, geolocation
1026 - option 252, configure http proxy (PAC/wpad)
1027 - provide a way to define a per-network interface default metric value
1028 for all routes to it. possibly a second default for DHCP routes.
1029 - allow Name= to be specified repeatedly in the [Match] section. Maybe also
1030 support Name=foo*|bar*|baz ?
1031 - duplicate address check for static IPs (like ARPCHECK in network-scripts)
1032 - allow DUID/IAID to be customized, see issue #394.
e25b5a8d 1033 - whenever uplink info changes, make DHCP server send out FORCERENEW
155e8b9a 1034
473dfd7b
TG
1035* networkd-wait-online:
1036 - make operstates to wait for configurable?
8f5675cc 1037
ac976532 1038* dhcp:
424a8732 1039 - figure out how much we can increase Maximum Message Size
ac976532 1040
37d8b536
PF
1041* dhcp6:
1042 - add functions to set previously stored IPv6 addresses on startup and get
1043 them at shutdown; store them in client->ia_na
1044 - write more test cases
37d8b536 1045 - implement reconfigure support, see 5.3., 15.11. and 22.20.
37d8b536 1046 - implement support for temporary adressess (IA_TA)
37d8b536
PF
1047 - implement dhcpv6 authentication
1048 - investigate the usefulness of Confirm messages; i.e. are there any
1049 situations where the link changes without any loss in carrier detection
1050 or interface down
1051 - some servers don't do rapid commit without a filled in IA_NA, verify
1052 this behavior
4a77c53d 1053 - RouteTable= ?
37d8b536 1054
2f8cd170 1055External:
74fe1fe3 1056
cc9784c6 1057* dbus:
3377af3e 1058 - natively watch for dbus-*.service symlinks (PENDING)
b44be3ec 1059 - teach dbus to activate all services it finds in /etc/systemd/services/org-*.service
cc9784c6 1060
71092d70
LP
1061* fix alsa mixer restore to not print error when no config is stored
1062
74fe1fe3
LP
1063* make cryptsetup lower --iter-time
1064
9096ad36 1065* patch kernel for xattr support in /dev, /proc/, /sys?
06ae4bfe 1066
71092d70 1067* kernel: add device_type = "fb", "fbcon" to class "graphics"
14bd37fe 1068
8973790e
LP
1069* /usr/bin/service should actually show the new command line
1070
d2bbca68 1071* fedora: suggest auto-restart on failure, but not on success and not on coredump. also, ask people to think about changing the start limit logic. Also point people to RestartPreventExitStatus=, SuccessExitStatus=
8973790e
LP
1072
1073* fedora: F20: go timer units all the way, leave cron.daily for cron
1074
1075* neither pkexec nor sudo initialize environ[] from the PAM environment?
b1ce67bf 1076
4641a16b 1077* fedora: update policy to declare access mode and ownership of unit files to root:root 0644, and add an rpmlint check for it
19aa7c4f 1078
baf167ee
ZJS
1079* register catalog database signature as file magic
1080
1cf3c30c
ZJS
1081* zsh shell completion:
1082 - <command> <verb> -<TAB> should complete options, but currently does not
409886c4 1083 - systemctl add-wants,add-requires
1cf3c30c 1084
2c12a402 1085
129126f3 1086Regularly:
874aa2cc 1087
129126f3 1088* look for close() vs. close_nointr() vs. close_nointr_nofail()
5021be21 1089
129126f3 1090* check for strerror(r) instead of strerror(-r)
5b6319dc 1091
444a79d3
LP
1092* pahole
1093
d28315e4 1094* set_put(), hashmap_put() return values check. i.e. == 0 does not free()!
a3a3e5b6 1095
4db17f29 1096* use secure_getenv() instead of getenv() where appropriate
88fae6e0 1097
d05c556b 1098* link up selected blog stories from man pages and unit files Documentation= fields