# [0003] Naming
Date: 2019-03-16
Status: ACCEPTED
## Context
Taken together, Timely, Differential, and Declarative throw around
quite a few names. This is compounded by the proliferation of names
caused by structs. It is therefore important to pick good, consistent
names for things wherever possible.
In particular, we have already had naming chaos with the following:
(1) `symbol` vs `variable`
(2) `binding` vs `constraint`
(3) `context` vs `server` vs `domain`
## Decision
(1) We will stick to `variable`, as it is more specific than symbol,
and more descriptive of our use cases. It also has the right
conntations w.r.t solving for variable bindings given certain
constraints.
(2) We will stick to `binding`. Binding is more generally applicable,
because some bindings (such as attributes) extend the space of
possible values for a given variable, rather than exclusively
constrain it.
(3) All of those names are needed, but we need to tease them apart
better. The intent is that `server` should be the name for the
structure holding the entire application state of a Declarative
worker. `context` is a subset of that state, which is all state
required for synthesis of rules. Finally, a `context` models `domain`
which handles all the time semantics.
## Consequences
-