Revisit the Constraints

Who needs a new song?
This old one's all we need

This tradition is our mission
And Moana there's
So much to do

-- Moana, Where You Are

I just got back from the Ember Face to Face this weekend and I was reminded of a core value that I believe in: Revisit the Constraints.

In order to avoid constantly re-litigating every decision from scratch, communities create shorthands for conclusions that they have already arrived at. These shorthands can ossify into rigid ideologies, which eventually weigh communities down too much, allowing newer communities with more modern assumptions to quickly leapfrog them.

As a simple example, Ember was written in 2011, before JavaScript had standard classes, and has a rich runtime library that provides user-space classes. That library has a number of great features that the community has come to rely on, so the Ember community has a strong, bedrock ideology about the importance of our object model.

By 2016, ES2015 (and more) has shipped, and JavaScript has an increasingly rich class model, and new communities that start up on the basis of that class model can leverage that new assumption to move very quickly.

In order to avoid getting swept asunder by these new communities, we need to revisit the original constraints that led us to believe that we needed a custom class system. This may require a willingness to revisit long-standing and important mental shortcuts ("we need our own object model" avoids constant re-litigation and allows a community to build on top of shared assumptions), which can be painful.

If you Capture the Constraints in the first place, it makes it much easier for the community and its leadership to decide when to revisit stable, core assumptions. That doesn't necessarily make the transition painless, but it does focus the conversation on inherent conflict rather than the incidental conflict caused by ideological disagreements.