Hi,
The classic solution is essentially by splitting out functionality into new specs, which are then used by other specs. Perhaps the best example is CDI itself, which is in its bare essence Managed Beans from Faces and the bean model from Enterprise Beans being split out and merged.
While this has advantages, there's some disadvantages too.
For example, with Managed Beans in Faces, we could add things to it (or its lookup mechanism) that Faces needed. Now that Managed Beans are gone, we need to convince the CDI team to add certain things for us. At the moment CDI is nearly entirely focussed on CDI Lite, so things having to do with decorating (for instance) may, understandably, not be their biggest priority. But, this is what Faces needs after we just completely removed the Managed Bean system in it.
Of course the above is just a tiny example, but the point is that when there's common functionality, there should maybe be some shared responsibility and understanding for that common functionality.
If Jakarta Annotations would contain shared code, moved to there from say Security and REST, then there should maybe not just be a Jakarta Annotations team, but automatically Security and REST committers should also be Jakarta Annotation committers. In practice we already see some of the same people on different projects (myself for example ;)), but maybe there should be some guidelines for this.
Kind regards,
Arjan Tijms