# Plugin / Extensibility / IoC

> Every term in this category is listed as one record, with its kind, its definition and its aliases, the principles whose relations name it, the principle or…

Page: Ontology · Lexicon
Canonical: https://banes-lab.com/ontology/lexicon#lex-category-plugin-extensibility-ioc

Every term in this category is listed as one record, with its kind, its definition and its aliases, the principles whose relations name it, the principle or contract that carries the same name where one exists, and the layer its category belongs to.

### API Surface Growth

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lex-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The degree to which adding extension points enlarges the public API that must be kept stable.

Referenced by
[Extension Points](https://banes-lab.com/records/arch/extension-points.md)

### Closed Core

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lex-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
A core that cannot be extended without modifying its own source, so every addition edits the core.

Referenced by
[Extension Points](https://banes-lab.com/records/arch/extension-points.md)

### Constructor Complexity

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lex-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The degree to which injecting many dependencies through constructors makes them long and unwieldy.

Referenced by
[Dependency Injection](https://banes-lab.com/records/arch/dependency-injection.md)

### Continuous Delivery

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lex-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The ability to release changes to production continuously through an automated pipeline.

Referenced by
[Feature Toggle](https://banes-lab.com/records/arch/feature-toggle.md)

### Decoupled Deploy and Release

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lex-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The ability to deploy code and separately decide when to activate it for users.

Referenced by
[Feature Toggle](https://banes-lab.com/records/arch/feature-toggle.md)

### Direct Control Ownership

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lex-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
Application code driving the overall control flow itself instead of ceding it to a framework or container.

Referenced by
[Inversion of Control (IoC)](https://banes-lab.com/records/arch/inversion-of-control.md)

### Direct Reference

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lex-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
Referring to a specific implementation directly instead of looking it up through a registry.

Referenced by
[Registry Pattern](https://banes-lab.com/records/arch/registry-pattern.md)

### Dynamic Lookup

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lex-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The ability to find a registered component by key at runtime.

Referenced by
[Registry Pattern](https://banes-lab.com/records/arch/registry-pattern.md)

### Dynamic Resolution

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lex-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The ability to resolve a service's current location or instance at runtime.

Referenced by
[Service Registry](https://banes-lab.com/records/arch/service-registry.md)

### Explicit Dependencies

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lex-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The degree to which a component's dependencies are visible in its signature rather than acquired through hidden lookups.

Referenced by
[Service Locator Pattern](https://banes-lab.com/records/arch/service-locator-pattern.md)

### Externalized Flag State

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lex-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The requirement that feature-flag values live in external configuration, not hardcoded in the code.

Referenced by
[Feature Toggle](https://banes-lab.com/records/arch/feature-toggle.md)

### Flag Debt

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lex-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The degree to which stale, unremoved feature flags accumulate and clutter the code over time.

Referenced by
[Feature Toggle](https://banes-lab.com/records/arch/feature-toggle.md)

### Framework Control Flow

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lex-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The ability to let a framework drive the overall control flow and call into application code.

Referenced by
[Inversion of Control (IoC)](https://banes-lab.com/records/arch/inversion-of-control.md)

### Global State

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lex-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The degree to which a global registry behaves as shared global state that any code can reach.

Referenced by
[Registry Pattern](https://banes-lab.com/records/arch/registry-pattern.md)

### Gradual Rollout

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lex-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The ability to enable a feature for a growing subset of users over time.

Referenced by
[Feature Toggle](https://banes-lab.com/records/arch/feature-toggle.md)

### Hardcoded Branch Constant

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lex-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
Controlling a feature with a hardcoded constant in the code instead of an externally-managed flag.

Referenced by
[Feature Toggle](https://banes-lab.com/records/arch/feature-toggle.md)

### Hardcoded Extensions

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lex-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
Wiring extensions directly into the core so adding one requires editing and rebuilding the core.

Referenced by
[Plugin Architecture](https://banes-lab.com/records/arch/plugin-architecture.md)

### Hardcoded Instantiation

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lex-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
Creating dependencies with hardcoded constructors inside a class instead of injecting them.

Referenced by
[Dependency Injection](https://banes-lab.com/records/arch/dependency-injection.md)

### Hardcoded Lookup

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lex-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
Hardcoding a service's address or instance instead of resolving it through a registry.

Referenced by
[Service Registry](https://banes-lab.com/records/arch/service-registry.md)

### Keyed Registration

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lex-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The requirement that each component register under a unique key by which it can be retrieved.

Referenced by
[Registry Pattern](https://banes-lab.com/records/arch/registry-pattern.md)

### Late Resolution

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lex-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The ability to defer resolving which implementation to use until the moment it is needed.

Referenced by
[Service Locator Pattern](https://banes-lab.com/records/arch/service-locator-pattern.md)

### Mocking

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lex-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The ability to substitute test doubles for real dependencies by injecting them.

Referenced by
[Dependency Injection](https://banes-lab.com/records/arch/dependency-injection.md)

### Registration Protocol

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lex-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The requirement of a defined protocol by which services register and deregister themselves.

Referenced by
[Service Registry](https://banes-lab.com/records/arch/service-registry.md)

### Registry

- Kind: [mechanism](https://banes-lab.com/records/kind/mechanism.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lex-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
A central store that maps keys to registered components for later lookup.

Referenced by
[Service Locator Pattern](https://banes-lab.com/records/arch/service-locator-pattern.md)

### Registry Availability

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lex-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The degree to which the whole system's operation depends on the service registry staying available.

Referenced by
[Service Registry](https://banes-lab.com/records/arch/service-registry.md)

### Runtime Lookup

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lex-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The ability to look up a needed service by name at runtime.

Referenced by
[Service Locator Pattern](https://banes-lab.com/records/arch/service-locator-pattern.md)

### Third-Party Extension

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lex-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The ability for outside developers to extend the system through published extension points.

Referenced by
[Extension Points](https://banes-lab.com/records/arch/extension-points.md)

## Links to

- [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)
- [Extension Points](https://banes-lab.com/records/arch/extension-points.md)
- [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- [Dependency Injection](https://banes-lab.com/records/arch/dependency-injection.md)
- [capability](https://banes-lab.com/records/kind/capability.md)
- [Feature Toggle](https://banes-lab.com/records/arch/feature-toggle.md)
- [Inversion of Control (IoC)](https://banes-lab.com/records/arch/inversion-of-control.md)
- [Registry Pattern](https://banes-lab.com/records/arch/registry-pattern.md)
- [Service Registry](https://banes-lab.com/records/arch/service-registry.md)
- [Service Locator Pattern](https://banes-lab.com/records/arch/service-locator-pattern.md)
- [constraint](https://banes-lab.com/records/kind/constraint.md)
- [Plugin Architecture](https://banes-lab.com/records/arch/plugin-architecture.md)
- [mechanism](https://banes-lab.com/records/kind/mechanism.md)
