As a way to air my frustrations at inconsistencies and bad design decisions in the Linux OS, specifically server distributions, I put together a list of ways I thought that the OS and its many daemons could be standardised and simplified. Here are my thoughts:

Config files as XML

  • DTDs allow proper sanity checks
  • DTD and XSL allow easy editing through text and graphical interfaces - config programs are updated dynamically!

Offenders: Sendmail, Procmail

Sensible command line defaults

e.g. For tar, default should be file as an input, so tar -f should be redundant.

Standardised command-line options

e.g.

  • --help for help
  • -i for input file
  • -o for output file
  • -v for verbose (with -vv, -vvv)
  • etc.

Currently, verbose and very verbose can be:

  • -v, -vv, -vvv (tcpdump)
  • -v, -v -v, -v -v -v (lilo)
  • -e, -e -e || -ee (netstat)

Offenders: lilo, netstat

Consistent file locations

Program config files in /etc/program/xxx.conf.

Consistent file names

program.conf, programd.conf, program-function.conf, etc

Offenders: sshd_config

Sensible filesystem layout

A la http://www.gobolinux.org/?page=at_a_glance

Easy deploy packages

Packages as a single file (zip or similar), can be dragged and dropped to a folder and run from there.

Standardised Logs

Log files follow a consistent XML DTD, with fields for date, time, event code, description, etc.