Hi,

There is a long-term goal of moving packaged files out of /etc, so that
only actual local configuration remains in /etc. This has some advantages:

- Local configuration, i.e. the result of local administrative actions,
  is nicely split from static configuration that is part of package payload.
  'find /etc' will show what is special to this local system, while
  'find /usr' lists stuff that is part of packages and the same between
  systems.
- We can support "factory reset" at the system level, i.e. do 'rm -rf /etc'
  to return everything to distro defaults. We're not there _yet_, but it
  works with a surprisingly large subset of packages.
- We can support "factory reset" at a package level, by removing all the
  configuration and state of an individual package, without reinstalling it
  (possibly combined with some tmpfiles.d config to recreate things
  automatically.)
- It becomes easier to build systems which are delivered as a stand-alone
  /usr-partition. This could be ostree-style systems, or image-based systems
  with the /usr-partition read-only and protected by dm-verity. We're not
  there _yet_, but many people are experimenting with this.

When one looks in /etc, many of the files there are not "configuration".
For example, /etc/services is a list of port:service mappings, and people
maybe used to edit that twenty years ago, but now it's just a static file
that just as well may be somewhere under /usr/lib/. The same is also
true for /etc/bash_completion.d/ — people do not edit completion scripts.
Most of those have been moved to /usr/share/bash-completion/completions/,
but there's still a dozen or so in /etc.

Another common case is "empty" configuration files, i.e. templates that show the
default configuration. E.g. systemd has files that show commented-out defaults,
so if the file is removed, there is no change in behaviour.

Other distributions are ahead of us in supporting empty /etc. In particular,
OpenSUSE has done a lot of work with libeconf, which adds support for
systemd-style config in /usr/lib, /etc, and /run, and has convinced various
projects to switch to libeconf and allow empty /etc. There is a specification
codifying best practices in this area at:
https://uapi-group.org/specifications/specs/configuration_files_specification/

systemd-255-3.fc40 that was just built for rawhide moves "empty" config files
from /etc/systemd to /usr/lib/systemd. Systemd programs look in both locations,
so there should be no change in behaviour. Ideally, when administrators want
to make local modifications, they will use a drop-in file, instead of editing
the main config file, so the location of the main config file doesn't matter.
(To make this all nicer, we have
  systemd-analyze cat-config
which will display all config files in priority order, including drop-ins, and
we now added
  systemd-analyze cat-config --tldr
which will suppress "empty" stuff (empty lines and comments).)

If you are a maintainer of a package with files in /etc, please consider
whether they are strictly necessary, and if possible, move stuff to /usr.

If you are a maintainer of an upstream project, make sure that it supports
loading files from under /usr, so that the distro can put its config files 
there.

See https://github.com/uapi-group/specifications/issues/76 for a tracker
bug with a list of usptream projects which don't support this.

At some point, I think we should make this an explicit goal in Fedora.
I don't think we're at the point yet where it'd be feasible to put this
in Packaging Guidelines, but we can already convert individual packages.

Zbyszek
(on behalf of various folks working on this)
--
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
Do not reply to spam, report it: 
https://pagure.io/fedora-infrastructure/new_issue

Reply via email to