Bicycles for the mind have to be see-through [pdf]
No comment about the Mu itself but:<p>&gt; Our approach to keeping software comprehensible is to reduce information hiding and abstraction, and instead encourage curiosity about internals<p>YES! Precisely. Most &quot;bicycle for the mind&quot; or &quot;tool for thought&quot; approaches go the completely opposite direction accidentally. Many programming languages and communities nowadays too.<p>In reality, if you wanna teach, you have to unveil the guts of the system. Sure, it&#x27;s &quot;scary&quot; and all, but still, initial hand-holding &amp; letting newcomers see the internals, rather than presenting an overly polished surface at the expensive of everything else, is a much better designed learning process. Design is &quot;how it works&quot; after all. *<p>Related: a common misconception when folks defend abstractions &amp; encapsulation is to raise the issue that letting newcomers explore the internals causes too much trouble. That&#x27;s an obvious strawman; these methods are not championing everyone writing anything everywhere. They can stay read-only, but public. E.g. an interface can expose its internal data types, without allowing consumers to actually leverage that (enforced through types or something else). This is easily doable, and you don&#x27;t sacrifice learnability in the service of team programming sanity.<p>* This point seems to get dismissed quickly by folks who only care about visual polish nowadays. Imo this is naive. I care about visuals a _lot_, and we should definitely aiming for both learning polish and surface polish. But you can&#x27;t let the latter calcify the former.<p>My advice for all the &quot;tool for thought&quot;&#x2F;&quot;bicycle for the mind&quot; projects: all your opaque designs and small interface flourishes  falter in the face of a properly exposed and clean-ed up paradigm, in the long run. This applies on a smaller scope to modern libraries too. That boilerplate generator you mega-fine-tuned to the point you delight yourself in guessing the user&#x27;s mind, ultimately is a roadblock in the learner&#x27;s thought process. Expose the boilerplate and document how you&#x27;re automating it instead. You&#x27;re trying to teach fishing, not to show off your own fish.<p>Another good analogy I&#x27;ve heard elsewhere is to ask whether you&#x27;re teaching people how to cook, or just building a microwave. For a tool for thought product ask yourself if you ended up accidentally making &quot;an appliance&quot;.