Page MenuHomePhabricator

Spec out dependency engine interface, data structure, and states
Closed, DuplicatePublic

Description

TBD

Event Timeline

I had a quick conversation with @daniel about this. This is the closest thing I could find to a Phab task for implementing the Dependency engine :)

So I'll write the comment here.

Daniel says that implementing a proper general dependency engine can be a step towards implementing big important projects like T52329: We need a common repository for Scribunto modules and templates, T121470: Central Global Repository for Templates, Lua modules, and Gadgets, or at least T41610: Scribunto should support global module invocations. While I know almost nothing about the internals of implementing this, I understand the general idea and support it.

@daniel also said that there are ways to implement T41610: Scribunto should support global module invocations without a proper dependency engine, but this would be partial and won't implement all the requirements at the Global templates proposal.

DependencyEngineStates.JPG (2×2 px, 882 KB)

Scribbeled notes of the state machine that makes up the heart of the system.
The other main aspect is the question how to store the extensive dependency graph.
We'll eventually want to scale to something like ten billion nodes and a hundred billion edges. Or maybe ten times that.
No graph traversal is needed, though. Immediate neighbors only.

DependencyEngineStates.JPG (2×2 px, 882 KB)

Scribbeled notes of the state machine that makes up the heart of the system.

Thanks! Just for fun I made it digital: https://docs.google.com/drawings/d/1J7dx6cEFGFkdGTcnK9_ThNOfTTd3cSvGYL_Dwug4SFA/edit?usp=sharing

I don't understand very much here, but I think I have a reply to one of the questions in the scribbled notes: Cross-wiki? Yes!