How the OpenTelemetry Specification Process Works

How the OpenTelemetry Specification Process Works

Follow an idea from a casual suggestion to a stable rule that every language implementation must obey, and learn who decides, what proof is required, and why the process is built the way it is.

Imagine a group of builders from many different countries who all agree to construct bridges that must connect perfectly in the middle. If each builder invented their own measurements, the two halves would never meet. So the builders write a shared rulebook: the width of the road, the strength of the steel, the shape of the connectors. Anyone who wants to change the rulebook must explain why, show a working sample, and win the agreement of several experienced builders from different companies.

The OpenTelemetry specification is that rulebook, and the specification process is the set of steps for changing it. This post explains the whole journey in plain language. We define every new term the first time it appears, walk through each type of change, look at the people and committees who make decisions, and explain the proof and stability promises that make developers trust the result.

1Why a Specification Exists at All

OpenTelemetry works in many programming languages. Something must keep them all consistent.

OpenTelemetry, often called OTel, is an open standard and a set of tools for producing telemetry. Telemetry means data that software sends out about its own behavior, such as traces, metrics and logs. What makes OpenTelemetry special is that it exists for Java, Python, Go, JavaScript, .NET and many other languages, all at once, and all of them are expected to behave in the same way.

Think about what could go wrong without a shared rulebook. A trace started in a Java service must be understood by a Go service that receives the request. A metric named one way in Python must mean the same thing when it arrives from a .NET program. If every language team made its own private decisions, data from different programs would not fit together, and the whole promise of a single, vendor-neutral standard would collapse.

Simple Analogy

Consider electrical plugs. If every country, and every manufacturer within a country, invented its own plug shape, travelers would need a suitcase full of adapters. A standard plug lets any device work in any wall socket. The specification is the standard plug shape for telemetry.

What a specification gives you

One
shared set of rules for every language
Many
independent teams building to the same rules
Zero
need to guess how another language behaves

A specification is not code. It is a written description of behavior: what an operation must do, what it may do, and what it must never do. Implementations in each language then follow that description. Because behavior is described once, centrally, a change to the rulebook becomes a coordinated change across the whole ecosystem, and that is exactly why changing it must be done carefully.

2The Vocabulary You Need

A short glossary makes everything after this chapter easier to follow.

Term 1

Specification

The written rulebook describing how every OpenTelemetry implementation must behave, independent of programming language.

Term 2

API

The part of an implementation that application authors call to create telemetry. It describes what you can ask for, not how it is done.

Term 3

SDK

The part that does the real work behind the API: sampling, batching, and sending data out. It follows the specification.

Term 4

Protocol

The agreed message format for moving telemetry between programs, called OTLP, the OpenTelemetry Protocol.

Term 5

Semantic Conventions

Agreed names for common labels, such as the name used for an HTTP method or a database system, so every tool reads them the same way.

Term 6

SIG

A Special Interest Group, a team of contributors responsible for one area, such as a language implementation or the specification itself.

Term 7

OTEP

An OpenTelemetry Enhancement Proposal, a written design document used for big, cross-cutting changes.

Term 8

CNCF

The Cloud Native Computing Foundation, the neutral non-profit home that hosts OpenTelemetry alongside many other open projects.

Simple Analogy

If OpenTelemetry were a country, the specification would be its constitution, the SDKs would be local governments applying it, the SIGs would be departments, and an OTEP would be a formal bill proposed before a major new law is passed.

i
Good to Know

This post describes the process as documented in the project’s own repositories. Governance and contribution documents can be revised over time, so before you open a proposal, read the current contribution guide in the specification repository to confirm the details.

3What the Specification Contains and Where It Lives

A tour of the rulebook and the place where it is kept and changed.

The specification lives in a public repository on GitHub, a website where programmers store and collaborate on text and code. The repository holds the cross-language requirements that every OpenTelemetry implementation is expected to meet. The written documents are in a folder named for the specification, and the latest released version is also published on the project website for easy reading.

The main areas covered

1

The API and SDK rules for each signal

How traces, metrics and logs are created, how context flows from one operation to another, and how the SDK processes and exports the results.

2

The wire protocol

How telemetry is packaged when it moves between programs, so a sender in one language can talk to a receiver written in another.

3

Resource and common concepts

How a program describes itself, such as its name and where it runs, and how shared ideas like attributes and context are defined.

4

Configuration and compatibility

How implementations are configured in a consistent way, and how OpenTelemetry cooperates with other formats and tools.

5

Stability and versioning rules

The promises made to users about what will and will not change, which we study in detail later in this post.

Two neighbors worth knowing

Two closely related things live nearby but are managed a little differently. The first is the folder of enhancement proposals, the OTEPs, which also sits in the specification repository and holds the design documents behind big changes. The second is the set of semantic conventions, the agreed names for common labels, which are maintained as their own project and repository because they change at a different pace than the core rules.

Versioning of the rulebook itself

The specification follows semantic versioning, a widely used numbering scheme in which the version number tells you how big a change is. Every release has a written changelog listing what is new, what changed, and what was removed. A compliance matrix, kept alongside the specification, records how well each language implementation follows each requirement, which is a practical way for users to see where their language stands.

i
Where to Watch Progress

The project publishes a status page that shows the maturity of each signal and component, and the repository uses milestones to track upcoming work. Together they let anyone see what is stable, what is still being shaped, and what is coming next.

4Who Makes the Decisions

A process is only as good as the people and bodies who run it.

OpenTelemetry is run by volunteers and employees of many companies who contribute to a shared project. No single company owns it. Decision making is spread across several groups, each with a clear area of responsibility. Understanding who does what helps you know where to take an idea and who to ask for help.

flowchart TD
  GC["Governance Committee: community health, scope, repositories"] --> TC["Technical Committee: technical direction and spec changes"]
  TC --> SPEC["Specification SIG: maintainers and sponsors"]
  TC --> LANG["Language SIGs: SDK maintainers and approvers"]
  SPEC --> CONTRIB["Contributors: anyone with an idea"]
  LANG --> CONTRIB
        
FIG 1 — The main decision-making groups and how responsibility flows

The groups, in plain words

Group

Governance Committee

A group of nine elected members who handle non-technical matters: mission and values, the code of conduct, project scope, repositories and the relationship with the foundation.

Group

Technical Committee

The body responsible for technical direction, including specification changes, release expectations and settling technical disputes that cross project boundaries.

Group

Specification SIG

The working group that reviews and maintains the specification day to day. Its maintainers include Technical Committee members and designated leads.

Group

Language and other SIGs

Teams that build the implementations, tools and conventions. They own their code and provide the practical experience that shapes the rules.

Role

Maintainers and approvers

Trusted contributors who review changes and decide what is merged. Approvers are code owners with the power to sign off on pull requests.

Role

Specification sponsors

Approvers in the specification area who take on extra responsibilities, such as helping guide significant proposals through the process.

The key design idea is the separation between governance and technical authority. The Governance Committee deliberately does not decide technical questions. It charters the Technical Committee, which in turn works with the SIGs. This keeps arguments about how the community is run apart from arguments about how the software should behave.

i
Practical Tip

If you are new and have an idea, start in the specification channel or at a specification meeting rather than trying to reach a committee. The everyday reviewers are the specification maintainers and approvers, and they can tell you which path your idea should take.

5How the Committees Stay Balanced

Rules about who can serve are what keep one company from steering the whole project.

A shared standard is trustworthy only if no single organization can bend it to its own advantage. OpenTelemetry therefore builds diversity rules directly into its committees and its review process. These rules are one of the least visible and most important parts of the specification process.

The Governance Committee

The Governance Committee has nine members elected for staggered two-year terms, so the whole committee never changes at once. Voters are community members with standing, which means people with a meaningful number of contributions in the previous year, plus all approvers and maintainers. Candidates need endorsements from people at different companies, and no more than two members of the committee may come from the same company. Elections use approval voting, where each voter can approve any number of candidates and the most approved candidates win.

The Technical Committee

The Technical Committee works differently. Members are not elected on a fixed calendar. Instead, a new member is nominated by a community member in good standing, sponsored by existing members, and approved by a super-majority vote of more than two-thirds. The committee must keep a minimum number of members, and no more than a quarter of the members may work for the same employer. Members who stop participating are removed automatically, which keeps the committee active.

QuestionGovernance CommitteeTechnical Committee
Main concernCommunity, scope, values, repositoriesTechnical direction and specification changes
How members joinCommunity electionNomination, sponsorship and super-majority vote
Company limitNo more than two from one companyNo more than a quarter from one employer
How decisions are madePublic meetings, supermajority for governance changesConsensus first, voting when needed
Role in escalationFinal escalation for contested governance mattersTechnical disputes across projects
Simple Analogy

Think of a city. The city council sets the rules for how the city is run and who may serve, while the engineering department decides how the roads and bridges are built. The two cooperate but do not do each other’s jobs, and neither is allowed to be filled by employees of a single construction company.

The same idea at review time

The diversity principle appears again when changes are reviewed. As we will see, a specification change needs approval from code owners who represent different companies. A change that only one company’s staff are willing to support is, by design, harder to merge than one that experts from several organizations agree on.

6Three Sizes of Change

Not every change deserves the same ceremony. The process scales with the risk.

Imagine a hospital where fixing a typo on a poster, buying a new type of bandage and building a new surgical wing are all treated with the same paperwork. Either the typo would take a year or the new wing would be approved in a day. The specification process avoids this by sorting changes into three sizes, each with its own path.

flowchart TD
  I["You have an idea"] --> Q{"How big is the change?"}
  Q -->|"Typo, clarity, broken link"| T["Trivial: open a pull request directly"]
  Q -->|"New term, optional parameter, stabilizing a feature"| S["Smaller: get an issue approved first"]
  Q -->|"New signal, new metric type, cross-cutting system"| O["Significant: write an OTEP"]
  T --> R["Review and merge"]
  S --> R
  O --> D["OTEP approved, then spec pull request"]
  D --> R
        
FIG 2 — Choosing the path for a change

Trivial changes

Typos, wording that is merely unclear, and fixes for broken links. These skip the idea-approval step and go straight to a pull request, because there is little risk and nothing to debate.

Smaller modifications

Adding a new term, adding an optional parameter to an operation, or moving an existing feature toward stability. These require an issue to be opened and approved first, so that maintainers can agree the idea is wanted before anyone invests in writing it up. A draft pull request may accompany the issue to make the idea concrete.

Significant changes

Brand new signals, new kinds of metric, or systems that touch many parts of the rulebook at once. These must go through the enhancement proposal process, which asks for a full written design before any change to the specification text.

!
Common Misconception

Many newcomers assume every change needs a long proposal. In reality, most accepted changes are small and quick. The heavy process is reserved for changes that would force every language to change its code. Starting with the lightest path that fits keeps your idea moving.

When you are unsure which size your idea is, ask in the specification channel. Maintainers would much rather help you choose the right path early than see good work stall because it was started on the wrong one.

7Trivial and Smaller Changes in Detail

The everyday path that most contributions follow.

Trivial changes, step by step

1

Make the fix in your own copy

You create your own copy of the repository, called a fork, and change the document. For a typo or a link, that is all the thinking required.

2

Open a pull request

A pull request is a formal proposal to merge your change into the main document. Reviewers see exactly what you changed.

3

Reviewers approve and merge

The normal approval rules apply, with a practical exception to the waiting period for plainly trivial fixes, so the change lands quickly.

Smaller modifications, step by step

1

Open an issue describing the problem

Explain what is missing or confusing and why the change would help users. The goal is to agree on the need before anyone writes the solution.

2

Get the issue approved

Maintainers discuss whether the change is wanted. An approved issue is a green light to invest effort in a pull request.

3

Write the change and the prototype

You edit the specification text and, where behavior is involved, show that it works in a real implementation. We cover this proof in chapter thirteen.

4

Update the changelog

Any change that is not trivial must add a line to the unreleased section of the changelog, so release notes stay accurate.

5

Review and merge

Code owners from different companies approve, and the change waits for the required period before being merged.

i
Why the Issue Comes First

Asking for agreement before writing is an act of respect for your own time. Many well-written pull requests have been abandoned because maintainers disagreed with the underlying idea. An approved issue removes that risk.

!
Configuration Changes Travel Together

If your change affects how SDKs are configured, a matching change to the declarative configuration schema must be prepared, approved and merged along with it. Forgetting this companion change is a common reason a pull request is held up.

8Significant Changes: The OTEP

When a change will ripple through every language, a written design comes first.

An OpenTelemetry Enhancement Proposal, shortened to OTEP, is a document that explains a big idea before it is turned into rules. It exists for what the project calls cross-cutting changes: changes that affect multiple languages and implementations by introducing new behavior, modifying existing behavior or changing requirements. Typical examples include a new type of metric, new information attached to every span, a new way to configure tracers, or a change to how extensions work.

Simple Analogy

An OTEP is like an architect’s proposal before a new building is approved. It contains drawings, the reasons for the design, the alternatives that were rejected, and the problems the architect expects. Nobody pours concrete until the proposal has been studied and accepted.

When an OTEP is not needed

Bug fixes, documentation improvements, internal refactoring and changes that affect only one language do not need an OTEP. The test is simple: would this change force several implementations to change what they do? If yes, you probably need an OTEP. If it stays inside one language or merely clarifies existing text, you probably do not.

What a good OTEP contains

Section

Motivation

The real problem this solves and who suffers without it. Strong proposals start with concrete user pain, not with a solution looking for a problem.

Section

Explanation and design

A clear description of the proposed behavior, detailed enough that implementers in any language could build it.

Section

Drawbacks

An honest list of the costs and risks of the idea. Reviewers trust proposals that name their own weaknesses.

Section

Alternatives considered

Other designs that were weighed and why they were rejected, including the option of doing nothing.

Section

Open questions

Matters that are still undecided, so reviewers know where their input is most valuable.

Section

Prior art

How similar problems were solved in other tools and standards, which helps avoid reinventing mistakes.

“An OTEP is a conversation starter that ends in a decision, not a decision announced in advance.”

9The Life of an OTEP

From a blank template to an approved design, and then into the rulebook.

sequenceDiagram
  participant A as Author
  participant R as Reviewers
  participant S as Spec maintainers
  participant L as Language SIGs
  A->>A: Copy the template and write the proposal
  A->>R: Open a pull request in the oteps folder
  R->>A: Comments, questions, alternatives
  A->>R: Revise the document
  R->>S: Required approvals given
  S->>S: Merge the OTEP as approved
  S->>A: Integration issue opened for the spec text
  A->>S: Spec pull request with prototypes
  S->>L: Implementation issues created in each project
        
FIG 3 — The journey of an OTEP from draft to implementation

Step by step

1

Write from the template

You copy the standard template into a new file with a temporary name. The template guides you to answer the questions reviewers will ask.

2

Open a pull request

You submit the file as a pull request. Once it has a number, you rename the file to match it, which is how OTEPs get their sequential identifiers.

3

Discuss and revise

Reviewers from different languages and companies comment. Expect hard questions, requests for examples and suggestions of different designs. Good authors treat these as improvements, not attacks.

4

Gather the required approvals

The published guide describes an OTEP as approved once several reviewers, four according to the guide, have given their approval on the pull request. At that point it is merged.

5

Rejection or withdrawal

If the proposal is rejected or the author withdraws it, the pull request is simply closed. The discussion remains visible in the history, so future contributors can learn from it.

6

Integration into the specification

After approval, an integration issue is opened. A follow-up change then writes the accepted design into the actual specification text, where reviewers check that the wording matches what was approved.

7

Implementation in the projects

When the specification change is merged, implementation issues are created in the backlogs of the relevant projects, such as each language SDK, so the work is tracked where the implementers live.

!
Approved Is Not Finished

An approved OTEP is permission to proceed, not the end. The idea still has to be turned into precise specification text, proven with prototypes and implemented in many languages. Authors who disappear after approval leave the work stranded.

i
Where OTEPs Live

OTEPs are kept in a dedicated folder inside the specification repository and are numbered in sequence based on their pull request numbers. Browsing that folder is an excellent way to learn how past big decisions were reasoned.

10Review and Approval Rules

Two simple rules do a surprising amount of the work in keeping quality high.

For the specification itself, the contribution guide sets out firm review rules. These rules are intentionally simple so that everyone can predict what will happen to a pull request, and they are designed to protect the standard against hasty or biased decisions.

2
code owners must approve a spec change
2
different companies must be represented
2
working days minimum wait after the last change

Rule one: approval from different companies

A change needs approval from at least two code owners who represent different companies. A code owner is a person trusted to approve changes in an area. Requiring two different companies means no single employer can quietly push through a change that mainly serves itself. It also doubles the chance that a mistake will be noticed, because reviewers bring different experience.

Rule two: a cooling-off period

After the last modification to a pull request, it must wait at least two working days before it can be merged. Trivial fixes are the usual exception. This waiting time exists because the community is spread across the world. A change made in one time zone should not be merged before reviewers in another time zone have had a fair chance to wake up, read it and object.

Simple Analogy

Imagine a village notice board where any proposed rule must stay posted for two market days before it is adopted. That way, farmers who only visit on certain days still get a chance to object before the rule takes effect.

What happens when a change is stuck

Sometimes a proposal stalls because experts disagree or nobody is sure. The guide suggests that the author summarize the different viewpoints in the description of the pull request and mention the relevant experts so they can respond. If nothing moves, the author can raise it in the specification channel or at the weekly specification meeting, typically after waiting around two weeks. Escalation beyond that goes to the Technical Committee through a public issue that lays out the trade-offs.

SituationRecommended action
Reviewers have not answered for a few daysBe patient, since time zones differ, and check for requested changes
Reviewers disagree with each otherSummarize each viewpoint in the description and tag the right experts
No movement for about two weeksRaise it in the specification channel or the weekly meeting
Disagreement affects several projectsEscalate to the Technical Committee with a clear summary of trade-offs

11Prototypes: Proof Before Promise

The project prefers rules that have been tried over rules that merely sound good.

A written rule can look perfect on paper and still turn out to be awkward, slow or impossible in real code. To avoid such surprises, the specification process asks for prototypes. A prototype is a working sample implementation that shows the proposed behavior really can be built and used.

Simple Analogy

Before a car company puts a new braking system into every model, engineers build a test car and drive it. A beautiful drawing of the brakes would never be enough. A prototype exposes problems drawings cannot.

How much proof is required

1

Development-level features

A new feature that enters the specification in an early, still-changeable state needs a prototype in at least one implementation that follows the specification.

2

Stabilizing a feature

Before a feature is declared stable, prototypes in several languages are required. The guide describes three as the typical number, while leaving the final number to the maintainers.

Why several languages for stability

Different languages have different strengths and limitations. A design that is natural in one language may be clumsy in another. Languages without certain features may expose a flaw that the first prototype never revealed. Requiring multiple prototypes before stability drags those hidden problems into the open while changes are still cheap.

i
Choose Prototype Languages Wisely

Pick languages that are different from each other, for example one with a strong type system, one dynamic and one with a very different runtime. Three prototypes in three similar languages teach far less than three prototypes in three contrasting ones.

ANTI-PATTERN-01 Avoid
Problem

An author proposes a polished design, wins approvals on the strength of the document alone, and has no working implementation anywhere.

Why It’s Harmful

Problems appear only when implementers try to build the design, by which point the specification text is already merged and changing it is disruptive.

Correct Approach

Build at least one prototype alongside the proposal, share its results, and add prototypes in contrasting languages before asking for stability.

12Maturity Levels: How Stable Is It?

Every part of OpenTelemetry carries an honest label about how far you can trust it.

Not every feature is equally finished. A brand-new capability might still change shape next month, while a mature one is promised not to break for years. To avoid confusing users, the specification describes a life cycle with clear maturity levels. These labels are one of the most useful things to understand if you are deciding whether to build on a feature.

flowchart LR
  D["Development: may change, even in breaking ways"] --> S["Stable: formal compatibility promises"]
  S --> P["Deprecated: replacement exists, same support as stable"]
  P --> R["Removed: leaves the specification, major version change"]
        
FIG 4 — The life cycle of a signal or feature
Level 1

Development

Newly introduced and still evolving. Breaking changes and performance adjustments may happen, so it should not be the anchor for long-lived dependencies. It can later become stable without disrupting existing users.

Level 2

Stable

Thoroughly tested and covered by formal promises. The API must reach stability before the other components that depend on it, such as the SDK.

Level 3

Deprecated

Marked as on its way out, but only once a stable replacement exists. Deprecated features keep the same support guarantees as stable ones during the transition.

Level 4

Removed

Taken out of the release entirely. Because removal breaks users, it forces a major version increase.

!
Read the Label Before You Depend

Building a critical production feature on something marked as development is like building a house on ground that is still being surveyed. It can work, but you accept the risk of rework. Always check the maturity of every component you depend on.

Why a replacement must exist first

The rule that deprecation requires a stable replacement protects users from being stranded. Nobody is told to stop using something unless there is a supported alternative ready for them. This single rule prevents a whole class of painful forced migrations.

13Compatibility Promises and Long-Term Support

What exactly does the project promise when it calls something stable?

Stability is only meaningful if it is spelled out. The specification lays out concrete promises about what will not break, how version numbers signal the size of a change, and how long old versions will continue to receive fixes.

The core promise

Once an API is stable, all existing calls must continue to compile and work against every later minor version of the same major version. Software that works today with a stable API should keep working after routine upgrades. Plugin points that the SDK offers, and the constructors people use to create SDK components, must also remain backward compatible. For languages that distribute compiled binaries, binary compatibility is expected to be preserved as well.

How version numbers speak

Kind of bumpWhat it signalsExamples
PatchFixes only, nothing new to learnBug fixes and security fixes that need no changes by users
MinorBackward-compatible growthNew capabilities, changes to features still in development, deprecations
MajorPossible breakageBreaking changes to stable interfaces or removal of a signal

Stable API and SDK packages for one language share a unified version number so that users do not have to guess which versions fit together. Contributed extension packages are versioned independently, and the separate component families, such as the API, the SDK and the semantic conventions, can each increase their own numbers on their own schedule.

How long old versions are supported

3 years
minimum support for an API after its successor major release
1 year
minimum support for SDKs and contrib packages after a successor
Backported
fixes continue to reach the supported older versions
Simple Analogy

Stable APIs are like the standard electrical socket in your wall. The shape is not changed when a new appliance appears, and if the socket design ever does change, the old one is supported for years so nobody has to rewire the whole house overnight.

i
Why This Shapes the Process

Because stable promises are so strong, the bar for declaring something stable is high, and the process works hard to find problems early. Prototypes in several languages and wide review exist precisely because fixing a stable mistake is very expensive.

14Semantic Conventions and Schema Changes

Names matter, and renaming something safely is a surprisingly deep problem.

Semantic conventions are the shared dictionary of names used on telemetry: the label for an HTTP method, the name of a database operation, the way a cloud region is recorded. Dashboards, alerts and analysis tools all read these names. If a name changes without warning, dashboards silently go blank and alerts stop firing.

Stable names cannot simply change

Once a name is stable, the project promises not to alter it in ways that would break existing analysis. Instead, evolution is handled through a mechanism of schema transformations. A schema transformation is a machine-readable description of how to convert data from an older naming scheme to a newer one. Allowed evolutions include renaming an attribute or a metric and adding new attributes, with the transformation recorded so that tools can translate.

Simple Analogy

When a street is renamed, a good city publishes a table saying that the old name now refers to the new name. Mail still arrives, maps can be updated, and nobody is lost. A schema transformation is that table for telemetry names.

Why this has its own home

Semantic conventions evolve faster than the core rulebook, because new technologies and new kinds of systems keep appearing. Giving them their own repository and their own working group lets the community add, refine and stabilize conventions for databases, messaging, cloud platforms and many other areas without slowing the core specification down. The same overall habits apply: proposals, review by experts across companies, maturity levels and compatibility rules.

!
Naming Is Forever

A name that reaches stable status becomes part of countless dashboards and queries around the world. Proposals for new conventions deserve extra care for exactly this reason. A slightly awkward name that is chosen well is far better than a clever name that must later be changed.

15From Specification to Real Code

A rule on paper only matters once the implementations follow it.

After a specification change is merged, the real work of spreading it begins. The specification SIG does not write every language’s code. Each language SIG owns its own implementation and decides how and when to adopt the new behavior, guided by the specification and the issues created for them.

1

Implementation issues are opened

For each affected project, an issue records the work needed, so language maintainers can plan it in their own backlog.

2

Language SIGs implement at their own pace

Different languages have different numbers of volunteers and different priorities, so adoption does not happen everywhere at once.

3

The compliance matrix records progress

The matrix shows, for each requirement, which languages support it, which partly support it and which do not yet, giving users an honest view.

4

Feedback flows back into the specification

When implementers discover ambiguities or problems, they raise them, and the specification is clarified. The rulebook and the code improve together.

Configuration gets special care

Because users want to configure every language in the same way, SDK configuration is described by a shared declarative schema. When a specification change alters configuration, the matching schema change must be approved and merged together with it, so the written rule and the machine-readable configuration never drift apart.

i
What Users Should Check

Before relying on a new feature in your language, look at the compliance matrix and the maturity of the feature. The specification may describe something that your language’s SDK has not yet adopted.

16Communication and Escalation Channels

Open work needs open places to talk.

The specification process is public by design. Discussions happen in writing, in recorded or documented meetings, and in shared chat channels, so anybody can follow the reasoning behind a decision and anyone can take part.

Channel

GitHub issues and pull requests

The official record. Decisions, objections and approvals are visible here for anyone to read at any time.

Channel

The specification chat channel

A channel in the foundation’s chat workspace where questions are asked quickly and contributors get early guidance.

Channel

The weekly specification meeting

A recurring public meeting held at a time chosen to suit both European and American participants, with shared notes. Additional meetings for Asia-Pacific time zones can be arranged on request.

Channel

Technical Committee escalation

For disputes that cannot be settled at the working level, a public issue tagging the committee, with a summary of trade-offs, starts the escalation.

How the Technical Committee decides

The committee prefers to reach agreement through discussion and uses a vote only when consensus cannot be reached. A vote needs a quorum of more than half of the members and a simple majority to pass, and the results are shared publicly. Meetings are open to observers and are documented, which keeps decisions accountable.

i
Etiquette That Helps

When you escalate, summarize the options fairly, including the ones you disagree with. A neutral summary earns trust and speeds up decisions, because reviewers can see you are seeking the best outcome rather than defending a position.

17A Complete Journey: One Imaginary Idea

Follow a made-up proposal from first spark to widespread use.

To make everything concrete, imagine that a contributor notices that many users struggle to measure how long their programs spend waiting in queues. They believe a new kind of measurement would help. This story is invented to show the path, not a record of a real proposal.

1

The idea is raised

The contributor asks in the specification channel and mentions it at the weekly meeting. Maintainers say it sounds like a new kind of measurement, which affects many languages, so it is a significant change.

2

The OTEP is drafted

The contributor writes the motivation with real user stories, describes the design, lists drawbacks and alternatives, and opens a pull request.

3

Reviewers push back and improve it

A reviewer from a different language points out that the proposed design is hard to do without a certain language feature. The author revises the design and adds an alternative.

4

The OTEP is approved and merged

After the required approvals the proposal is merged, and an integration issue is opened to bring it into the specification.

5

Specification text and a prototype

The author writes the specification wording, updates the changelog, and builds a working prototype in one implementation. The feature enters the specification marked as development.

6

Two code owners from different companies approve

After the minimum waiting time with no objections, the change is merged and implementation issues are opened in the language projects.

7

Real-world feedback

Early adopters try the feature, discover rough edges and report them. The specification is adjusted while the feature is still allowed to change.

8

Stabilization

Prototypes in several different languages confirm that the design works everywhere. Maintainers agree to declare it stable, and from that moment the compatibility promises apply.

“Every stable rule began as someone’s untested idea that survived being questioned by strangers.”

Notice how many separate checkpoints protect the final result: agreement on the need, a written design, wide review, a working prototype, diversity of approvers, a waiting period, early feedback and multi-language proof. Each checkpoint catches a different kind of mistake, and none of them depends on a single person or company.

18Why the Process Is Designed This Way

Every rule in the process answers a specific fear.

The fearThe safeguard
One company bends the standard to its own interestsApprovals from different companies and company limits on committees
A design that works in one language fails in anotherPrototypes in several languages before stability
Contributors waste effort on unwanted ideasApproving an issue before writing a pull request
Reviewers in distant time zones are bypassedA minimum waiting period after the last change
Users are broken by sudden changesMaturity levels, compatibility promises and long-term support
Big ideas are decided in private conversationsPublic proposals, public meetings and written records
Governance arguments poison technical workSeparation between the Governance and Technical Committees

Advantages and trade-offs

Advantages

  • Strong protection against single-company control
  • Designs are proven in real code before being promised
  • Users get clear signals about stability and support
  • Every decision leaves a public, searchable record
  • The process scales its effort to the risk of the change
  • Escalation paths exist for real disagreements

Disadvantages / Trade-offs

  • Significant changes can take many months
  • Volunteers with limited time can become bottlenecks
  • Waiting periods slow even correct changes
  • Newcomers may find the process intimidating
  • Implementations adopt changes unevenly across languages
  • Consensus-seeking can stall on strongly contested ideas

The slowness is a conscious price. A standard that thousands of companies depend on cannot be edited like a private notebook. The project accepts slower progress in exchange for decisions that survive scrutiny and rarely need to be reversed.

19Contributor Anti-Patterns

Common ways good ideas get stuck, and how to avoid them.

ANTI-PATTERN-02 Avoid
Problem

The contributor writes a large pull request for a smaller modification without first getting an issue approved.

Why It’s Harmful

If maintainers disagree with the underlying idea, all the effort is wasted, and the author may feel unfairly rejected when the real issue is that agreement was never sought.

Correct Approach

Open an issue first, wait for approval, and optionally add a small draft to illustrate the idea.

ANTI-PATTERN-03 Avoid
Problem

An author treats a significant, cross-cutting change as a quick pull request to avoid the effort of an enhancement proposal.

Why It’s Harmful

Reviewers cannot judge the overall design from a small text edit, language teams are surprised by new obligations, and the change is likely to be stopped or reversed.

Correct Approach

Recognize cross-cutting changes early and write the proposal. The effort is repaid by faster, smoother acceptance.

ANTI-PATTERN-04 Avoid
Problem

The proposal is supported only by people from the author’s own employer, with no reviewers from other companies engaged.

Why It’s Harmful

The process requires approvals from different companies, so the change stalls, and even if it did pass, it would lack the broad testing that diverse reviewers provide.

Correct Approach

Reach out early to practitioners at other organizations, invite their feedback, and use the weekly meeting to find interested reviewers.

ANTI-PATTERN-05 Avoid
Problem

An author pushes to declare a feature stable after proving it in only one language.

Why It’s Harmful

Hidden problems in other languages emerge after the stability promise is made, forcing awkward workarounds or breaking changes.

Correct Approach

Gather prototypes in contrasting languages and let the maintainers confirm the count before asking for stability.

ANTI-PATTERN-06 Avoid
Problem

An approved proposal is abandoned because the author lost interest, leaving the specification text and implementations unwritten.

Why It’s Harmful

Language teams see a promise that never arrives, and the idea is neither cleanly delivered nor cleanly withdrawn.

Correct Approach

Plan for the full journey, and if you cannot continue, say so publicly and hand over the work to someone else.

20Best Practices and Common Mistakes

A practical checklist for anyone who wants to contribute.

Best practices

1

Start with the user’s problem

Describe who is struggling and how, using concrete examples. Proposals rooted in real pain win support much faster than abstract improvements.

2

Search before you write

Look through existing issues, past proposals and the specification itself. Your idea may already exist, or may have been rejected for reasons worth knowing.

3

Pick the lightest path that fits

Use the three sizes of change to choose between a direct pull request, an approved issue and a full proposal. Ask maintainers if unsure.

4

Be honest about drawbacks

List the costs and risks of your own idea. Reviewers will find them anyway, and openness builds trust.

5

Prototype early

Build a working sample while the design is still flexible, and share what you learn, including surprises.

6

Respect time zones and volunteers

Allow time for replies, use the weekly meeting for faster alignment, and avoid pressuring reviewers.

7

Keep the changelog and companion changes complete

Update the unreleased changelog section and prepare matching configuration schema changes where relevant, so reviewers have nothing to chase.

Common mistakes

!
Mistake 1

Treating review comments as personal criticism. Reviews are how the standard stays good. The best authors thank reviewers and revise.

!
Mistake 2

Assuming a merged specification change means all languages already support it. Always check the compliance matrix and the maturity level.

!
Mistake 3

Building production dependencies on development-level features without a plan for change.

!
Mistake 4

Escalating too quickly. Most disagreements resolve with patient discussion and a clear summary of viewpoints, and escalation should follow the suggested waiting period.

!
Mistake 5

Ignoring the semantic conventions. A change that adds new labels or renames existing ones affects users deeply and needs the conventions’ own care for compatibility.

21A Decision Guide for Your Idea

Answer a few questions and find the right path.

flowchart TD
  S["You want to change something"] --> Q1{"Is it only a typo, wording fix or link?"}
  Q1 -->|"Yes"| A["Open a pull request directly"]
  Q1 -->|"No"| Q2{"Will several languages have to change behavior?"}
  Q2 -->|"No"| Q3{"Is it a new term, optional parameter or stabilization?"}
  Q3 -->|"Yes"| B["Open an issue, get approval, then a pull request with a prototype"]
  Q3 -->|"No"| C["Likely a language-specific matter, take it to that SIG"]
  Q2 -->|"Yes"| D["Write an OTEP first"]
  D --> E["Then a spec pull request with prototypes, changelog and config schema updates"]
  E --> F["Later, gather multi-language prototypes to reach stability"]
        
FIG 5 — Which path fits your idea
Your ideaPathProof expected
Fix a spelling mistakeDirect pull requestNone
Clarify confusing wordingDirect pull requestNone
Add an optional parameterApproved issue, then pull requestA prototype in one implementation
Add a new kind of metricOTEP, then pull requestA prototype, later several for stability
Create a new signalOTEP, then pull requestPrototypes and broad review
Declare a feature stableIssue and pull requestPrototypes in typically three languages
Change only one language’s behaviorThat language’s SIGDetermined by that SIG

Treat the guide as a starting point. Maintainers have the final word on the path and the number of prototypes, so a short conversation before you begin is the best investment you can make.

22How to Get Involved

You do not need to be an expert to begin helping.

Read and follow along

Browse the enhancement proposals and recent specification discussions. Reading how experts reason about trade-offs is a free education in designing standards.

Fix the small things

Typos, unclear sentences and broken links are welcome, and they teach you the mechanics of the repository with almost no risk.

Share real-world experience

Practitioners who run OpenTelemetry in production often have exactly the evidence that proposals lack. Commenting with concrete experience is valuable even if you never write a document.

Build prototypes

Implementers in less-covered languages are especially valuable, because proposals need proof in contrasting languages. A prototype in an underrepresented language can unblock stability for everyone.

Join the weekly meeting

Attending, even silently at first, shows you how decisions are made and who is who. Notes are shared, so you can catch up on what you miss.

Grow into a larger role

Sustained, helpful contribution is how people become approvers and maintainers over time. The roles are earned by showing good judgment and reliability, not by seniority at a company.

23Frequently Asked Questions

Short, direct answers to the questions people ask most.

Q1What is the difference between the specification and an SDK?

The specification is a written description of required behavior, independent of any language. An SDK is real software in one language that follows that description. The specification tells implementers what to build, and the SDK is the result.

Q2Do I always need an OTEP to change the specification?

No. Trivial fixes need only a pull request, smaller modifications need an approved issue first, and only significant, cross-cutting changes need an enhancement proposal.

Q3Who actually approves a specification change?

At least two code owners representing different companies must approve, and the change must wait the minimum period after its last modification. The Technical Committee provides technical direction and handles escalations.

Q4Why does the process insist on prototypes?

Because designs that look good on paper can fail in real code. A prototype exposes practical problems cheaply, and several prototypes in different languages expose problems that one language would hide.

Q5What does it mean when a feature is marked as development?

It means the feature is new and may still change, possibly in breaking ways. It can become stable later without disrupting existing users, but you should not depend on it for long-lived critical systems without accepting the risk.

Q6How long are stable versions supported?

The stability rules describe at least three years of support for an API after its successor major release, and at least one year for SDKs and contributed packages, with fixes backported during that time.

Q7Can a stable name in the semantic conventions be changed?

Stable names are not changed in ways that break existing analysis. Evolution is handled through schema transformations that describe how to translate between old and new names.

Q8What if my pull request is stuck?

Summarize the different viewpoints in the description and tag the relevant experts. If there is still no movement after about two weeks, raise it in the specification channel or at the weekly meeting. Unresolved technical disputes can be escalated to the Technical Committee.

Q9Does the Governance Committee decide technical questions?

No. The Governance Committee handles community, scope, values and repositories. Technical decisions belong to the Technical Committee and the SIGs, which keeps governance debates separate from technical ones.

Q10Why can’t one company just push a change it needs?

Because reviews require approvers from different companies, and the committees limit how many members may share an employer. These rules are meant to keep the standard neutral.

Q11Where can I see which languages support a new feature?

The compliance matrix in the specification repository tracks how each language implementation meets each requirement, and the project status page shows the maturity of signals and components.

Q12Is the process the same forever?

No. Governance and contribution documents are revised as the project learns. Always read the current contribution guide in the repository before starting, since details such as numbers of approvals or locations of documents can be updated.

24How the Specification and the SIGs Work Together

The rulebook and the teams that build the software teach each other constantly.

It is tempting to picture the specification as a top-down order handed to language teams. In practice the relationship runs in both directions. The specification group collects lessons from implementers, and implementers rely on the specification for direction. Understanding this two-way flow explains why the process values prototypes, open meetings and wide review so highly.

What the specification group contributes

The specification group offers clarity and consistency. It looks across all languages at once and notices when two teams have solved the same problem in different ways. It writes down a single answer so that users never have to wonder whether a feature behaves differently depending on the language. It also acts as a referee, helping teams find common ground when their preferences differ.

What the language teams contribute

Language teams contribute reality. They know which ideas are easy in their language and which are painful, and they hear directly from users about what breaks. Many of the best specification changes began as a language team’s complaint that the written rule was ambiguous, impossible to follow efficiently, or missing a common situation. Without that feedback, the specification would drift away from real needs.

Simple Analogy

Think of a cookbook author and the many kitchens that use the book. The author writes the recipe, but each kitchen discovers that an oven runs hot or an ingredient is hard to find. The best later editions of the cookbook include those lessons. The specification and the SIGs are the author and the kitchens of OpenTelemetry.

Typical moments of collaboration

1

Before a proposal is written

Authors consult language maintainers informally, so that the first draft already reflects practical limits in several languages.

2

During review

Maintainers of different languages read the proposal and point out places where it would be hard or costly to implement in their own language.

3

While building prototypes

Early implementers find unclear wording and missing details, and send corrections back to the specification while the feature is still allowed to change.

4

After release

Users report surprises in production. These reports flow back as issues, leading to clarifications and, over time, to the next round of improvements.

Healthy tension, not conflict

Disagreements between the specification group and a language team are normal and often productive. A language team may argue that a rule is too heavy for its runtime, while the specification group argues that consistency across languages matters more. The escalation paths exist for exactly these moments, and the habit of writing down each side’s reasoning means that even a disputed decision can be understood and revisited later.

i
A Useful Habit

If you contribute to either side, make a point of talking to the other. Specification authors benefit enormously from spending time in an implementation, and implementers benefit from attending specification meetings. The people who bridge both worlds tend to produce the clearest proposals.

25Summary and Key Takeaways

The OpenTelemetry specification is the shared rulebook that keeps many language implementations consistent, and the specification process is the careful, public, multi-company method for changing it. Small changes travel a light path, medium changes need an approved issue first, and significant cross-cutting changes begin with a written enhancement proposal. Every non-trivial change needs reviewers from different companies, a waiting period for time zones, and proof in the form of working prototypes.

Features then move through maturity levels from development to stable, and stability carries strong compatibility and long-term support promises that explain why the bar is high. Governance is split between a Governance Committee for community matters and a Technical Committee for technical ones, both bound by rules that prevent any single company from dominating. Understanding these steps lets you read the specification critically, judge the maturity of what you depend on, and, if you wish, take your own idea all the way from a casual suggestion to a rule that the whole ecosystem follows.

Key Takeaways

  • The specification is the shared rulebook — it keeps every language implementation consistent so that telemetry from different programs fits together.
  • Change size decides the path — trivial fixes go straight to a pull request, smaller modifications need an approved issue first, and significant cross-cutting changes need an OTEP.
  • Diversity is built into review — specification changes need approval from code owners at different companies and a minimum waiting period after the last modification.
  • Prototypes prove designs — a development feature needs at least one working implementation, and stabilization typically needs prototypes in three contrasting languages.
  • Maturity labels are promises — development may break, stable carries strong compatibility and multi-year support promises, and deprecation requires a stable replacement first.
  • Governance and technical authority are separate — the Governance Committee runs the community, while the Technical Committee and SIGs decide technical matters, each with employer limits.
  • Check before you depend — look at a feature’s maturity and the compliance matrix, and read the current contribution guide, because processes and implementations evolve.