Opinionated tools are better

I have seen a rise in the number of opinionated tools present in the common mindspace in the last decade. These tools usually cause controversy by limiting user choice and following a set path through problem space. But why have they become popular? Why are they “better”?

They are better for authors #

As a tool author, you are trying to provide a solution to a problem. There are many possible solutions and multiple ways to implement each of those solutions. There are many tradeoffs with varying consequences. This is usually referred to as the problem space.

Each possible solution traces a path through the problem space. And as this mathematical jargon may have pointed to you, there are infinite (or a really big number of) variations of those paths.

Opinionated tools reduce the acceptable variations to one, or a few, by reducing the problem space. This makes authors lives easier as they can focus on a specific approach and refine it. The downside is that they disregard other options. This can have profound effects when there are already some very different and popular solution paths through that problem space. An opinionated tool will have to choose which of those paths to follow, or create a new one.

This fragments, or shows that the user base of that problem space is fragmented, across those paths. For mature communities it does not have much of an effect, just another option, but in other communities it can spark flame wars. If the opinionated path is not a popular one it is very likely to cause some very bad reactions.

An example I’ve personally encountered several times is about the Go language, and particularly the code formatting. Go provides an opinionated code formatter strict on the use of tabs, the position of braces, indentation levels, etc. An opinionated formatter would be not that problematic if it wasn’t mandatory, to the point that the compiler will fail if code is not formatted to convention.

This choice has been polarizing to the point of people refusing to learn or use the language due to the formatter rules. Not the requirement of having a formatter, but the set of rules enforced. The Go authors report1 that this was a contentious choice even among themselves. On the other hand, it allowed simplifying the language parser and eliminated the discussions abut syntactically correct, readable or pretty Go code (most users agree Go code is not particularly pretty).

They are better for users #

As users (and specially tech users) we value choice and having options. Nonetheless, we usually do not exploit all the choices and many users configure their tools once and avoid refining those configurations. One of the core principles of the immensely popular Rails framework is “convention over configuration” where that community chases the perfect default configuration values so users seldom need to change them.

A related psychological effect is choice overload2. When presented with many choices and little information on the effects of these choices, humans have a very hard time choosing. If you’ve found yourself in a similar situation you probably know how draining it can be.

In my experience, experts want choice as they consider themselves able to improve their path through problem space by tweaking them, while novices don’t consider themselves able to choose if they are given those options. Novices prefer a charted path and experts prefer to chart their own.

Opinionated tools are perfect for these novice users as they offer no, or few, choices. For expert users, opinionated tools may fit the path the expert envisioned, and are thus fine, or be an abomination against their right to choose. They are good at reducing choice and charting a solution path, but these paths are inflexible.

If you can replace the tool easily at any time, an opinionated tool is not harmful and is still simplifying the issue. If you are using that tool with other people to work together, it can be immensely useful. One thing less to focus on, argue about or look at.

Conclusion #

The real question for experts is: is it really important?

Some choices have critical consequences and experts are usually hired to avoid the undesired effects. But not all problems are critical problems and not all choices have critical consequences. Some choices are almost free to change afterwards.

Opinionated tools are a good starting point for novice users that would have a hard time choosing, and reduce choice for experts when choice is not critical. They are also simpler, potentially easier to maintain and faster to build.

I myself use one of the programs with most choices possible, Emacs. It is daunting and at first I was lost. My personal solution was to reduce my choices by limiting to an opinionated config and a subset of activities. Over time, I kept increasing the activities I would use Emacs for, and the options increased much more comfortably. I use a personally customized configuration and use Emacs for most things related to text.

If you are facing a non-critical problem, choose opinionated. If you are going to use it to collaborate on something else, choose opinionated. If it only affects you, choose whatever you like best.

  1. Go Proverbs https://www.youtube.com/watch?v=PAAkCSZUG1c&t=523s ↩︎

  2. Validity is currently contested, but your own anecdotal evidence is likely to correlate with the effect https://en.wikipedia.org/wiki/Overchoice ↩︎


Have a comment on this article? Start a discussion in my public inbox by sending an email to ~miguelbernadi/public-inbox@lists.sr.ht [mailing list etiquette] , or see existing discussions.