title: AngularJS: Understanding design pattern
body: <p>In the context of <a href="https://plus.google.com/110323587230527980117/posts/aZNVhj355G2" rel="noreferrer">this post</a> by Igor Minar, lead of AngularJS: </p>
  
  <blockquote>
    <p><strong>MVC vs MVVM vs MVP</strong>. What a controversial topic that many developers
    can spend hours and hours debating and arguing about.</p>
    
    <p>For several years AngularJS was closer to MVC (or rather one of its
    client-side variants), but over time and thanks to many refactorings
    and api improvements, it's now closer to <strong>MVVM</strong> – the <strong><em>$scope</em></strong> object
    could be considered the <strong>ViewModel</strong> that is being decorated by a
    function that we call a <strong>Controller</strong>.</p>
    
    <p>Being able to categorize a framework and put it into one of the MV* buckets has some advantages.
    It can help developers get more comfortable with its apis by making it
    easier to create a mental model that represents the application that
    is being built with the framework. It can also help to establish
    terminology that is used by developers.</p>
    
    <p>Having said, I'd rather see developers build kick-ass apps that are
    well-designed and follow separation of concerns, than see them waste
    time arguing about MV* nonsense. And for this reason, I hereby declare
    <strong>AngularJS</strong> to be <strong>MVW framework - Model-View-Whatever</strong>. Where Whatever
    stands for "<strong>whatever works for you</strong>".</p>
    
    <p>Angular gives you a lot of flexibility to nicely separate presentation
    logic from business logic and presentation state. Please use it fuel
    your productivity and application maintainability rather than heated
    discussions about things that at the end of the day don't matter that
    much.</p>
  </blockquote>
  
  <p>Are there any recommendations or guidelines for implementing AngularJS MVW (Model-View-Whatever) design pattern in client-side applications?</p>