Hi, Something that's missing in the OS is an "out of the box" experience for the different ways one might use the operating system. For example, if you want an X terminal server and some X terminal clients, then you have to read a fair bit of docs and modify all the relevant config files, which may be in a number of formats. Other use cases that require custom setup might include router/firewall, clustering, locked-down desktop, or whatever. In an ideal world, someone could maintain the canonical best practice setup for say a locked-down desktop lab, and everyone else just clicks/types "install me a locked down desktop lab system," applies any site-local tweaks, and that's it. I'm calling this a canned or prepackaged configuration. This would be useful because: - developers could encode the recommended best practices in these canned configurations - QA and testers could then easily install and test the OS for each canned use case - docs authors could easily get things working for each use case - users and admins would have a nice "out of the box" experience getting things going very quickly, and avoiding a lot of custom engineering that tends to break on upgrade - allows developers to coordinate the whole network environment; e.g. the canned config for LDAP/Kerberos server should automatically work with all the client installs, same for print server etc. - we probably need different defaults for desktop and server in some cases, e.g. for how hardware is handled Some of the things that _might_ change across canned configurations: - the package set (the only thing we can change now, via the Workstation or Server split in the comps file for example) - specific parts of a config file, e.g. enabling xdmcp in gdm - default settings in gconf (e.g. each canned config might add a new config source in /etc/gconf/2/path) - contents of /etc/skel - optimum partitioning scheme - first boot screens, e.g. asking for site-specific info to go into the configuration - kernel boot options Some baseline considerations for how to approach this problem: - we should approach it consistently, such that there's one place to browse a list of available configurations, a general pattern followed for how they are implemented, and so forth - ideally, it's dynamic instead of only install-time, i.e. you can change a machine from config A to config B post-install. Easier for some things than others (e.g. partitioning scheme impossible to change post-install, config files perhaps easier, package set relatively simple) - ideally, third parties can provide their own canned configurations maintained separately from the main OS. You can imagine whole open source projects that basically just maintain a configuration. - ideally, these configurations can be in the installer in the same list as Workstation vs. Server choice; it would be strange to choose between Workstation and Server then later choose between canned configurations - ideally, local or site-specific tweaks can be kept separate from and "override" the canned settings, so that on upgrade you inherit new updates to the canned config - Jeremy does not want to maintain this stuff in the installer - selecting a given canned config has to be possible via kickstart Some possible approaches: A. documentation. We just write down how to build each configuration, possibly providing an example kickstart file. Put these documents in a common location with a standard naming scheme, etc. Downsides: doesn't provide the automation, so no "out of the box" experience; doesn't clearly make one developer/maintainer responsible for whether the config works and what it's like. Upside: relatively easy B. kickstart files. We provide a kickstart file for each configuration, probably there's a package naming convention like kickstart-x-terminal-client, and a convention for where the kickstart file is installed. Downsides: user has to install the OS, set up a kickstart server or make a boot disk, learn about kickstart, etc.; kickstart files contain incidental noise such as partitioning and so forth that will usually be unrelated to the canned config Upside: does not affect the installer, and again relatively easy C. kickstart profiles. Introduce something like "%profile x-terminal-client" that can go in a kickstart file. Could implement an XML description of each profile, support something like: $ kickstart-profile --list vnc-terminal Remote Desktop Terminal VNC based thin client terminal... x-terminal X Terminal X based thing client terminal... .... This is somewhat nicer than just providing a collection of kickstart files. D. config profiles usable by the installer. Same as above, but offer them in the installer rather than just package sets in the installer. E. dynamic "alternatives" system for configurations. Direction suggested by Owen, haven't sorted out how this would work precisely, perhaps symlink-based. F. write a simple library for redirecting config file lookup depending on a global "what this system is for" setting. e.g. you might have gdm.conf.normal and gdm.conf.xterminalclient and gdm would use a simple library that keys off of /etc/sysconfig/system-profile to locate the right config file? G. meta-packages. e.g. have a package x-terminal-client that depends on some set of other packages, provides certain config files, etc. The obvious problem is that the gdm package provides gdm.conf, so how does a meta-package install a different gdm.conf. If every important daemon/feature supported a conf.d with override files in it, that might answer the question, but sadly that isn't the norm. H. Some sort of RPM changes. Presumably we could make RPM smart about this problem in some way. I don't have concrete ideas. Obviously, this is far from fully thought-out at this point, I'm just trying to start the thread. It looks pretty likely to me that our solution will be a pragmatic compromise that isn't quite ideal. But which compromise is the best one? Havoc