I'm in favour of using the module system, but what benefits we get from that level of granularity? Does that imply creating separated artifacts for each API module?
I don't think anybody will provide their own facelets implementation. Would this be just an internal thing?
Facelets was supposed to be *a* VDL, not the one and only. So people would not re-implement Facelets, obviously, but would be able to configure JSF to run without Facelets and/or another VDL.
Defining Facelets to be in its own module, would signal that Facelets is technically an extension to JSF even though its the default VDL. What we're seeing currently is that component libraries such as PrimeFaces have Facelets dependencies. If you use an other VDL, then it's hard or impossible to use PrimeFaces.
I'm not sure yet if we should indeed provide separate artefacts via the spec. Probably not, that could be an internal thing. But specifying the modules, and most of all a core module, would maybe be a good idea. The code module would have things in it that every other library can always depend on. Things not in the code module would be things that could be replaced, so have to be used with somewhat more care by other libraries.