|
| 1 | +## Action Plan for Bootstraping from OpenCensus |
| 2 | + |
| 3 | +### Goals |
| 4 | +We need to bootstrap the OpenTelemetry Service using the existing OpenCensus Service codebase. We agreed to split the Service codebase into 2 parts: core and contrib. This bootstrapping is a good opportunity to do the splitting by only including in the OpenTelemetry Service core the minimum number of receivers and exporters and moving the rest of functionality to a contrib package (most vendor-specific code). |
| 5 | + |
| 6 | +The contrib package and vendor-specific receivers and exporters will continue to be available and there is no intent to retire it. The intent is to have a clear decoupling in the codebase that facilitates independent contribution of new components in the future, allows to easily create customized versions of a Service and makes it clear that core contributors will be responsible for maintenance of the core while vendor-specific components will be maintained by corresponding vendors (note: this does not exclude dual participation at all - some developers will likely work for vendors and will also be core maintainers). |
| 7 | + |
| 8 | +# Migration Tasks |
| 9 | + |
| 10 | +This is the action plan that also shows the progress. Tick the boxes after the task is complete. |
| 11 | + |
| 12 | +[ ] Copy all commits from https://github.com/census-instrumentation/opencensus-service to https://github.com/open-telemetry/opentelemetry-service |
| 13 | +Make sure commit history is preserved. |
| 14 | + |
| 15 | +[ ] Remove receivers and exporters that are not part of core. We will keep the following in the core: |
| 16 | + |
| 17 | +- Prometheus |
| 18 | +- Jaeger (agent and collector ones) |
| 19 | +- Zipkin |
| 20 | +- OpenCensus, temporarily until OpenTelemetry one is available (we may want to keep OC for longer to facilitate migrations) |
| 21 | + |
| 22 | +[ ] Cleanly decouple `core` from `cmd` in the repository. `core` will contain all business logic. `cmd` will be just a main.go that executes the business logic and compiles to `otsvc` executable. |
| 23 | + |
| 24 | +`otsvc` will will only include receivers and exporters which we consider to be part of the core. |
| 25 | + |
| 26 | +The new codebase will contain improvements which are already in progress and which are aimed at making the codebase extensible and enable the splitting to core and contrib. This includes 3 initiatives: |
| 27 | + |
| 28 | +- Decoupling of receiver and exporter implementations from the core logic. |
| 29 | + |
| 30 | +- Introduction of receiver and exporter factories that can be individually registered to activate them. |
| 31 | + |
| 32 | +- Implementation of the [new configuration format](https://docs.google.com/document/d/1GWOzV0H0RTN1adiwo7fTmkjfCATDDFGuOB4jp3ldCc8/edit#) that makes use of factories and allows for greater flexibility in the configuration. |
| 33 | + |
| 34 | +The functionally of the new `otsvc` will heavily lean on existing implementation and will be mostly a superset of the current agent/collector functionality when considering core receivers and exporters only (however we will allow deviations if it saves significant implementation effort and makes the service better). |
| 35 | + |
| 36 | +[ ] Provide guidelines and example implementations for vendors to follow when they add new receivers and exporters to the contrib package. |
| 37 | + |
| 38 | +[ ] Create a new repository for contrib and copy all commits from https://github.com/census-instrumentation/opencensus-service to https://github.com/open-telemetry/opentelemetry-service |
| 39 | +Make sure commit history is preserved. |
| 40 | + |
| 41 | +[ ] Cleanup the `contrib` repo to only contain additional vendor specific receivers and exporters. |
| 42 | + |
| 43 | +(Note: alternatively `contrib` can be a directory in the main repo - this is still open for discussion). |
| 44 | + |
| 45 | +[ ] Provide OpenCensus-to-OpenTelemetry Service migration guidelines for end-users who want to migrate. This will include recommendations on configuration file migration. We will also consider the possibility to support old configuration format in the new binary. |
| 46 | + |
| 47 | +This approach allows us to have significant progress towards 2 stated goals in our [vision document](../blob/master/docs/VISION.md): unify the codebase for agent and collector and make the service more extensible. |
0 commit comments