18 · 4,000 plugins

From theorem to code

What keeps this work off the page: every symbol in the paper has its counterpart in the code.

In the paperIn the code
The contextan object
Registering an effecta method call
A piece instancea struct with its fields
The stack of inverses from chapter threethe field that removes it

Hot reload with nothing to configure

There is a practical application that shows the advantage well.

When you change a file while developing, the system can replace that module without restarting the process. That already exists in other tools, but it usually requires the programmer to mark by hand which modules can be replaced and which cannot.

Here it is not needed, and the reason is structural: every piece already delimits everything it installed, so replacing it means discarding it and mounting it again.

  • Phase 1 Accept Decide which modules can be replaced
  • Phase 2 Detect Work out which pieces they make stale
  • Phase 3 Reload Discard and mount again, transactionally

The case study

The chat bot framework mentioned at the start has been running on Cordis for four years and has accumulated more than four thousand community plugins.

What it validates is not only the scale. The framework contributes nothing but the vocabulary of its own domain. Everything else, the loading of pieces, the shared context, the events and the effects that undo themselves, comes from the same basic mechanisms.

And the same model works in a completely different environment: its web console is a separate application built with those mechanisms, this time on top of browser pieces.

The sentence that made me trust the rest

An 88 page paper with formal proofs that writes that about its own empirical evidence is doing its job well.