Skip to content

Bootstrap opentelemetry-python-genai repo #15

@MikeGoldsmith

Description

@MikeGoldsmith

Tracking issue for infrastructure and CI setup needed when the opentelemetry-python-genai repo is created. This covers migrating the GenAI instrumentation packages out of opentelemetry-python-contrib into their own repository.

Packages to migrate

  • opentelemetry-instrumentation-anthropic
  • opentelemetry-instrumentation-claude-agent-sdk
  • opentelemetry-instrumentation-google-genai
  • opentelemetry-instrumentation-langchain
  • opentelemetry-instrumentation-openai-agents-v2
  • opentelemetry-instrumentation-openai-v2
  • opentelemetry-instrumentation-weaviate
  • opentelemetry-instrumentation-vertexai (deprecation only — not carried over to this repo)
  • opentelemetry-util-genai

Migration process

All instrumentation source except vertexai is already present in this repo (carried over during the initial bootstrap commits). What's left is the per-package wind-down on the contrib side. Steps, in order, per instrumentation:

  1. PR on contrib: add a migration notice to the package README pointing at the new package here (or, for vertexai, a deprecation notice with no replacement).
  2. Decide and record the new PyPI package name (required before step 3). Packages here will be published under a different PyPI name from the contrib originals.
  3. Release the final contrib version with a deprecation notice and a pointer to the new PyPI name.
  4. PR on contrib: remove the package directory (and references in CODEOWNERS, lint workflows, etc.).

opentelemetry-util-genai migrates last — contrib instrumentations depend on it during the transition window, so it can't be removed from contrib until every instrumentation has been removed.

Migration status

opentelemetry-instrumentation-anthropic

  • Copied here
  • Contrib notice added
  • New PyPI name decided
  • Final contrib release
  • Removed from contrib

opentelemetry-instrumentation-claude-agent-sdk

  • Copied here
  • Contrib notice added
  • New PyPI name decided
  • Final contrib release
  • Removed from contrib

opentelemetry-instrumentation-google-genai

  • Copied here
  • Contrib notice added
  • New PyPI name decided
  • Final contrib release
  • Removed from contrib

opentelemetry-instrumentation-langchain

  • Copied here
  • Contrib notice added
  • New PyPI name decided
  • Final contrib release
  • Removed from contrib

opentelemetry-instrumentation-openai-agents-v2

  • Copied here
  • Contrib notice added
  • New PyPI name decided
  • Final contrib release
  • Removed from contrib

opentelemetry-instrumentation-openai-v2

  • Copied here
  • Contrib notice added
  • New PyPI name decided
  • Final contrib release
  • Removed from contrib

opentelemetry-instrumentation-weaviate

  • Copied here
  • Contrib notice added
  • New PyPI name decided
  • Final contrib release
  • Removed from contrib

opentelemetry-instrumentation-vertexai (deprecation only — not migrated)

  • Contrib deprecation notice added
  • Final contrib release
  • Removed from contrib

opentelemetry-util-genai (must be last)

  • Copied here
  • Contrib notice added
  • New PyPI name decided
  • Final contrib release
  • Removed from contrib

Repo infrastructure

Licensing & compliance

  • LICENSE file (Apache-2.0)
  • SPDX license headers (# SPDX-License-Identifier: Apache-2.0) on all Python files
  • CI check for SPDX headers (port scripts/check_license_header.py from contrib)

CI / GitHub Actions

  • Lint workflow (ruff, mypy, SPDX check)
  • Test workflow per package (consider generating from templates like contrib does with tox -e generate-workflows)
  • CodeQL / security scanning
  • FOSSA or equivalent license compliance check
  • OSSF Scorecard workflow
  • Link checker workflow
  • Renovate config for dependency updates

Changelog management (towncrier)

  • Towncrier config in root pyproject.toml
  • Changelog fragment directories (.changelog/ at root; evaluate per-package .changelog/ later)
  • Changelog CI check — require fragment on PRs to main, allow "Skip Changelog" label bypass
  • Changelog preview step in CI (towncrier build --draft)
  • Pin towncrier version
  • Changelog Jinja2 template (port from contrib or simplify)

PR automation

  • GitHub Action to add PRs to a project board on opened / reopened / ready_for_review (port add-to-project.yml)
    • Needs GitHub App (otelbot) or token with project write access
    • Filter out draft PRs
  • PR labeler (auto-label by package path)
  • Component owners auto-assignment (port component-owners.yml workflow + config)
  • PR template

GitHub board & dashboard

  • Create new GitHub Project board for the repo
  • Automate adding issues and PRs to the board
  • Dashboard views: open PRs by package, issues by label, stale items

Labels

  • bug, enhancement, documentation
  • Skip Changelog
  • prepare-release
  • Stale
  • Add others (e.g., per-package labels, dependencies) as needed later

Other

  • CODEOWNERS file
  • AGENTS.md (port from contrib instrumentation-genai/AGENTS.md and root)
  • Copilot / Claude review instructions (port .github/instructions/ from contrib)
  • Issue templates (bug report, feature request)
  • CONTRIBUTING.md with GenAI-specific guidelines
  • RELEASING.md with release process
  • Stale issue/PR bot

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions