Just writing to get some feedbacks.
It looks to me that the configuration process in TG2 is the framework part that requires most improvements. Some of its complexity is due to the need to cope with Pylons, PasteDeploy and TG options.
The first issue that bothers me is how @expose and AppConfig.renderers interact. The first requires renderers to be in place to check if the exposed template engines are available. This forces users to create AppConfig before importing or declaring any controller. Otherwise renderers detection gets totally disabled. This is not much of an issue usually, as the quickstart is organized that way, but is pretty obvious when using minimal mode.
The other issue is the complexity derived from how init_config works.
It is not clear when options get available or where the user is supposed to set custom options.
Some options have precedence when set in AppConfig, while other have precedence when set in .ini also the after_init_config hook is not explicitly suggested to extend configuration with custom options.
Any idea on how to tackle those? The most simple solution would be to leave the current behavior but at least notify the user: Raising an exception if no renderers are available when declaring/importing the controller telling the user to do it after setting up the configuration and explicitly stating the after_init_config is the place where to add custom configuration options.