Skip to content

Remove certain "internal" interfaces from IFluidObject #3264

@markfields

Description

@markfields

Work Item

Describe the outcome you expect
IFluidObject may be bloated a bit by interfaces that are either only expected to be used/queried internally, or that expose internals according to an established anti-pattern. We should be crisp about IFluidObject's purpose and trim off anything that distracts. This will also ameliorate some of the pain covered by #2566.

Approach
The following groups of interfaces may not belong:

  • IContainerRuntime/IContainerRuntimeDirtyable - These are huge interfaces and wouldn't typically be queried for at runtime.
    • IContainerRuntime is used by Synthesize, so this may tie into the discussion we've had before about Synthesize and feature detection and multiple domains.
    • IContainerRuntimeDirtyable probably can be implemented a different way without bringing IFluidObject into the picture
  • DDS interfaces (ISharedString, ISharedObject) - This is an anti-pattern, we don't want people directly grabbing DDSes like this
  • Factories/Registries (IRuntimeFactory, IComponentFactory, IComponentRegistry) - These may belong on a copy-cat IFluidObject type that's scoped to internal-only types. i.e. it's a clear-cut domain boundary between some feature detection we do within the internals of the runtime v. supporting open-ended feature detection of fluid objects.

Open questions
All interfaces mentioned above need to be evaluated further and discussed with the team to reach consensus. Others may also fall into scope too.

Additional context
#2566 references pain caused by so many interfaces in FF being tied together into one type, causing compatibility issues when upgrading the runtime version in a host or container. Reducing the scope to the simpler, more isolated interfaces we expect to be useful for feature detection on fluid objects should help a lot here in the short term.

Acceptance criteria
go/no-go decision on each of the interfaces called out above, and updates to IFluidObject to exclude the appropriate ones.

Metadata

Metadata

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions