Oddbean new post about | logout
 @5d36f9b1 I think the controller subtitle may not be 100% right. Actions solely on the data are part of the model (business logic). Not sure what a short description would be, coordinates how data flows? 
 @40275da3 i see what you mean, i think it’s also cause “controller” is inherently ambiguous.  I guess i see “data flow” as a side effect of encapsulation and not necessarily a controller responsibility.

I would also consider action solely on data NOT part of the model.  Models should be purely “essential data”, avoid mutation / computation until the very last step before it’s needed.

Do you have an example in mind? Talking in abstract here probably have some assumptions from each of us 
 @5d36f9b1 Generally true, in the ctx of MV*C* is not that ambiguous 🙂 The term "MVC" is quite overloaded though, despite proper work backing the term. This is a nice article in that context: https://blog.metaobject.com/2015/04/model-widget-controller-mwc-aka-apple.html

For models my general rule of thumb is: Imagine you build an app and you need to provide both, an HTML interface and an AppKit UI. The things you can share between the two is business logic and goes into the model layer.
The immutable thing you describe sounds more like a DTO.