I noticed some people are linking to yesterdays post Creating a jsf div component as an example of how non-productive jsf is. I agree, it is a lot of work, just to create a simple component. But as i said before, it’s an example of how to create a component. You don’t have to use [...]
I contrasted JSF with Tapestry and went with Tapestry for the exact reason you mention: it is not trivial to create a component in JSF.
In order to have a component-oriented framework boost productivity it must be child's play to create components. In Tapestry it is just as easy to create a component as it is to create a page.
It shouldn't take an architect-level developer to create a component. Every developer should be able to easily and quickly create components. That's the advantage of Tapestry.