In this paper, we survey three generation of reflective middleware research carried out at Lancaster University, present experiences gained from this research, and highlight a number of important areas of future research. In particular, we discuss the extension of our reflective middleware ideas in terms of both depth and breadth. The depth extension applies reflective middleware principles to systems that lie beneath the traditional middleware domain: e.g. operating systems and networks. The breadth extension then applies the principles in a much broader range of application areas than those traditionally considered in reflective middleware research. These include reflective middleware for Grid computing and for sentient-object-based real-time control systems. We also briefly consider future work in applying our approach to the development of self-managing systems.