| 1 | <!-- English translation of adr/0005-defer-dynamic-plugins-mef.md. Canonical Russian: ../../adr/0005-defer-dynamic-plugins-mef.md --> |
| 2 | |
| 3 | # ADR 0005: Non-target step - dynamic plugins (MEF and analogues) |
| 4 | |
| 5 | **Status:** Accepted |
| 6 | **Date:** 2026-04-02 (retrospective; short link in the table - [architecture-policy.md](../../architecture-policy.md)) |
| 7 | **Updated:** 2026-04-06 - plugins postponed; focus on cockpit ([0021](0021-pfd-mfd-cockpit-attention-model.md)). Details - [§ History](#adr0005-history). |
| 8 | |
| 9 | ## Related ADRs |
| 10 | |
| 11 | | ADR | Role | |
| 12 | |-----|------| |
| 13 | | [0021](0021-pfd-mfd-cockpit-attention-model.md) | first attention model and slots, then plugin host | |
| 14 | | [0024](0024-ide-sdk-and-stable-contracts.md) | future stable extension contracts | |
| 15 | |
| 16 | --- |
| 17 | ## Context |
| 18 | |
| 19 | It is possible to load extensions from the DLL directory (MEF and the like). This makes it difficult to build, diagnose, and trust model without an explicit "third party plugins" product goal. |
| 20 | |
| 21 | ## Solution |
| 22 | |
| 23 | **Don't** consider dynamic loading of plugins from a folder as the next target refactoring step. Modules remain **projects in a solution** with explicit registration in DI/composition until there is a separate product target. |
| 24 | |
| 25 | **Note:** An IDE without an extension script will look incomplete in the long run; The solution above is about the **queue**, and not about “no plugins needed.” First, it makes sense to **press the attention model and the frontal anchor** (`forward`, PFD/MFD, presets; [0021](0021-pfd-mfd-cockpit-attention-model.md)): otherwise the host of plugins will appear before there are clear slots where to embed them. When we get to extensions, the rule for binding to zones/channels: [0021 § “Plugins and attention model”](0021-pfd-mfd-cockpit-attention-model.md#plugins-attention-binding). |
| 26 | |
| 27 | ## Consequences |
| 28 | |
| 29 | - The architecture is not designed for a mandatory plugin host in the next iterations. |
| 30 | - When a target appears, the decision is reviewed by a separate ADR. |
| 31 | |
| 32 | ## Rejected alternatives |
| 33 | |
| 34 | - Implementing MEF “for growth” without a goal is rejected as a premature complication. |
| 35 | |
| 36 | --- |
| 37 | |
| 38 | ## History of changes |
| 39 | |
| 40 | <a id="adr0005-history"></a> |
| 41 | |
| 42 | | Date | Change | |
| 43 | |------|-----------| |
| 44 | | 2026-04-06 | note: plugins are inevitable in a mature IDE, but the immediate focus is the cockpit and zones ([0021](0021-pfd-mfd-cockpit-attention-model.md)); deferring does not negate the value of extensibility. | |