The basic definition of a "mature project" is a project that has been in use for long enough that most of its initial faults and inherent problems have been removed or reduced by further development. On the other hand, I couldn't find consensus about the graduation step of projects. I'll take two examples from two different worlds - Java/Eclipse and PHP. As described in the proposal lifecycle of Zend Framework after a project has been recommended, the promotion step includes confirmation of unit tests and documentation in its way to graduation. It seems that the Eclipse Foundation set a few clear criteria for graduation that include adhering active community, fully operational project, and a technical review of the architecture. These two processes are so different but still I start to get a notion that graduation is not about passing criteria but only a phase that a project becomes aware of itself, and most important thing graduation is only the first step toward maturity.
Projects that pass their graduation process although have not seen widespread use yet, enjoy a core user base, are more flexible and still cannot be extensible in an easy way. Fully mature projects are projects that enjoy the publicity in a larger community and probably less flexible since many adopters already extend the previously defined API.
Anyway, the most important (and fun!) period in the lifecycle of a project is when it is graduated and starts to get all dots connected till its final maturity. This is exactly where Eclipse PDT project in, and we see more and more people that ask to extend its core capabilities.