Skip to main content

Philosophy

In this article I will describe the philosophical background that underpins this framework. Eidos is in a lot of ways an opiniated framework. This means that we hold opinions on the correct ways of using the framework. It nevertheless leaves a lot of room for own interpretation or overriding default behaviour. For smooth development it is highly recommended to keep in mind the underlying philosophy which I shall describe here.

The name Eidos comes from the Greek philosopher Plato. One of his philosophical ideas is the Theory of Forms. He claimed that the things we observe around us are merely "shadows" of so called perfect Forms, sometimes called Ideas. The chair you are sitting in, the trees outside or your computer would be representations of more idealized versions which Plato calls Forms. For example, there is the Form of Chair, which is in a sense an idealized version of the chair you are sitting on currently. These perfect forms live in some fictional world called Eidos.

Although I believe that there are many philosopical problems with this theory, it does apply pretty well to the domain of application development. As developers we are constantly translating between the model world and the real world. Whenever you develop a piece of software that is used to interact with things in the world, you are creating representations of these things. It is easy to mistake these representations for the real thing.

Imagine we want to develop a todo-list application. We have certain tasks that we want to complete, for example the task to do the dishes. When we represent this task in the todo-list application we might have the user enter some task-description. The essential idea is that this "Task" is not equal to the actual task. You are reducing the act of dishwashing to a piece of data.

In Eidos we make this translation more explicit. We use TypeScript to describe these philosophical Forms. By using types we are able to capture the essential properties of data and have a concrete and well-known language to describe them. This creates a model that is used throughout the application. This model is what we call the Ontology of the application. Ontology is a philosophical term that describes "everything that exists": how the world is structured and what concepts exist. This ontology is described using TypeScript types within the eidos.ts file. These types form the basis of an application that uses the Eidos framework.

Steven Bronsveld, 2023

Bronscode B.V.