Community patches are not de facto pushed into the Sustaining branch, they are pulled when necessary, either for the reason you stated, or a security issue, or a major bug fixed by the product team in GF that warrants an automatic regression fix.
Each Sun supported product release comes from the main development (community) tree. Each release starts a new Sustaining branch. Sustaining branches are not merged. Nor would I say they are drifting away from the community tree; rather, the community tree continues to grow. Perhaps it is just different terminology for the same thing, but keep in mind that (roughly speaking here) the goal of Sustaining within Sun is to take a product release that customers have purchased support for and to keep it working as released while also maintaining security and stability. For better or worse, Sustaining fixes need to be backwards compatible which eliminates some community fixes or enhancements. It is very rare that a Sustaining fix knowingly breaks any compatibility (generally, it is a security fix). The goal of the community releases is to get a new product with new features or spec compliance put out. There is now way to keep these two differing goals in perfect sync, nor is it reasonable to try and do so. They are inherently different.
All Sustaining bugs that are applicable to later community releases are reported back to the community tree at an indeterminate time, as discussed in the various blog links posted.
Just to be clear, Sustaining branches are not drifting from the tree with alternate enhancements or features. Sustaining releases drift with security and bug fixes, that eventually get into the main tree.
Regards,
Chris
[Message sent by forum member 'cdonaldson' (cdonaldson)]
http://forums.java.net/jive/thread.jspa?messageID=357475