title: Should Magento controllers be declared FINAL?
body: <p>In true Magento confusion there are two sets of controller classes; Those in the <code>Controller</code> directory and those in the <code>controllers</code> directory. The former have names like <code>Mage_Adminhtml_Controller_Action</code> and the latter are <code>Mage_Adminhtml_IndexController</code>. The latter are normally descendants of the former.</p>
  
  <p>Because the latter don't cleanly map their names to their location in <a href="http://pear.php.net/manual/en/standards.naming.php" rel="nofollow">PEAR naming convention</a> they don't get autoloaded by the normal autoloader, you cannot <code>include</code> them from your scripts since you cannot be certain which code pool they are in and it potentially breaks the compilation feature.</p>
  
  <p>I feel because it's so hard to extend them they should be officially <code>final</code> and be done with it. Will this break anything I'm not thinking of? Is it bad practice somehow? Can anyone suggest better terms for describing the extendible classes and damn-hard-to-extend classes?</p>