mediawiki-extensions-Popups/docs/adr/0002-contain-and-manage-state.md
Thiemo Kreuz 7ef925fb97 Prefer YYYY-MM-DD ISO dates in all documentation
It is probably not that critical to understand if "09/11/2016" refers
to September 11th or November 9th. I still think it's worth looking for
a documentation format that is easy to understand by an international
developers community. My personal best practice is to use the ISO format.

Change-Id: Ib209a8a1651970d74f82c188ae4b84d1a4eb534e
2019-01-17 17:11:29 +01:00

34 lines
1.2 KiB
Markdown

# 2. Contain and manage state
Date: 2016-11-09
## Status
Accepted
## Context
The hardest part of debugging Page Previews issues (especially those related to
EventLogging) was understanding the state of the system (the "state") and how
it's mutated given some interaction(s). This was in no small part because the
state was defined, initialized, and mutated in various parts of the codebase.
The state required for Page Previews to function isn't actually overly
complicated. To keep things easy to debug/easy to reason about we should
endeavour to isolate the state and its mutations from the various other parts of
the system.
## Decision
Use [Redux](http://redux.js.org).
## Consequences
* Newcomers will have to familiarise themselves with the library (especially
it's nomenclature).
* All changes will have to be broken down into: the additional state that they
require; actions that are dispatched; and how the state is mutated as a result
of those actions. This requires discipline.
* We benefit from using a tool that is part of an increasingly rich ecosystem,
e.g. see [Redux DevTools Extension](https://github.com/zalmoxisus/redux-devtools-extension).