mediawiki-extensions-Popups/doc/adr/0002-contain-and-manage-state.md
Sam Smith b1b29f4704 Link Previews -> Page Previews
Change-Id: I08e80220c76a65cadaba20ce78b9eb2b36139095
2016-11-18 09:51:06 +00:00

1.2 KiB

2. Contain and manage state

Date: 09/11/2016

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.

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.