I'm currently extending the device registry with a registry for drivers. It started as a simple idea to solve the problem of displaying several drivers that handle a single physical device. This is quite complicated as I use one-value per /proc file, so a list of values means creating a dynamic directory for enumerating them. I thought of creating a directory per driver and linking from them to the devices instead, which turned out as being a great idea. This does not only allow me to make more information about the drivers available, but moving the devfs node descriptors to the drivers solved some problems with finding the right node of unusual devices that have, for example, several nodes with the same interface. Even more important, I can now add device node ids that can be persistent identifiers of a physical device's devfs node (or major/minor number). This will make libdevreg much easier to use: if you want to find a device node just use its id as an argument to the find function. But even better, I now have an easy solution for having stable minor numbers in the kernel. Just fill a table (with the help of a /sbin/hotplug-style user space program) that maps device node ids on minor numbers. As a timeframe, I hope to have a version of devreg without the stable minor number thing ready in two or three weeks.
I am also writing on a system similar to the minor number thing but for major numbers with the major name instead of the device node id. It will hopefully be ready at the same time. This would solve Linus' decision of not allowing any new major numbers as it moves the major number location from the central register to the user or his distribution. I haven't seen any other patch doing this, which quite surprises me. However, I need this code for the device node id / minor number mapping.