I've been developing on my own MVC patterns for 6 years and have come to a similar position regarding controllers. The primary advantage of a controller is to decouple request/response/ui "logic" from the view, but I've only found one or two cases where this felt useful, and even then it was mostly to test out the use case. In reality, interoperating multiple views and controllers can result in a very confusing view code, and perhaps negates the benefit.
For almost a year I have been writing web apps with no controllers, and it feels right. So far so good. It simplifies routing and a couple other things.
That's not to say you can take the avg MVC framework and drop the controller. A couple new patterns were really important to keep things sane. For example, there is still technically a default controller that does the default request handling for views. Happy to share more if anyone is curious.
Perhaps the most significant new pattern is that domain models communicate with a REST interface to the views. Usually you justify procedural coupling when writing controllers that interact with models, and it seems to make sense because controllers and models are often written in similar style and syntax. But still, it caused me a lot of pain in the past.
So now, the models only expose a REST API beyond the "class wall" (so to speak), which feels rather natural when called from views in template syntax. Client-side frameworks do it this way already, but I'm talking server side.
A great side effect of models speaking REST natively is, it becomes trivial to create a public API, just add authentication.
There's a few other things, like automatic request view routing.
For almost a year I have been writing web apps with no controllers, and it feels right. So far so good. It simplifies routing and a couple other things.
That's not to say you can take the avg MVC framework and drop the controller. A couple new patterns were really important to keep things sane. For example, there is still technically a default controller that does the default request handling for views. Happy to share more if anyone is curious.