Skip to content

Reach feature parity with original projects #164

@kakkoyun

Description

@kakkoyun

This umbrella issue tracks the convergence of the two donated Go compile-time auto-instrumentation projects into a single OpenTelemetry implementation, under the Go Compile-Time Instrumentation SIG.

Tasks

Orchestrion

Orchestrion is Datadog's compile-time auto-instrumentation tool that was proposed for donation (#2497). The following tasks track feature parity with Orchestrion's capabilities.

Note: Some items may already be implemented. This checklist serves as a roadmap for tracking convergence progress and ensuring comprehensive feature parity.

Configuration Flexibility

Orchestrion sources its instrumentation configuration from user-controlled files and can load configurations from arbitrary packages outside of the tool itself, providing significant flexibility for users and vendors to customize instrumentation behavior.

  • OP1: User control over instrumentation
    • OP1.1: Documented configuration format for the tool
    • OP1.2: Configuration loader, validator, and interpreter
  • OP2: External configuration sources
    • OP2.1: Documented schema or protocol for specifying integrations
    • OP2.2: Configuration loader, validator, and interpreter for external sources

Instrumentation Capabilities

Orchestrion offers comprehensive instrumentation capabilities including call-side instrumentation ("around" aspects in AoP), library-side instrumentation ("before" and "after" aspects), and the ability to affect structure and variable declarations. It supports addressing functions by signature in addition to by name.

  • OP3: Join point support
    • OP3.1: Function call
    • OP3.2: Named declaration (function, type, global variable or constant)
    • OP3.3: Value declaration of a given type
    • OP3.4: Metaprogramming annotations (magical comments)
    • OP3.5: Function or method with specific signature
  • OP4: Join point composition & filtering
    • OP4.1: Intersection combinator (all-of)
    • OP4.2: Union combinator (one-of)
    • OP4.3: Negation combinator (not)
    • OP4.4: Import path filtering
    • OP4.5: Package name filtering (possibly limited to "main")
    • OP4.6: Test package filtering ("test main" needed for CI Visibility)
  • OP5: Advice operators
    • OP5.1: Add field to matched struct
    • OP5.2: Replace value of matched variable or constant
    • OP5.3: Wrap matched expression
    • OP5.4: Add arguments to matched variadic call

User Experience & Documentation

Orchestrion provides extensive documentation including setup guides, configuration references, and troubleshooting resources across its documentation site and Datadog's public documentation, serving as an effective on-ramp for new users.

  • OP6: Website builds from Rule declarations
    • OP6.1: Getting started guide and Quick start guide
    • OP6.2: Configuration fine-tuning guide
    • OP6.3: Troubleshooting guide

Quality Assurance

Orchestrion has mature quality assurance infrastructure including comprehensive test coverage, performance benchmarking, and integration testing across multiple scenarios and use cases.

  • OP7: Quality assurance infrastructure
    • OP7.1: Comprehensive integration testing suite
    • OP7.2: Minimal unit-test coverage (≥70% target)
    • OP7.3: On-going performance benchmarking (overhead vs vanilla go)

Alibaba Compile-time Instrumentatiosn

  • TBD

Source donation threads:

  • Alibaba Cloud's compile-time instrumentation proposal (#2344)
  • Datadog's Orchestrion proposal (#2497).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions