DEV Community

John Pavlick
John Pavlick

Posted on

On Ideology

Programming languages all implicity include an ideology - a set of core ideas and philosophies - that serve as a sort of conceptual framework for the choices that are made when one is using a given langauge to create a piece of software.

An absence of a clearly-defined ideology is still an ideology; in that case, the ideology is, "anything goes". We have seen how this sort of ideology has worked out, over time and at scale; no examples need to be given. Ultimately, in a language community and ecosystem with no clearly-defined ideology, contributors tend to add their own ideas about "how things could work well" and create frameworks, tooling, scaffolding; in doing so, they are creating an ideology.

For some programming language communities, the tools are an intentional byproduct of an ideology refined and followed to its logical conclusions. This is not always the case - and whether or not it is the case is certainly not some sort of value judgment. Some languages exist as an intersection of "what it was possible to do with computers at the time" and "what seemed most ergonomic, given the constraints".

Elm is most certainly not a member of the latter set. In my experience, and as evidenced most recently by the latest round of handwaving-freakoutery on the orange website1, this results in surprise and dismay for those unaccustomed to confronting a programming language's ideology head-on; as much as again, when it is contra to their own ideals.

The Elm ecosystem's design decisions - notoriously, the decision to disallow kernel code in 0.19 - function as a set of constraints to enforce the author's ideology on the system as a whole. Many have voiced an opinion that this was not only "wrong" - as in, "not technically correct", but also "wrong", as in "immoral".

Some of Elm's promises and guarantees are literally impossible to realize without this sort of constraint. Should people, such as the author of Elm, be explicity discouraged from creating these constraints, simply because "that's what the people and community want"?

Was it morally wrong for the author of Elm to remove that functionality? Put another way: was there a moral imperative for him to continue to support a feature set that went against his ideology?

What is the moral weight of public opinion?

Is there ever a moral imperative for an Open Source engineer to "listen to the community", regardless of whether or not doing so goes against their personal convictions for how the thing that they've made should function?

There are some types of systems that can only exist in a certain form when they are the product of one, or few minds. Should those systems not be permitted to exist?

What do you value?


  1. https://news.ycombinator.com/item?id=34746161 

Top comments (0)