And when it is not enough? What are really the differences between:
$c->forward( 'some_action' )
and the standard Perl:
$self->some_action( $c );
As far as I know the only two differences are that the first call is called in an eval and that it is logged in the debug output (if it is switched on), maybe there are some other minor differences, but, I am sure, nothing dramatical. It can helpful/needed sometimes (and othertimes that eval can be a nuisance), but it is also easy to add. Of course this is the simplest case - 'forward' signature is more complex and it does amazing things for finding the action "by it's private name" - but for most of the cases you ain't gonna need it and you can use ye old Perl syntax to make the call and spare yourself learning how to pass parameters to the forward call.
Related reading: Premature Flexibilization Is The Root of Whatever Evil Is Left - a reddit discussion.