Conventions
===========

Naming convention for servers
-----------------------------

Server names have the form ``purpose[0-9][0-9]{,-test}.psi.ch``, where
``purpose`` is the purpose of the server or the service provided by it. Examples are:

- ``puppet01.psi.ch`` is the **productive** puppetmaster
- ``repo00-test.psi.ch`` is the **test** Yum repository server

When putting system names into configuration files, we always use lower case and
the fully qualified domain name. Good: ``puppet01.psi.ch``. Bad: ``puppet01`` or
``PUPPET01.PSI.CH``.


Names for programs
------------------

The general conventions regarding filenames apply (see `File system hierarchy
and filenames`_). In addition, scripts should not include a suffix indicating
the language they are written in. The latter is an implementation detail and
does not matter to the caller of the script/program. A good name could be
``pli-system-info``, a bad one would be ``pli-system-info.sh``.


File system hierarchy and filenames
-----------------------------------

Files should generally be placed where the distribution and/or the `FHS
<http://www.pathname.com/fhs/>`_ expect them. Deviations and clarifications are
documented in this section.

The base directory for files is ``/usr`` if the files are relevant to end-users,
``/opt/pli`` if the files are relevant only to Linux administrators. This avoids
polluting the PATH for end-users as well as naming conflicts.

Executables (scripts or otherwise) that are meant for interactive use should go
into ``BASE/bin`` or ``BASE/sbin`` as appropriate.

Executables which are primarily called by other executables to implement part of
their functionality should be place in ``BASE/libexec``. This avoids polluting
``$PATH``.

Files and directories should have names starting with ``pli-`` or be placed in a
directory with such a name. This makes it obvious whether a file belongs to an
internal package and avoids collisions.

Note: this section used to recommend ``psi-`` as the prefix. It turns out that
this prefix is being used in various other places already, hence we use
``pli-``, where PLI stands for PSI Linux Infrastructure.
