Penguin

devfs is the Device FileSystem. It's optional starting with LinuxKernel 2.4 and not recommended with LinuxKernel 2.6 as it has been deprecated in favour of SysFs and UDev.

It was designed so that instead of having to have a central body allocate major and minor numbers (unique identifiers) to devices, you could access them more like a namespace. For example, your serial port /dev/ttyS2 would become /dev/tts/2; console /dev/tty3 would become /dev/vc/3. You could still have support for the old names for software that would otherwise be confused by these changes.

You can find a detailed description of devfs at http://www.atnf.csiro.au/people/rgooch/linux/docs/devfs.html.

devfs was abandoned for a number of reasons: there were problems with its implementation in the kernel which nobody was prepared to fix, and it enforced a particular device-naming policy, which many people felt was not something that the kernel should be doing.

udev by contrast, runs in userspace and can be extensively controlled by the user through its configuration files. Management of device special files is kept separate from information about the hardware; the latter is made available by the kernel through sysfs.