Repository navigation
Ecosystem Registry Architecture
The raw metadata that exists at the source where telemetry is collected, typically alongside the project’s source code.
Examples:
-
Collector components: Each component directory contains a
metadata.yamlfile. -
Java agent instrumentation: A single aggregated
instrumentation-list.yamlfile.
Metadata stored in a format and schema defined by this project, located in the ecosystem-registry directory.
Registry metadata is derived from target source metadata and may be transformed to support normalization, versioning, and long-term compatibility.
The ecosystem-registry is populated by automation within the ecosystem-automation directory.
This automation consists of components known as watchers.
A watcher is responsible for:
- Monitoring a target project for metadata changes
- Scraping and ingesting target source metadata
- Transforming that metadata into the registry schema
- Creating pull requests to update the registry when changes are detected
Watchers typically run as GitHub Actions on a scheduled basis (e.g., nightly) or in response to specific triggers.
When creating a new metadata watcher, the following requirements must be met:
- The watcher must detect new releases of the target project and generate versioned inventory.
- The watcher must maintain a snapshot version representing the current
main(or equivalent) branch.- Snapshot data enables day-to-day change monitoring.
- Snapshot data provides visibility into upcoming release changes.
- The watcher must support evolving schemas at both:
- The target source level
- The registry level
- If the target source schema is not versioned, the watcher must introduce an internal (“virtual”) schema version.
- The watcher must, at a minimum, be able to map target schemas into the latest registry schema.
- The watcher must include automation to detect schema changes.
- When a schema evolution is detected, the watcher should automatically open an issue to surface the change.
- The watcher must support backfilling and regenerating registry data for any historical version of the target source (assuming metadata exists).
- This capability enables full registry rebuilds and simplifies recovery or migration scenarios.
= Items in the registry must be output in a deterministic ordering to avoid unnecessary updates
Each watcher must be implemented as a separate module within the ecosystem-automation directory.
This structure:
- Enables flexible code ownership
- Allows for different technology choices per watcher
- Scales as the registry expands to cover additional projects and ecosystems