This paper gives an introduction to driver development for XFree86-4.x. After a quick analysis of the existing problems in the previous XFree86 design, it describes the module loading architecture and the key interfaces that a graphics hardware driver for XFree86 must support.