I detest udev. With a passion. Because of bugs like #453356 or #339797 and as a matter of general principle because it's overcomplex, brittle, and Just Plain Wrong. No, a dynamic /dev is not generally desirable. No, I don't want you to fuck up my /dev and slow down every single boot by redoing the same damn crap all the time. No, I don't like your rule language or your lousy diagnostics.
So I consider myself the president-and-first-member of the G.R.O.S.U. ("Get Rid of Slimy Udev") club. But I do eat my own dog food (debian developer and all that), so here's my alternative setup to avoid udev without losing useful capabilities:
Udev itself I get rid of by creating a dummy dependency fulfiller package using equivs. Here's the resulting .deb for the lazy ones.
The few hotplugging activities that I do like to handle (eg. initializing the Bluetooth env if/when I use the killswitch, or auto-mounting removable storage) I take care of with hotplug: ancient, trusty, simple, totally sufficient.
Here's my cut-down-and-minimized hotplug package. Share and enjoy.