Milestones proposal (clarification) (#152)

* milestones proposal

* adjustments

* added TLDR

* missing semicolons

* Update milestones.md

* Update milestones.md

* added links to the milestones
This commit is contained in:
Sergey Kanzhelev 2019-06-24 09:49:45 -07:00 committed by GitHub
parent 897afc8d05
commit bdb00826e5
1 changed files with 156 additions and 44 deletions

View File

@ -1,28 +1,18 @@
# OpenTelemetry: A Roadmap to Convergence
This document covers the initial milestones for each repository developing an
implementation of the OpenTelemetry Specification for a specific language. For
each new language, we want to quickly achieve parity with existing OpenTracing
and OpenCensus implementations.
This document covers the initial milestones for the project. Each repository in
OpenTelemetry project need to adjust milestones to this plan based on
project-specific estimations.
[Merging OpenTracing and OpenCensus: A Roadmap to
Convergence](https://medium.com/opentracing/a-roadmap-to-convergence-b074e5815289)
defines the goals and timelines for OpenTelemetry.
If you are interested in starting a new OpenTelemetry implementation, please do
the following:
- [Create an issue](github.com/open-telemetry/community/issues) proposing the
new repository. Wait for repository to be created.
- Add the milestones listed below to the backlog.
For each language, we want to quickly achieve parity with existing OpenTracing
and OpenCensus implementations. For languages which have both an OpenTracing and
OpenCensus implementation, we would like to achieve parity in OpenTelemetry by
**September, 2019**, and sunset the existing OpenTracing and OpenCensus projects
by **November, 2019**.
## Switching to OpenTelemetry
For languages which have both an OpenTracing and OpenCensus implementation, we
would like to achieve parity in OpenTelemetry by **September, 2019**, and sunset
the existing OpenTracing and OpenCensus projects by **November, 2019**.
Parity can be defined as the following milestones:
Parity can be defined as the following features:
- A set of interfaces which implement the OpenTelemetry specification in a given
programming language.
@ -34,7 +24,7 @@ Parity can be defined as the following milestones:
- Benchmarks which provide evidence of expected resource utilization.
- Documentation and getting started guide.
## Initial milestones
## Milestones
With OpenTelemetry we strive for consistency and unification. It is important
for users of OpenTelemetry to get the same look and feel of APIs and consistent
@ -44,35 +34,157 @@ specifications and cross-language test cases.
As OpenTracing and OpenCensus projects converge we write specifications the same
time as we develop libraries.
Initial API specification will be complete **June, 14th**. SDK specification
will be complete end of June. Later we plan to revise specifications for both -
API and SDK every month till September while we are getting feedback. These
revisions will be documented with the CHANGELOG and will likely include breaking
changes.
### TL;DR;
Languages can use the following milestones to triage issues related to API:
Milestones for Java and cross-language specification:
- API Complete: **June, 2019**
- API revisions:
- API revision 07/2019
- API revision 08/2019
- API revision 09/2019
- End of June:
- [basic SDK implemented](https://github.com/open-telemetry/opentelemetry-java/milestone/2)
in Java.
- API feedback issues triage done.
- Mid July:
- [exporters implemented](https://github.com/open-telemetry/opentelemetry-java/milestone/3)
in Java.
- [basic SDK specs](https://github.com/open-telemetry/opentelemetry-specification/milestone/3)
complete.
- [first API revision](https://github.com/open-telemetry/opentelemetry-specification/milestone/2)
documented.
- Mid August:
- [extended SDK documented](https://github.com/open-telemetry/opentelemetry-specification/milestone/4).
- [second API revision](https://github.com/open-telemetry/opentelemetry-specification/milestone/5)
documented.
- End of August:
- [extended SDK implemented](https://github.com/open-telemetry/opentelemetry-java/milestone/4)
and stabilized in Java.
- Java SDK is production ready
- Mid September (or after end-user validation):
- API is revised
- End of September (or after end-user validation):
- Version 1.0 is declared.
And for SDK:
### Current status
- SDK Complete: **mid July, 2019**
- SDK revision 08/2019
- SDK revision 09/2019
**API proposal**:
Even though stable version of OpenTelemetry may be limited to API and SDK
packages, we encourage to build a set of exporters and adapters for the most
common platforms and libraries. This milestone will confirm the API and SDK
completeness.
- [Done in Java](https://github.com/open-telemetry/opentelemetry-java/milestone/1)
- API proposal [documented](https://github.com/open-telemetry/opentelemetry-specification/milestone/1)
in specs
- Basic exporters and adapters: **August, 2019**
**SDK proposal**:
Finally, these two milestones can be used for extra work needed to stabilize
OpenTelemetry SDK and sunset OpenTracing and OpenCensus SDKs:
- Basic telemetry pipeline for traces complete
- On track to finish by the **end of the month** in limited scope
- Specification work for SDK hasnt been started
- Stable Version: **September, 2019**
- OpenTracing and OpenCensus sunset: **November, 2019**
### Finish SDK proposal
We are limiting scope for SDK proposal work (roughly) to the following areas:
- Spans pipeline:
- SpanBuilder interceptors interface
- Built-in samplers (percentage sampler).
- SpanProcessor interface and implementations:
- Default and built-in processors
- Simple processor
- Batching processors
- Block when the queue is full processor
- Exporter interface
- Reporting raw SpanData
- Distributed context
- Basic implementation
- Metrics
- Metrics aggregation implementation
- MetricProducer interface
[**Java
implementation**](https://github.com/open-telemetry/opentelemetry-java/milestone/2).
In the limited scope we are working towards completing the SDK proposal in Java
by end of this month.
[**Specifications
writing**](https://github.com/open-telemetry/opentelemetry-specification/milestone/3).
We can start writing specs for SDK now. Realistically we need two weeks after
java implementation complete to document all aspects of SDK.
### Basic exporters
As part of OpenTelemetry we committed to deliver three basic exporters - Zipkin,
Jaeger and Prometheus.
Both - documentation and java implementation of those exporters is planned to be
completed in two weeks after SDK proposal in Java is done - **12th of July.**
Tracking this work in
[Java](https://github.com/open-telemetry/opentelemetry-java/milestone/3).
### Iterating on API
As proposed API was released we start getting feedback on it. The plan is to
triage feedback in three milestones:
[**API revision
07-2019**](https://github.com/open-telemetry/opentelemetry-specification/milestone/2)
**(target - mid July). Proposed API cleanup.**
- Easy fixes - renamings, polishing, removing unnecessary API surface
- Add missing features - adding histograms and forgotten getters
- Issues that quickly getting agreement. For example, adding component for tracer
This milestone is for the fast clean up of a proposed API.
**API revision 08-2019 (target - mid August). API Complete.**
- All issues not included into the first milestone
**API revision 09-2019 (target - mid September). API v1.0.**
- Reserved for the issues received as a result of an end user feedback
**Future:**
- Feature requests that we can postpone to after stable version
- New telemetry sources support
### Extending the SDK
Once basic SDK is complete in Java we will switch to the specs first approach on
advancing its feature set.
Example of scope for extended SDK:
1. OTSvc protocol and implementation
2. Add missing features
1. More SpanProcessors. Example: non blocking queue processor with telemetry drop
2. More samplers. Example - rate limiting sampler, etc.
3. Histograms API and SDK
4. Metrics filters and processors
5. etc.
3. Discussions like
1. Native (POJO) object vs. Proto-generated object with proto dependency in
SDK
4. Tracestate manipulation callbacks
5. Other
First iteration of SDK feedback **mid August** we have specs, **End of
August** first iteration of Java SDK complete.
### Getting to release
By mid August the Java basic SDK will be complete and we will begin
stabilization work. Also OpenCensus can be switched to the OpenTelemetry SDK. As
well as instrumentation adapters can be implemented. So we will have early
adopters.
By early September we committed to provide a production ready full-featured
OpenTelemetry SDK in Java. End user feedback is one the critical force to make
the API and SDK right. Thus we dont plan to release **1.0** release and call it
**0.9**. As OpenTelemetry was built based on two mature SDKs we do not expect
major changes after September. However, as with any big projects, we anticipate
some issues with the new API and SDKs.
Depending on users engagement we hope to get to the 1.0 as early as the end of
September.
Note, as specification work delayed other languages may not have production
ready SDK in early September. Milestones have to be set individually in every
language.