My xdm heresy

June 18, 2011

My xdm heresy is that I don't like it and don't use it and never have (at least not on my main machines, the ones that run my full environment). This has nothing to do with xdm itself (I don't like any of the xdm alternatives either) and everything to do with how much of a hack the xdm model of 'logging in' is.

Unix has long had a well defined model of how you log in and establish your environment, where the shell that was directly started by login (and later sshd and so on) was a special 'login shell' that did additional initialization. Unfortunately, Unix tied together two separate ideas in the process of doing this, partly out of necessity in the early days: non-interactive things that you wanted to do once to set up your environment, and interactive things that you wanted to do when you logged in (in the old days, this could include environment setup things such as asking you what sort of serial terminal you were using and initializing it).

This is a bad fit for what xdm wants to do, to put it one way; xdm is effectively a non-interactive login. Xdm isn't the first program to run into this issue; the wheels started coming off the classic Unix login model the moment rsh introduced the ability to run commands on a machine without actually logging in.

What xdm should have done is try to solve the problem once and for all, ideally by introducing the idea of a non-interactive 'login' shell that merely initialized the environment and then ran more commands for you. Failing that, it should have introduced a standard for 'this is how xdm will invoke something to set up your login environment'. Instead it simply ignored the problem. (Given that rsh had also ducked addressing the problem, xdm was following a well-blazed path.)

Ignoring the problem was and is a hack. It works (and worked) sometimes but not always, and of course it created a whole series of workarounds with their own new set of issues. The centrality of this hack and the resulting uncertainty in how xdm works (or doesn't work, depending on local factors) irritates me. As a result I prefer to get around the whole issue by logging in on the text console and then starting X by hand, and I've done it this way for a very long time.

(Starting X by hand may be difficult, but at least I don't feel like my entire environment is built on changeable quicksand. Also, it makes me grumpy to hack my own environment up to cope with the fallout from xdm's bad hack.)

(For an example of the sort of problems that this xdm hack and attempts to work around it cause, see for example this.)

Written on 18 June 2011.
« cgroups: so close and yet so far away from per-user fair scheduling
The Unix shell initialization problem and how shells should work »

Page tools: View Source, Add Comment.
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Sat Jun 18 03:13:58 2011
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.