The term controller is bit overloaded in this case, but basically, from MVC, controller is the object that backs all `@NgDirective`, `@NgComponent` and `@NgController`. So from template's perspective (a.k.a. View), it doesn't matter if it's template for a component or a "routing view" or anything else, it always refers to its "controller", thus `ctrl`.

Another important aspect is convention and consistency. When I read a template and see `{{ctrl.foo}}` I don't have to think twice, I know that it's a field/getter on the controller. If I see anything else (`{{blah.foo}}`, `component.foo`, etc.) I'll need to first double check the `publishAs` on the annotation to see what's going on...

That said, I'm not sure if it's planned for 1.0, but `publishAs` will probably go away, so all of this will not matter much.