OpenAssetIO icon indicating copy to clipboard operation
OpenAssetIO copied to clipboard

Support external customisation of top-level namespace

Open feltech opened this issue 1 year ago • 1 comments

What

Support build system customisable top-level namespace(s) of all OpenAssetIO symbols.

Why

There are use cases where multiple (incompatible) copies of OpenAssetIO may coexist in a single application process.

For example, an OpenAssetIO Host application may have its own plugin system, and an application-specific plugin may wish to (privately) make use of a custom build of OpenAssetIO as well as the version exposed by the host application.

Acceptance Criteria

Delete as appropriate based on requirements gathering:

  • Expose the existing inline namespace macro OPENASSETIO_CORE_ABI_VERSION as a CMake cache variable.
  • Add a new inline namespace wrapper around all symbols, and expose as a new CMake cache variable.
  • Add a CMake cache variable to enable renaming of the top-level namespace openassetio.
  • Encode the customisable namespace(s) in the file names of the binary shared libraries.
  • Mirror the customisable namespace(s) in Python (see Python namespace packages)

Notes

Needs requirements gathering to narrow the focus.

feltech avatar Apr 11 '24 15:04 feltech

We can and probably should endeavour to do this without a break.

elliotcmorris avatar Jul 03 '24 14:07 elliotcmorris