Guidelines for AI coding agents contributing to OpenLineage.
Do NOT modify these files without explicit user authorization:
spec/OpenLineage.jsonspec/OpenLineage.ymlspec/facets/*.jsonspec/registry/**/*.json
Before modifying any spec file, ask: "This change affects the OpenLineage specification. Do you authorize this modification?"
All spec changes MUST be backwards compatible per SchemaVer:
- Safe: Adding optional fields, new facets, new enum values
- Unsafe: Removing fields, changing types, making fields required, renaming
When changing the spec:
- Update version in
$idfield appropriately - Add test cases in
spec/tests/ - run pre-commit
- Coordinate changes across all clients (Java, Python)
- Install pre-commit hooks:
prek install - Run all checks:
prek run --all-files
- Java client:
cd client/java && ./gradlew build - Python client:
cd client/python && uv sync && uv run pytest
All code changes require tests:
- Spec:
spec/tests/{FacetName}/ - Java:
client/java/src/test/ - Python:
client/python/tests/
Always sign off commits (DCO required):
git commit -s -m "component: description"When AI assistants contribute to code, disclose this in commit messages:
Co-Authored-By: AI-Assistant-Name <noreply@example.com>
Examples:
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: GitHub Copilot <noreply@github.com>
Co-Authored-By: Cursor <noreply@cursor.com>
- Java: Spotless formatter
- Python: ruff (PEP 8)
- JSON/YAML: prettier
All new files need Apache 2.0 headers: we have .github/header_templates.md for this
Changes affecting client functionality must be coordinated across all clients:
client/java/- Java clientclient/python/- Python client
Examples: new transports, new facet support, API changes, configuration options.
follow CONTRIBUTING.md instructions
spec/ # PROTECTED - OpenLineage specification
client/java/ # Java client
client/python/ # Python client
integration/ # Spark, Flink, dbt, Airflow integrations
proposals/ # Design proposals
website/ # Documentation
- CONTRIBUTING.md - Full contribution guidelines
- spec/Versioning.md - Version numbering rules
- why-the-dco.md - DCO explanation