Repository: open-telemetry/opentelemetry-go
Pull request #2013 (2021-06-17 19:56:49)

Pre-release 1.0.0-RC1
## 1.0.0-RC1 / 0.21.0

With this release we are introducing a split in module versions.  The tracing API and SDK are entering the `v1.0.0` Release Candidate phase with `v1.0.0-RC1` while the experimental metrics API and SDK continue with `v0.x` releases at `v0.21.0`.  Modules at major version 1 or greater will not depend on modules with major version 0.

### Added

- Adds `otlpgrpc.WithRetry`option for configuring the retry policy for transient errors on the otlp/gRPC exporter. (#1832)
  - The following status codes are defined as transient errors:
      | gRPC Status Code | Description |
      | ---------------- | ----------- |
      | 1  | Cancelled |
      | 4  | Deadline Exceeded |
      | 8  | Resource Exhausted |
      | 10 | Aborted |
      | 10 | Out of Range |
      | 14 | Unavailable |
      | 15 | Data Loss |
- Added `Status` type to the `go.opentelemetry.io/otel/sdk/trace` package to represent the status of a span. (#1874)
- Added `SpanStub` type and its associated functions to the `go.opentelemetry.io/otel/sdk/trace/tracetest` package.
  This type can be used as a testing replacement for the `SpanSnapshot` that was removed from the `go.opentelemetry.io/otel/sdk/trace` package. (#1873)
- Adds support for scheme in `OTEL_EXPORTER_OTLP_ENDPOINT` according to the spec. (#1886)
- Adds `trace.WithSchemaURL` option for configuring the tracer with a Schema URL. (#1889)
- Added an example of using OpenTelemetry Go as a trace context forwarder. (#1912)
- `ParseTraceState` is added to the `go.opentelemetry.io/otel/trace` package.
  It can be used to decode a `TraceState` from a `tracestate` header string value. (#1937)
- Added `Len` method to the `TraceState` type in the `go.opentelemetry.io/otel/trace` package.
  This method returns the number of list-members the `TraceState` holds. (#1937)
- Creates package `go.opentelemetry.io/otel/exporters/otlp/otlptrace` that defines a trace exporter that uses a `otlptrace.Client` to send data.
  Creates package `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc` implementing a gRPC `otlptrace.Client` and offers convenience functions, `NewExportPipeline` and `InstallNewPipeline`, to setup and install a `otlptrace.Exporter` in tracing .(#1922)
- Added `Baggage`, `Member`, and `Property` types to the `go.opentelemetry.io/otel/baggage` package along with their related functions. (#1967)
- Added `ContextWithBaggage`, `ContextWithoutBaggage`, and `FromContext` functions to the `go.opentelemetry.io/otel/baggage` package.
  These functions replace the `Set`, `Value`, `ContextWithValue`, `ContextWithoutValue`, and `ContextWithEmpty` functions from that package and directly work with the new `Baggage` type. (#1967)
- The `OTEL_SERVICE_NAME` environment variable is the preferred source for `service.name`, used by the environment resource detector if a service name is present both there and in `OTEL_RESOURCE_ATTRIBUTES`. (#1969)
- Creates package `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp` implementing an HTTP `otlptrace.Client` and offers convenience functions, `NewExportPipeline` and `InstallNewPipeline`, to setup and install a `otlptrace.Exporter` in tracing. (#1963)
- Changes `go.opentelemetry.io/otel/sdk/resource.NewWithAttributes` to require a schema URL. The old function is still available as `resource.NewSchemaless`. This is a breaking change. (#1938)
- Several builtin resource detectors now correctly populate the schema URL. (#1938)
- Creates package `go.opentelemetry.io/otel/exporters/otlp/otlpmetric` that defines a metrics exporter that uses a `otlpmetric.Client` to send data.
- Creates package `go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc` implementing a gRPC `otlpmetric.Client` and offers convenience functions, `New` and `NewUnstarted`, to create an `otlpmetric.Exporter`.(#1991)
- Added `go.opentelemetry.io/otel/exporters/stdout/stdouttrace` exporter. (#2005)
- Added `go.opentelemetry.io/otel/exporters/stdout/stdoutmetric` exporter. (#2005)
- Added a `TracerProvider()` method to the `"go.opentelemetry.io/otel/trace".Span` interface. This can be used to obtain a `TracerProvider` from a given span that utilizes the same trace processing pipeline.  (#2009)

### Changed

- Make `NewSplitDriver` from `go.opentelemetry.io/otel/exporters/otlp` take variadic arguments instead of a `SplitConfig` item.
  `NewSplitDriver` now automatically implements an internal `noopDriver` for `SplitConfig` fields that are not initialized. (#1798)
- `resource.New()` now creates a Resource without builtin detectors. Previous behavior is now achieved by using `WithBuiltinDetectors` Option. (#1810)
- Move the `Event` type from the `go.opentelemetry.io/otel` package to the `go.opentelemetry.io/otel/sdk/trace` package. (#1846)
- CI builds validate against last two versions of Go, dropping 1.14 and adding 1.16. (#1865)
- BatchSpanProcessor now report export failures when calling `ForceFlush()` method. (#1860)
- `Set.Encoded(Encoder)` no longer caches the result of an encoding. (#1855)
- Renamed `CloudZoneKey` to `CloudAvailabilityZoneKey` in Resource semantic conventions according to spec. (#1871)
- The `StatusCode` and `StatusMessage` methods of the `ReadOnlySpan` interface and the `Span` produced by the `go.opentelemetry.io/otel/sdk/trace` package have been replaced with a single `Status` method.
  This method returns the status of a span using the new `Status` type. (#1874)
- Updated `ExportSpans` method of the`SpanExporter` interface type to accept `ReadOnlySpan`s instead of the removed `SpanSnapshot`.
  This brings the export interface into compliance with the specification in that it now accepts an explicitly immutable type instead of just an implied one. (#1873)
- Unembed `SpanContext` in `Link`. (#1877)
- Generate Semantic conventions from the specification YAML. (#1891)
- Spans created by the global `Tracer` obtained from `go.opentelemetry.io/otel`, prior to a functioning `TracerProvider` being set, now propagate the span context from their parent if one exists. (#1901)
- The `"go.opentelemetry.io/otel".Tracer` function now accepts tracer options. (#1902)
- Move the `go.opentelemetry.io/otel/unit` package to `go.opentelemetry.io/otel/metric/unit`. (#1903)
- Changed `go.opentelemetry.io/otel/trace.TracerConfig` to conform to the [Contributing guidelines](CONTRIBUTING.md#config.) (#1921)
- Changed `go.opentelemetry.io/otel/trace.SpanConfig` to conform to the [Contributing guidelines](CONTRIBUTING.md#config). (#1921)
- Changed `span.End()` now only accepts Options that are allowed at `End()`. (#1921)
- Changed `go.opentelemetry.io/otel/metric.InstrumentConfig` to conform to the [Contributing guidelines](CONTRIBUTING.md#config). (#1921)
- Changed `go.opentelemetry.io/otel/metric.MeterConfig` to conform to the [Contributing guidelines](CONTRIBUTING.md#config). (#1921)
- Refactored option types according to the contribution style guide. (#1882)
- Move the `go.opentelemetry.io/otel/trace.TraceStateFromKeyValues` function to the `go.opentelemetry.io/otel/oteltest` package.
  This function is preserved for testing purposes where it may be useful to create a `TraceState` from `attribute.KeyValue`s, but it is not intended for production use.
  The new `ParseTraceState` function should be used to create a `TraceState`. (#1931)
- Updated `MarshalJSON` method of the `go.opentelemetry.io/otel/trace.TraceState` type to marshal the type into the string representation of the `TraceState`. (#1931)
- The `TraceState.Delete` method from the `go.opentelemetry.io/otel/trace` package no longer returns an error in addition to a `TraceState`. (#1931)
- Updated `Get` method of the `TraceState` type from the `go.opentelemetry.io/otel/trace` package to accept a `string` instead of an `attribute.Key` type. (#1931)
- Updated `Insert` method of the `TraceState` type from the `go.opentelemetry.io/otel/trace` package to accept a pair of `string`s instead of an `attribute.KeyValue` type. (#1931)
- Updated `Delete` method of the `TraceState` type from the `go.opentelemetry.io/otel/trace` package to accept a `string` instead of an `attribute.Key` type. (#1931)
- Renamed `NewExporter` to `New` in the `go.opentelemetry.io/otel/exporters/stdout` package. (#1985)
- Renamed `NewExporter` to `New` in the `go.opentelemetry.io/otel/exporters/metric/prometheus` package. (#1985)
- Renamed `NewExporter` to `New` in the `go.opentelemetry.io/otel/exporters/trace/jaeger` package. (#1985)
- Renamed `NewExporter` to `New` in the `go.opentelemetry.io/otel/exporters/trace/zipkin` package. (#1985)
- Renamed `NewExporter` to `New` in the `go.opentelemetry.io/otel/exporters/otlp` package. (#1985)
- Renamed `NewUnstartedExporter` to `NewUnstarted` in the `go.opentelemetry.io/otel/exporters/otlp` package. (#1985)
- The `go.opentelemetry.io/otel/semconv` package has been moved to `go.opentelemetry.io/otel/semconv/v1.4.0` to allow for multiple [telemetry schema](https://github.com/open-telemetry/oteps/blob/main/text/0152-telemetry-schemas.md) versions to be used concurrently. (#1987)
- Metrics test helpers in `go.opentelemetry.io/otel/oteltest` have been moved to `go.opentelemetry.io/otel/metric/metrictest`. (#1988)

### Deprecated

- The `go.opentelemetry.io/otel/exporters/metric/prometheus` is deprecated, use `go.opentelemetry.io/otel/exporters/prometheus` instead. (#1993)
- The `go.opentelemetry.io/otel/exporters/trace/jaeger` is deprecated, use `go.opentelemetry.io/otel/exporters/jaeger` instead. (#1993)
- The `go.opentelemetry.io/otel/exporters/trace/zipkin` is deprecated, use `go.opentelemetry.io/otel/exporters/zipkin` instead. (#1993)

### Removed

- Removed `resource.WithoutBuiltin()`. Use `resource.New()`. (#1810)
- Unexported types `resource.FromEnv`, `resource.Host`, and `resource.TelemetrySDK`, Use the corresponding `With*()` to use individually. (#1810)
- Removed the `Tracer` and `IsRecording` method from the `ReadOnlySpan` in the `go.opentelemetry.io/otel/sdk/trace`.
  The `Tracer` method is not a required to be included in this interface and given the mutable nature of the tracer that is associated with a span, this method is not appropriate.
  The `IsRecording` method returns if the span is recording or not.
  A read-only span value does not need to know if updates to it will be recorded or not.
  By definition, it cannot be updated so there is no point in communicating if an update is recorded. (#1873)
- Removed the `SpanSnapshot` type from the `go.opentelemetry.io/otel/sdk/trace` package.
  The use of this type has been replaced with the use of the explicitly immutable `ReadOnlySpan` type.
  When a concrete representation of a read-only span is needed for testing, the newly added `SpanStub` in the `go.opentelemetry.io/otel/sdk/trace/tracetest` package should be used. (#1873)
- Removed the `Tracer` method from the `Span` interface in the `go.opentelemetry.io/otel/trace` package.
  Using the same tracer that created a span introduces the error where an instrumentation library's `Tracer` is used by other code instead of their own.
  The `"go.opentelemetry.io/otel".Tracer` function or a `TracerProvider` should be used to acquire a library specific `Tracer` instead. (#1900)
  - The `TracerProvider()` method on the `Span` interface may also be used to obtain a `TracerProvider` using the same trace processing pipeline. (#2009)
- The `http.url` attribute generated by `HTTPClientAttributesFromHTTPRequest` will no longer include username or password information. (#1919)
- Removed `IsEmpty` method of the `TraceState` type in the `go.opentelemetry.io/otel/trace` package in favor of using the added `TraceState.Len` method. (#1931)
- Removed `Set`, `Value`, `ContextWithValue`, `ContextWithoutValue`, and `ContextWithEmpty` functions in the `go.opentelemetry.io/otel/baggage` package.
  Handling of baggage is now done using the added `Baggage` type and related context functions (`ContextWithBaggage`, `ContextWithoutBaggage`, and `FromContext`) in that package. (#1967)
- The `InstallNewPipeline` and `NewExportPipeline` creation functions in all the exporters (prometheus, otlp, stdout, jaeger, and zipkin) have been removed.
  These functions were deemed premature attempts to provide convenience that did not achieve this aim. (#1985)
- The `go.opentelemetry.io/otel/exporters/otlp` exporter has been removed.  Use `go.opentelemetry.io/otel/exporters/otlp/otlptrace` instead. (#1990)
- The `go.opentelemetry.io/otel/exporters/stdout` exporter has been removed.  Use `go.opentelemetry.io/otel/exporters/stdout/stdouttrace` or `go.opentelemetry.io/otel/exporters/stdout/stdoutmetric` instead. (#2005)

### Fixed

- Only report errors from the `"go.opentelemetry.io/otel/sdk/resource".Environment` function when they are not `nil`. (#1850, #1851)
- The `Shutdown` method of the simple `SpanProcessor` in the `go.opentelemetry.io/otel/sdk/trace` package now honors the context deadline or cancellation. (#1616, #1856)
- BatchSpanProcessor now drops span batches that failed to be exported. (#1860)
- Use `http://localhost:14268/api/traces` as default Jaeger collector endpoint instead of `http://localhost:14250`. (#1898)
- Allow trailing and leading whitespace in the parsing of a `tracestate` header. (#1931)
- Add logic to determine if the channel is closed to fix Jaeger exporter test panic with close closed channel. (#1870, #1973)
- Avoid transport security when OTLP endpoint is a Unix socket. (#2001)


codecov[bot]: # [Codecov](https://codecov.io/gh/open-telemetry/opentelemetry-go/pull/2013?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=open-telemetry) Report
> Merging [#2013](https://codecov.io/gh/open-telemetry/opentelemetry-go/pull/2013?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=open-telemetry) (4e492d3) into [main](https://codecov.io/gh/open-telemetry/opentelemetry-go/commit/39fe8092ed0156b6cbb8225589a81b86124fa491?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=open-telemetry) (39fe809) will **increase** coverage by `0.0%`.
> The diff coverage is `100.0%`.

[![Impacted file tree graph](https://codecov.io/gh/open-telemetry/opentelemetry-go/pull/2013/graphs/tree.svg?width=650&height=150&src=pr&token=8efTmh4kvf&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=open-telemetry)](https://codecov.io/gh/open-telemetry/opentelemetry-go/pull/2013?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=open-telemetry)

```diff
@@          Coverage Diff          @@
##            main   #2013   +/-   ##
=====================================
  Coverage   73.0%   73.0%           
=====================================
  Files        171     171           
  Lines       8687    8687           
=====================================
+ Hits        6346    6348    +2     
+ Misses      2072    2070    -2     
  Partials     269     269           
```


| [Impacted Files](https://codecov.io/gh/open-telemetry/opentelemetry-go/pull/2013?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=open-telemetry) | Coverage Δ | |
|---|---|---|
| [version.go](https://codecov.io/gh/open-telemetry/opentelemetry-go/pull/2013/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=open-telemetry#diff-dmVyc2lvbi5nbw==) | `100.0% <100.0%> (ø)` | |
| [exporters/jaeger/jaeger.go](https://codecov.io/gh/open-telemetry/opentelemetry-go/pull/2013/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=open-telemetry#diff-ZXhwb3J0ZXJzL2phZWdlci9qYWVnZXIuZ28=) | `94.2% <0.0%> (+1.1%)` | :arrow_up: |


Patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 59e7a436..27ff1bbb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,6 +10,24 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
 
 ### Added
 
+### Changed
+
+### Deprecated
+
+### Removed
+
+### Fixed
+
+### Security
+
+## [1.0.0-RC1] / 0.21.0 - 2021-06-18
+
+With this release we are introducing a split in module versions.  The tracing API and SDK are entering the `v1.0.0` Release Candidate phase with `v1.0.0-RC1`
+while the experimental metrics API and SDK continue with `v0.x` releases at `v0.21.0`.  Modules at major version 1 or greater will not depend on modules
+with major version 0.
+
+### Added
+
 - Adds `otlpgrpc.WithRetry`option for configuring the retry policy for transient errors on the otlp/gRPC exporter. (#1832)
   - The following status codes are defined as transient errors:
       | gRPC Status Code | Description |
@@ -21,23 +39,23 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
       | 10 | Out of Range |
       | 14 | Unavailable |
       | 15 | Data Loss |
-- The `Status` type was added to the `go.opentelemetry.io/otel/sdk/trace` package to represent the status of a span. (#1874)
-- The `SpanStub` type and its associated functions were added to the `go.opentelemetry.io/otel/sdk/trace/tracetest` package.
+- Added `Status` type to the `go.opentelemetry.io/otel/sdk/trace` package to represent the status of a span. (#1874)
+- Added `SpanStub` type and its associated functions to the `go.opentelemetry.io/otel/sdk/trace/tracetest` package.
   This type can be used as a testing replacement for the `SpanSnapshot` that was removed from the `go.opentelemetry.io/otel/sdk/trace` package. (#1873)
 - Adds support for scheme in `OTEL_EXPORTER_OTLP_ENDPOINT` according to the spec. (#1886)
 - Adds `trace.WithSchemaURL` option for configuring the tracer with a Schema URL. (#1889)
-- An example of using OpenTelemetry Go as a trace context forwarder. (#1912)
+- Added an example of using OpenTelemetry Go as a trace context forwarder. (#1912)
 - `ParseTraceState` is added to the `go.opentelemetry.io/otel/trace` package.
   It can be used to decode a `TraceState` from a `tracestate` header string value. (#1937)
-- The `Len` method is added to the `TraceState` type in the `go.opentelemetry.io/otel/trace` package.
+- Added `Len` method to the `TraceState` type in the `go.opentelemetry.io/otel/trace` package.
   This method returns the number of list-members the `TraceState` holds. (#1937)
 - Creates package `go.opentelemetry.io/otel/exporters/otlp/otlptrace` that defines a trace exporter that uses a `otlptrace.Client` to send data.
   Creates package `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc` implementing a gRPC `otlptrace.Client` and offers convenience functions, `NewExportPipeline` and `InstallNewPipeline`, to setup and install a `otlptrace.Exporter` in tracing .(#1922)
-- The `Baggage`, `Member`, and `Property` types are added to the `go.opentelemetry.io/otel/baggage` package along with their related functions. (#1967)
-- The new `ContextWithBaggage`, `ContextWithoutBaggage`, and `FromContext` functions were added to the `go.opentelemetry.io/otel/baggage` package.
+- Added `Baggage`, `Member`, and `Property` types to the `go.opentelemetry.io/otel/baggage` package along with their related functions. (#1967)
+- Added `ContextWithBaggage`, `ContextWithoutBaggage`, and `FromContext` functions to the `go.opentelemetry.io/otel/baggage` package.
   These functions replace the `Set`, `Value`, `ContextWithValue`, `ContextWithoutValue`, and `ContextWithEmpty` functions from that package and directly work with the new `Baggage` type. (#1967)
 - The `OTEL_SERVICE_NAME` environment variable is the preferred source for `service.name`, used by the environment resource detector if a service name is present both there and in `OTEL_RESOURCE_ATTRIBUTES`. (#1969)
-- Creates package `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp` implementing a HTTP `otlptrace.Client` and offers convenience functions, `NewExportPipeline` and `InstallNewPipeline`, to setup and install a `otlptrace.Exporter` in tracing. (#1963)
+- Creates package `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp` implementing an HTTP `otlptrace.Client` and offers convenience functions, `NewExportPipeline` and `InstallNewPipeline`, to setup and install a `otlptrace.Exporter` in tracing. (#1963)
 - Changes `go.opentelemetry.io/otel/sdk/resource.NewWithAttributes` to require a schema URL. The old function is still available as `resource.NewSchemaless`. This is a breaking change. (#1938)
 - Several builtin resource detectors now correctly populate the schema URL. (#1938)
 - Creates package `go.opentelemetry.io/otel/exporters/otlp/otlpmetric` that defines a metrics exporter that uses a `otlpmetric.Client` to send data.
@@ -58,33 +76,33 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
 - Renamed `CloudZoneKey` to `CloudAvailabilityZoneKey` in Resource semantic conventions according to spec. (#1871)
 - The `StatusCode` and `StatusMessage` methods of the `ReadOnlySpan` interface and the `Span` produced by the `go.opentelemetry.io/otel/sdk/trace` package have been replaced with a single `Status` method.
   This method returns the status of a span using the new `Status` type. (#1874)
-- The `ExportSpans` method of the`SpanExporter` interface type was updated to accept `ReadOnlySpan`s instead of the removed `SpanSnapshot`.
+- Updated `ExportSpans` method of the`SpanExporter` interface type to accept `ReadOnlySpan`s instead of the removed `SpanSnapshot`.
   This brings the export interface into compliance with the specification in that it now accepts an explicitly immutable type instead of just an implied one. (#1873)
 - Unembed `SpanContext` in `Link`. (#1877)
-- Semantic conventions are now generated from the specification YAML. (#1891)
+- Generate Semantic conventions from the specification YAML. (#1891)
 - Spans created by the global `Tracer` obtained from `go.opentelemetry.io/otel`, prior to a functioning `TracerProvider` being set, now propagate the span context from their parent if one exists. (#1901)
 - The `"go.opentelemetry.io/otel".Tracer` function now accepts tracer options. (#1902)
 - Move the `go.opentelemetry.io/otel/unit` package to `go.opentelemetry.io/otel/metric/unit`. (#1903)
 - Changed `go.opentelemetry.io/otel/trace.TracerConfig` to conform to the [Contributing guidelines](CONTRIBUTING.md#config.) (#1921)
 - Changed `go.opentelemetry.io/otel/trace.SpanConfig` to conform to the [Contributing guidelines](CONTRIBUTING.md#config). (#1921)
-- Changed `span.End()` now only accepts Options that are allowed at `end()`. (#1921)
+- Changed `span.End()` now only accepts Options that are allowed at `End()`. (#1921)
 - Changed `go.opentelemetry.io/otel/metric.InstrumentConfig` to conform to the [Contributing guidelines](CONTRIBUTING.md#config). (#1921)
 - Changed `go.opentelemetry.io/otel/metric.MeterConfig` to conform to the [Contributing guidelines](CONTRIBUTING.md#config). (#1921)
-- Refactor option types according to the contribution style guide. (#1882)
+- Refactored option types according to the contribution style guide. (#1882)
 - Move the `go.opentelemetry.io/otel/trace.TraceStateFromKeyValues` function to the `go.opentelemetry.io/otel/oteltest` package.
   This function is preserved for testing purposes where it may be useful to create a `TraceState` from `attribute.KeyValue`s, but it is not intended for production use.
   The new `ParseTraceState` function should be used to create a `TraceState`. (#1931)
-- The `MarshalJSON` method of the `go.opentelemetry.io/otel/trace.TraceState` type is updated to marshal the type in to the string representation of the `TraceState`. (#1931)
+- Updated `MarshalJSON` method of the `go.opentelemetry.io/otel/trace.TraceState` type to marshal the type into the string representation of the `TraceState`. (#1931)
 - The `TraceState.Delete` method from the `go.opentelemetry.io/otel/trace` package no longer returns an error in addition to a `TraceState`. (#1931)
-- The `Get` method of the `TraceState` type from the `go.opentelemetry.io/otel/trace` package has been updated to accept a `string` instead of an `attribute.Key` type. (#1931)
-- The `Insert` method of the `TraceState` type from the `go.opentelemetry.io/otel/trace` package has been updated to accept a pair of `string`s instead of an `attribute.KeyValue` type. (#1931)
-- The `Delete` method of the `TraceState` type from the `go.opentelemetry.io/otel/trace` package has been updated to accept a `string` instead of an `attribute.Key` type. (#1931)
-- Rename `NewExporter` to `New` in the `go.opentelemetry.io/otel/exporters/stdout` package. (#1985)
-- Rename `NewExporter` to `New` in the `go.opentelemetry.io/otel/exporters/metric/prometheus` package. (#1985)
-- Rename `NewExporter` to `New` in the `go.opentelemetry.io/otel/exporters/trace/jaeger` package. (#1985)
-- Rename `NewExporter` to `New` in the `go.opentelemetry.io/otel/exporters/trace/zipkin` package. (#1985)
-- Rename `NewExporter` to `New` in the `go.opentelemetry.io/otel/exporters/otlp` package. (#1985)
-- Rename `NewUnstartedExporter` to `NewUnstarted` in the `go.opentelemetry.io/otel/exporters/otlp` package. (#1985)
+- Updated `Get` method of the `TraceState` type from the `go.opentelemetry.io/otel/trace` package to accept a `string` instead of an `attribute.Key` type. (#1931)
+- Updated `Insert` method of the `TraceState` type from the `go.opentelemetry.io/otel/trace` package to accept a pair of `string`s instead of an `attribute.KeyValue` type. (#1931)
+- Updated `Delete` method of the `TraceState` type from the `go.opentelemetry.io/otel/trace` package to accept a `string` instead of an `attribute.Key` type. (#1931)
+- Renamed `NewExporter` to `New` in the `go.opentelemetry.io/otel/exporters/stdout` package. (#1985)
+- Renamed `NewExporter` to `New` in the `go.opentelemetry.io/otel/exporters/metric/prometheus` package. (#1985)
+- Renamed `NewExporter` to `New` in the `go.opentelemetry.io/otel/exporters/trace/jaeger` package. (#1985)
+- Renamed `NewExporter` to `New` in the `go.opentelemetry.io/otel/exporters/trace/zipkin` package. (#1985)
+- Renamed `NewExporter` to `New` in the `go.opentelemetry.io/otel/exporters/otlp` package. (#1985)
+- Renamed `NewUnstartedExporter` to `NewUnstarted` in the `go.opentelemetry.io/otel/exporters/otlp` package. (#1985)
 - The `go.opentelemetry.io/otel/semconv` package has been moved to `go.opentelemetry.io/otel/semconv/v1.4.0` to allow for multiple [telemetry schema](https://github.com/open-telemetry/oteps/blob/main/text/0152-telemetry-schemas.md) versions to be used concurrently. (#1987)
 - Metrics test helpers in `go.opentelemetry.io/otel/oteltest` have been moved to `go.opentelemetry.io/otel/metric/metrictest`. (#1988)
 
@@ -96,7 +114,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
 
 ### Removed
 
-- Remove `resource.WithoutBuiltin()`. Use `resource.New()`. (#1810)
+- Removed `resource.WithoutBuiltin()`. Use `resource.New()`. (#1810)
 - Unexported types `resource.FromEnv`, `resource.Host`, and `resource.TelemetrySDK`, Use the corresponding `With*()` to use individually. (#1810)
 - Removed the `Tracer` and `IsRecording` method from the `ReadOnlySpan` in the `go.opentelemetry.io/otel/sdk/trace`.
   The `Tracer` method is not a required to be included in this interface and given the mutable nature of the tracer that is associated with a span, this method is not appropriate.
@@ -106,13 +124,13 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
 - Removed the `SpanSnapshot` type from the `go.opentelemetry.io/otel/sdk/trace` package.
   The use of this type has been replaced with the use of the explicitly immutable `ReadOnlySpan` type.
   When a concrete representation of a read-only span is needed for testing, the newly added `SpanStub` in the `go.opentelemetry.io/otel/sdk/trace/tracetest` package should be used. (#1873)
-- Remove the `Tracer` method from the `Span` interface in the `go.opentelemetry.io/otel/trace` package.
+- Removed the `Tracer` method from the `Span` interface in the `go.opentelemetry.io/otel/trace` package.
   Using the same tracer that created a span introduces the error where an instrumentation library's `Tracer` is used by other code instead of their own.
   The `"go.opentelemetry.io/otel".Tracer` function or a `TracerProvider` should be used to acquire a library specific `Tracer` instead. (#1900)
   - The `TracerProvider()` method on the `Span` interface may also be used to obtain a `TracerProvider` using the same trace processing pipeline. (#2009)
 - The `http.url` attribute generated by `HTTPClientAttributesFromHTTPRequest` will no longer include username or password information. (#1919)
-- The `IsEmpty` method of the `TraceState` type in the `go.opentelemetry.io/otel/trace` package is removed in favor of using the added `TraceState.Len` method. (#1931)
-- The `Set`, `Value`, `ContextWithValue`, `ContextWithoutValue`, and `ContextWithEmpty` functions in the `go.opentelemetry.io/otel/baggage` package are removed.
+- Removed `IsEmpty` method of the `TraceState` type in the `go.opentelemetry.io/otel/trace` package in favor of using the added `TraceState.Len` method. (#1931)
+- Removed `Set`, `Value`, `ContextWithValue`, `ContextWithoutValue`, and `ContextWithEmpty` functions in the `go.opentelemetry.io/otel/baggage` package.
   Handling of baggage is now done using the added `Baggage` type and related context functions (`ContextWithBaggage`, `ContextWithoutBaggage`, and `FromContext`) in that package. (#1967)
 - The `InstallNewPipeline` and `NewExportPipeline` creation functions in all the exporters (prometheus, otlp, stdout, jaeger, and zipkin) have been removed.
   These functions were deemed premature attempts to provide convenience that did not achieve this aim. (#1985)
@@ -127,7 +145,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
 - Use `http://localhost:14268/api/traces` as default Jaeger collector endpoint instead of `http://localhost:14250`. (#1898)
 - Allow trailing and leading whitespace in the parsing of a `tracestate` header. (#1931)
 - Add logic to determine if the channel is closed to fix Jaeger exporter test panic with close closed channel. (#1870, #1973)
-- Avoid transport security when otlp endpoint is a Unix socket. (#2001)
+- Avoid transport security when OTLP endpoint is a Unix socket. (#2001)
 
 ### Security
 
@@ -1397,7 +1415,8 @@ It contains api and sdk for trace and meter.
 - CircleCI build CI manifest files.
 - CODEOWNERS file to track owners of this project.
 
-[Unreleased]: https://github.com/open-telemetry/opentelemetry-go/compare/v0.20.0...HEAD
+[Unreleased]: https://github.com/open-telemetry/opentelemetry-go/compare/v1.0.0-RC1...HEAD
+[1.0.0-RC1]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.0.0-RC1
 [0.20.0]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v0.20.0
 [0.19.0]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v0.19.0
 [0.18.0]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v0.18.0
diff --git a/attribute/doc.go b/attribute/doc.go
index 44bc32c9..42d09005 100644
--- a/attribute/doc.go
+++ b/attribute/doc.go
@@ -14,7 +14,6 @@
 
 // package attribute provides key and value attributes.
 //
-// This package is currently in a pre-GA phase. Backwards incompatible changes
-// may be introduced in subsequent minor version releases as we work to track
-// the evolving OpenTelemetry specification and user feedback.
+// This package is currently in a Release Candidate phase. Backwards incompatible changes
+// may be introduced prior to v1.0.0, but we believe the current API is ready to stabilize.
 package attribute // import "go.opentelemetry.io/otel/attribute"
diff --git a/baggage/doc.go b/baggage/doc.go
index 4ac3fcce..188e53f4 100644
--- a/baggage/doc.go
+++ b/baggage/doc.go
@@ -17,8 +17,7 @@ Package baggage provides functionality for storing and retrieving
 baggage items in Go context. For propagating the baggage, see the
 go.opentelemetry.io/otel/propagation package.
 
-This package is currently in a pre-GA phase. Backwards incompatible changes
-may be introduced in subsequent minor version releases as we work to track the
-evolving OpenTelemetry specification and user feedback.
+This package is currently in a Release Candidate phase. Backwards incompatible changes
+may be introduced prior to v1.0.0, but we believe the current API is ready to stabilize.
 */
 package baggage // import "go.opentelemetry.io/otel/baggage"
diff --git a/bridge/opencensus/go.mod b/bridge/opencensus/go.mod
index 66c57dcf..857df2c0 100644
--- a/bridge/opencensus/go.mod
+++ b/bridge/opencensus/go.mod
@@ -4,12 +4,12 @@ go 1.15
 
 require (
 	go.opencensus.io v0.22.6-0.20201102222123-380f4078db9f
-	go.opentelemetry.io/otel v0.20.0
-	go.opentelemetry.io/otel/metric v0.20.0
-	go.opentelemetry.io/otel/oteltest v0.20.0
-	go.opentelemetry.io/otel/sdk v0.20.0
-	go.opentelemetry.io/otel/sdk/export/metric v0.20.0
-	go.opentelemetry.io/otel/trace v0.20.0
+	go.opentelemetry.io/otel v1.0.0-RC1
+	go.opentelemetry.io/otel/metric v0.21.0
+	go.opentelemetry.io/otel/oteltest v1.0.0-RC1
+	go.opentelemetry.io/otel/sdk v1.0.0-RC1
+	go.opentelemetry.io/otel/sdk/export/metric v0.21.0
+	go.opentelemetry.io/otel/trace v1.0.0-RC1
 )
 
 replace go.opentelemetry.io/otel => ../..
diff --git a/bridge/opentracing/go.mod b/bridge/opentracing/go.mod
index 329a5f03..5325c91e 100644
--- a/bridge/opentracing/go.mod
+++ b/bridge/opentracing/go.mod
@@ -6,8 +6,8 @@ replace go.opentelemetry.io/otel => ../..
 
 require (
 	github.com/opentracing/opentracing-go v1.2.0
-	go.opentelemetry.io/otel v0.20.0
-	go.opentelemetry.io/otel/trace v0.20.0
+	go.opentelemetry.io/otel v1.0.0-RC1
+	go.opentelemetry.io/otel/trace v1.0.0-RC1
 )
 
 replace go.opentelemetry.io/otel/bridge/opencensus => ../opencensus
diff --git a/codes/doc.go b/codes/doc.go
index fcf89ba1..7b60f983 100644
--- a/codes/doc.go
+++ b/codes/doc.go
@@ -15,9 +15,8 @@
 /*
 Package codes defines the canonical error codes used by OpenTelemetry.
 
-This package is currently in a pre-GA phase. Backwards incompatible changes
-may be introduced in subsequent minor version releases as we work to track
-the evolving OpenTelemetry specification and user feedback.
+This package is currently in a Release Candidate phase. Backwards incompatible changes
+may be introduced prior to v1.0.0, but we believe the current API is ready to stabilize.
 
 It conforms to [the OpenTelemetry
 specification](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/api.md#statuscanonicalcode).
diff --git a/doc.go b/doc.go
index 771ce81c..48474942 100644
--- a/doc.go
+++ b/doc.go
@@ -16,9 +16,8 @@
 Package otel provides global access to the OpenTelemetry API. The subpackages of
 the otel package provide an implementation of the OpenTelemetry API.
 
-This package is currently in a pre-GA phase. Backwards incompatible changes
-may be introduced in subsequent minor version releases as we work to track the
-evolving OpenTelemetry specification and user feedback.
+This package is currently in a Release Candidate phase. Backwards incompatible changes
+may be introduced prior to v1.0.0, but we believe the current API is ready to stabilize.
 
 The provided API is used to instrument code and measure data about that code's
 performance and operation. The measured data, by default, is not processed or
diff --git a/example/jaeger/go.mod b/example/jaeger/go.mod
index 558aac07..0fcbbefe 100644
--- a/example/jaeger/go.mod
+++ b/example/jaeger/go.mod
@@ -9,9 +9,9 @@ replace (
 )
 
 require (
-	go.opentelemetry.io/otel v0.20.0
-	go.opentelemetry.io/otel/exporters/jaeger v0.20.0
-	go.opentelemetry.io/otel/sdk v0.20.0
+	go.opentelemetry.io/otel v1.0.0-RC1
+	go.opentelemetry.io/otel/exporters/jaeger v1.0.0-RC1
+	go.opentelemetry.io/otel/sdk v1.0.0-RC1
 )
 
 replace go.opentelemetry.io/otel/bridge/opencensus => ../../bridge/opencensus
diff --git a/example/namedtracer/go.mod b/example/namedtracer/go.mod
index 9e3de00b..5b32ac87 100644
--- a/example/namedtracer/go.mod
+++ b/example/namedtracer/go.mod
@@ -8,10 +8,10 @@ replace (
 )
 
 require (
-	go.opentelemetry.io/otel v0.20.0
-	go.opentelemetry.io/otel/exporters/stdout/stdouttrace v0.20.0
-	go.opentelemetry.io/otel/sdk v0.20.0
-	go.opentelemetry.io/otel/trace v0.20.0
+	go.opentelemetry.io/otel v1.0.0-RC1
+	go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.0.0-RC1
+	go.opentelemetry.io/otel/sdk v1.0.0-RC1
+	go.opentelemetry.io/otel/trace v1.0.0-RC1
 )
 
 replace go.opentelemetry.io/otel/bridge/opencensus => ../../bridge/opencensus
diff --git a/example/opencensus/go.mod b/example/opencensus/go.mod
index 60de8857..53f3a7a3 100644
--- a/example/opencensus/go.mod
+++ b/example/opencensus/go.mod
@@ -10,12 +10,12 @@ replace (
 
 require (
 	go.opencensus.io v0.22.6-0.20201102222123-380f4078db9f
-	go.opentelemetry.io/otel v0.20.0
-	go.opentelemetry.io/otel/bridge/opencensus v0.20.0
-	go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v0.20.0
-	go.opentelemetry.io/otel/exporters/stdout/stdouttrace v0.20.0
-	go.opentelemetry.io/otel/sdk v0.20.0
-	go.opentelemetry.io/otel/sdk/export/metric v0.20.0
+	go.opentelemetry.io/otel v1.0.0-RC1
+	go.opentelemetry.io/otel/bridge/opencensus v0.21.0
+	go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v0.21.0
+	go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.0.0-RC1
+	go.opentelemetry.io/otel/sdk v1.0.0-RC1
+	go.opentelemetry.io/otel/sdk/export/metric v0.21.0
 )
 
 replace go.opentelemetry.io/otel/bridge/opentracing => ../../bridge/opentracing
diff --git a/example/otel-collector/go.mod b/example/otel-collector/go.mod
index 4dd9b0cc..a5b5d1a2 100644
--- a/example/otel-collector/go.mod
+++ b/example/otel-collector/go.mod
@@ -8,10 +8,10 @@ replace (
 )
 
 require (
-	go.opentelemetry.io/otel v0.20.0
-	go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v0.20.0
-	go.opentelemetry.io/otel/sdk v0.20.0
-	go.opentelemetry.io/otel/trace v0.20.0
+	go.opentelemetry.io/otel v1.0.0-RC1
+	go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.0.0-RC1
+	go.opentelemetry.io/otel/sdk v1.0.0-RC1
+	go.opentelemetry.io/otel/trace v1.0.0-RC1
 	google.golang.org/grpc v1.38.0
 )
 
diff --git a/example/passthrough/go.mod b/example/passthrough/go.mod
index 831dd00b..47d81232 100644
--- a/example/passthrough/go.mod
+++ b/example/passthrough/go.mod
@@ -3,10 +3,10 @@ module go.opentelemetry.io/otel/example/passthrough
 go 1.15
 
 require (
-	go.opentelemetry.io/otel v0.20.0
-	go.opentelemetry.io/otel/exporters/stdout/stdouttrace v0.20.0
-	go.opentelemetry.io/otel/sdk v0.20.0
-	go.opentelemetry.io/otel/trace v0.20.0
+	go.opentelemetry.io/otel v1.0.0-RC1
+	go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.0.0-RC1
+	go.opentelemetry.io/otel/sdk v1.0.0-RC1
+	go.opentelemetry.io/otel/trace v1.0.0-RC1
 )
 
 replace (
diff --git a/example/prometheus/go.mod b/example/prometheus/go.mod
index f950de8c..6406bb6a 100644
--- a/example/prometheus/go.mod
+++ b/example/prometheus/go.mod
@@ -9,11 +9,11 @@ replace (
 )
 
 require (
-	go.opentelemetry.io/otel v0.20.0
-	go.opentelemetry.io/otel/exporters/prometheus v0.20.0
-	go.opentelemetry.io/otel/metric v0.20.0
-	go.opentelemetry.io/otel/sdk/export/metric v0.20.0
-	go.opentelemetry.io/otel/sdk/metric v0.20.0
+	go.opentelemetry.io/otel v1.0.0-RC1
+	go.opentelemetry.io/otel/exporters/prometheus v0.21.0
+	go.opentelemetry.io/otel/metric v0.21.0
+	go.opentelemetry.io/otel/sdk/export/metric v0.21.0
+	go.opentelemetry.io/otel/sdk/metric v0.21.0
 )
 
 replace go.opentelemetry.io/otel/bridge/opencensus => ../../bridge/opencensus
diff --git a/example/zipkin/go.mod b/example/zipkin/go.mod
index 8c855c46..5d660e26 100644
--- a/example/zipkin/go.mod
+++ b/example/zipkin/go.mod
@@ -9,10 +9,10 @@ replace (
 )
 
 require (
-	go.opentelemetry.io/otel v0.20.0
-	go.opentelemetry.io/otel/exporters/zipkin v0.20.0
-	go.opentelemetry.io/otel/sdk v0.20.0
-	go.opentelemetry.io/otel/trace v0.20.0
+	go.opentelemetry.io/otel v1.0.0-RC1
+	go.opentelemetry.io/otel/exporters/zipkin v1.0.0-RC1
+	go.opentelemetry.io/otel/sdk v1.0.0-RC1
+	go.opentelemetry.io/otel/trace v1.0.0-RC1
 )
 
 replace go.opentelemetry.io/otel/bridge/opencensus => ../../bridge/opencensus
diff --git a/exporters/jaeger/doc.go b/exporters/jaeger/doc.go
index c91f7d6a..7e23966a 100644
--- a/exporters/jaeger/doc.go
+++ b/exporters/jaeger/doc.go
@@ -14,7 +14,6 @@
 
 // Package jaeger contains an OpenTelemetry tracing exporter for Jaeger.
 //
-// This package is currently in a pre-GA phase. Backwards incompatible changes
-// may be introduced in subsequent minor version releases as we work to track
-// the evolving OpenTelemetry specification and user feedback.
+// This package is currently in a Release Candidate phase. Backwards incompatible changes
+// may be introduced prior to v1.0.0, but we believe the current API is ready to stabilize.
 package jaeger // import "go.opentelemetry.io/otel/exporters/jaeger"
diff --git a/exporters/jaeger/go.mod b/exporters/jaeger/go.mod
index 1acc86dc..b05b8a47 100644
--- a/exporters/jaeger/go.mod
+++ b/exporters/jaeger/go.mod
@@ -5,9 +5,9 @@ go 1.15
 require (
 	github.com/google/go-cmp v0.5.6
 	github.com/stretchr/testify v1.7.0
-	go.opentelemetry.io/otel v0.20.0
-	go.opentelemetry.io/otel/sdk v0.20.0
-	go.opentelemetry.io/otel/trace v0.20.0
+	go.opentelemetry.io/otel v1.0.0-RC1
+	go.opentelemetry.io/otel/sdk v1.0.0-RC1
+	go.opentelemetry.io/otel/trace v1.0.0-RC1
 )
 
 replace go.opentelemetry.io/otel/bridge/opencensus => ../../bridge/opencensus
diff --git a/exporters/metric/prometheus/go.mod b/exporters/metric/prometheus/go.mod
index 2cb5bec4..9775e080 100644
--- a/exporters/metric/prometheus/go.mod
+++ b/exporters/metric/prometheus/go.mod
@@ -10,11 +10,11 @@ replace (
 require (
 	github.com/prometheus/client_golang v1.11.0
 	github.com/stretchr/testify v1.7.0
-	go.opentelemetry.io/otel v0.20.0
-	go.opentelemetry.io/otel/metric v0.20.0
-	go.opentelemetry.io/otel/sdk v0.20.0
-	go.opentelemetry.io/otel/sdk/export/metric v0.20.0
-	go.opentelemetry.io/otel/sdk/metric v0.20.0
+	go.opentelemetry.io/otel v1.0.0-RC1
+	go.opentelemetry.io/otel/metric v0.21.0
+	go.opentelemetry.io/otel/sdk v1.0.0-RC1
+	go.opentelemetry.io/otel/sdk/export/metric v0.21.0
+	go.opentelemetry.io/otel/sdk/metric v0.21.0
 )
 
 replace go.opentelemetry.io/otel/bridge/opencensus => ../../../bridge/opencensus
diff --git a/exporters/otlp/otlpmetric/go.mod b/exporters/otlp/otlpmetric/go.mod
index 27f15d02..20cf37bb 100644
--- a/exporters/otlp/otlpmetric/go.mod
+++ b/exporters/otlp/otlpmetric/go.mod
@@ -5,11 +5,11 @@ go 1.15
 require (
 	github.com/cenkalti/backoff/v4 v4.1.1
 	github.com/stretchr/testify v1.7.0
-	go.opentelemetry.io/otel v0.20.0
-	go.opentelemetry.io/otel/metric v0.20.0
-	go.opentelemetry.io/otel/sdk v0.20.0
-	go.opentelemetry.io/otel/sdk/export/metric v0.20.0
-	go.opentelemetry.io/otel/sdk/metric v0.20.0
+	go.opentelemetry.io/otel v1.0.0-RC1
+	go.opentelemetry.io/otel/metric v0.21.0
+	go.opentelemetry.io/otel/sdk v1.0.0-RC1
+	go.opentelemetry.io/otel/sdk/export/metric v0.21.0
+	go.opentelemetry.io/otel/sdk/metric v0.21.0
 	go.opentelemetry.io/proto/otlp v0.9.0
 	google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013
 	google.golang.org/grpc v1.38.0
diff --git a/exporters/otlp/otlpmetric/otlpmetricgrpc/go.mod b/exporters/otlp/otlpmetric/otlpmetricgrpc/go.mod
index 10dd0a12..b9937ba9 100644
--- a/exporters/otlp/otlpmetric/otlpmetricgrpc/go.mod
+++ b/exporters/otlp/otlpmetric/otlpmetricgrpc/go.mod
@@ -4,10 +4,10 @@ go 1.15
 
 require (
 	github.com/stretchr/testify v1.7.0
-	go.opentelemetry.io/otel v0.20.0
-	go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.0.0-00010101000000-000000000000
-	go.opentelemetry.io/otel/metric v0.20.0
-	go.opentelemetry.io/otel/sdk/metric v0.20.0
+	go.opentelemetry.io/otel v1.0.0-RC1
+	go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.21.0
+	go.opentelemetry.io/otel/metric v0.21.0
+	go.opentelemetry.io/otel/sdk/metric v0.21.0
 	go.opentelemetry.io/proto/otlp v0.9.0
 	google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013
 	google.golang.org/grpc v1.38.0
diff --git a/exporters/otlp/otlptrace/go.mod b/exporters/otlp/otlptrace/go.mod
index 0a6f5933..26f2ef36 100644
--- a/exporters/otlp/otlptrace/go.mod
+++ b/exporters/otlp/otlptrace/go.mod
@@ -6,10 +6,10 @@ require (
 	github.com/cenkalti/backoff/v4 v4.1.1
 	github.com/google/go-cmp v0.5.6
 	github.com/stretchr/testify v1.7.0
-	go.opentelemetry.io/otel v0.20.0
-	go.opentelemetry.io/otel/oteltest v0.20.0
-	go.opentelemetry.io/otel/sdk v0.20.0
-	go.opentelemetry.io/otel/trace v0.20.0
+	go.opentelemetry.io/otel v1.0.0-RC1
+	go.opentelemetry.io/otel/oteltest v1.0.0-RC1
+	go.opentelemetry.io/otel/sdk v1.0.0-RC1
+	go.opentelemetry.io/otel/trace v1.0.0-RC1
 	go.opentelemetry.io/proto/otlp v0.9.0
 	google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013
 	google.golang.org/grpc v1.38.0
diff --git a/exporters/otlp/otlptrace/otlptracegrpc/go.mod b/exporters/otlp/otlptrace/otlptracegrpc/go.mod
index 453a30d9..ed492b73 100644
--- a/exporters/otlp/otlptrace/otlptracegrpc/go.mod
+++ b/exporters/otlp/otlptrace/otlptracegrpc/go.mod
@@ -4,9 +4,9 @@ go 1.15
 
 require (
 	github.com/stretchr/testify v1.7.0
-	go.opentelemetry.io/otel v0.20.0
-	go.opentelemetry.io/otel/exporters/otlp/otlptrace v0.0.0-00010101000000-000000000000
-	go.opentelemetry.io/otel/sdk v0.20.0
+	go.opentelemetry.io/otel v1.0.0-RC1
+	go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.0.0-RC1
+	go.opentelemetry.io/otel/sdk v1.0.0-RC1
 	go.opentelemetry.io/proto/otlp v0.9.0
 	google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013
 	google.golang.org/grpc v1.38.0
diff --git a/exporters/otlp/otlptrace/otlptracehttp/doc.go b/exporters/otlp/otlptrace/otlptracehttp/doc.go
index 9c4c90ed..595625b8 100644
--- a/exporters/otlp/otlptrace/otlptracehttp/doc.go
+++ b/exporters/otlp/otlptrace/otlptracehttp/doc.go
@@ -16,9 +16,7 @@
 Package otlptracehttp a client that sends traces to the collector
 using HTTP with binary protobuf payloads.
 
-This package is currently in a pre-GA phase. Backwards incompatible
-changes may be introduced in subsequent minor version releases as we
-work to track the evolving OpenTelemetry specification and user
-feedback.
+This package is currently in a Release Candidate phase. Backwards incompatible changes
+may be introduced prior to v1.0.0, but we believe the current API is ready to stabilize.
 */
 package otlptracehttp // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp"
diff --git a/exporters/otlp/otlptrace/otlptracehttp/go.mod b/exporters/otlp/otlptrace/otlptracehttp/go.mod
index 872d39f1..b66b91b6 100644
--- a/exporters/otlp/otlptrace/otlptracehttp/go.mod
+++ b/exporters/otlp/otlptrace/otlptracehttp/go.mod
@@ -4,8 +4,8 @@ go 1.15
 
 require (
 	github.com/stretchr/testify v1.7.0
-	go.opentelemetry.io/otel v0.20.0
-	go.opentelemetry.io/otel/exporters/otlp/otlptrace v0.0.0-00010101000000-000000000000
+	go.opentelemetry.io/otel v1.0.0-RC1
+	go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.0.0-RC1
 	go.opentelemetry.io/proto/otlp v0.9.0
 	google.golang.org/protobuf v1.26.0
 )
diff --git a/exporters/prometheus/go.mod b/exporters/prometheus/go.mod
index 70b9f1b1..5f4bae54 100644
--- a/exporters/prometheus/go.mod
+++ b/exporters/prometheus/go.mod
@@ -5,11 +5,11 @@ go 1.15
 require (
 	github.com/prometheus/client_golang v1.11.0
 	github.com/stretchr/testify v1.7.0
-	go.opentelemetry.io/otel v0.20.0
-	go.opentelemetry.io/otel/metric v0.20.0
-	go.opentelemetry.io/otel/sdk v0.20.0
-	go.opentelemetry.io/otel/sdk/export/metric v0.20.0
-	go.opentelemetry.io/otel/sdk/metric v0.20.0
+	go.opentelemetry.io/otel v1.0.0-RC1
+	go.opentelemetry.io/otel/metric v0.21.0
+	go.opentelemetry.io/otel/sdk v1.0.0-RC1
+	go.opentelemetry.io/otel/sdk/export/metric v0.21.0
+	go.opentelemetry.io/otel/sdk/metric v0.21.0
 )
 
 replace go.opentelemetry.io/otel => ../..
diff --git a/exporters/stdout/stdoutmetric/go.mod b/exporters/stdout/stdoutmetric/go.mod
index 547f7466..d55f8974 100644
--- a/exporters/stdout/stdoutmetric/go.mod
+++ b/exporters/stdout/stdoutmetric/go.mod
@@ -9,11 +9,11 @@ replace (
 
 require (
 	github.com/stretchr/testify v1.7.0
-	go.opentelemetry.io/otel v0.20.0
-	go.opentelemetry.io/otel/metric v0.20.0
-	go.opentelemetry.io/otel/sdk v0.20.0
-	go.opentelemetry.io/otel/sdk/export/metric v0.20.0
-	go.opentelemetry.io/otel/sdk/metric v0.20.0
+	go.opentelemetry.io/otel v1.0.0-RC1
+	go.opentelemetry.io/otel/metric v0.21.0
+	go.opentelemetry.io/otel/sdk v1.0.0-RC1
+	go.opentelemetry.io/otel/sdk/export/metric v0.21.0
+	go.opentelemetry.io/otel/sdk/metric v0.21.0
 )
 
 replace go.opentelemetry.io/otel/bridge/opencensus => ../../../bridge/opencensus
diff --git a/exporters/stdout/stdouttrace/doc.go b/exporters/stdout/stdouttrace/doc.go
index 9a0965e8..8880bfee 100644
--- a/exporters/stdout/stdouttrace/doc.go
+++ b/exporters/stdout/stdouttrace/doc.go
@@ -15,7 +15,6 @@
 // Package stdout contains an OpenTelemetry exporter for tracing
 // telemetry to be written to an output destination as JSON.
 //
-// This package is currently in a pre-GA phase. Backwards incompatible changes
-// may be introduced in subsequent minor version releases as we work to track
-// the evolving OpenTelemetry specification and user feedback.
+// This package is currently in a Release Candidate phase. Backwards incompatible changes
+// may be introduced prior to v1.0.0, but we believe the current API is ready to stabilize.
 package stdouttrace // import "go.opentelemetry.io/otel/exporters/stdout/stdouttrace"
diff --git a/exporters/stdout/stdouttrace/go.mod b/exporters/stdout/stdouttrace/go.mod
index b65af221..158d0863 100644
--- a/exporters/stdout/stdouttrace/go.mod
+++ b/exporters/stdout/stdouttrace/go.mod
@@ -9,10 +9,10 @@ replace (
 
 require (
 	github.com/stretchr/testify v1.7.0
-	go.opentelemetry.io/otel v0.20.0
-	go.opentelemetry.io/otel/oteltest v0.20.0
-	go.opentelemetry.io/otel/sdk v0.20.0
-	go.opentelemetry.io/otel/trace v0.20.0
+	go.opentelemetry.io/otel v1.0.0-RC1
+	go.opentelemetry.io/otel/oteltest v1.0.0-RC1
+	go.opentelemetry.io/otel/sdk v1.0.0-RC1
+	go.opentelemetry.io/otel/trace v1.0.0-RC1
 )
 
 replace go.opentelemetry.io/otel/bridge/opencensus => ../../../bridge/opencensus
diff --git a/exporters/trace/jaeger/go.mod b/exporters/trace/jaeger/go.mod
index 7649c234..fbc823ed 100644
--- a/exporters/trace/jaeger/go.mod
+++ b/exporters/trace/jaeger/go.mod
@@ -10,9 +10,9 @@ replace (
 require (
 	github.com/google/go-cmp v0.5.6
 	github.com/stretchr/testify v1.7.0
-	go.opentelemetry.io/otel v0.20.0
-	go.opentelemetry.io/otel/sdk v0.20.0
-	go.opentelemetry.io/otel/trace v0.20.0
+	go.opentelemetry.io/otel v1.0.0-RC1
+	go.opentelemetry.io/otel/sdk v1.0.0-RC1
+	go.opentelemetry.io/otel/trace v1.0.0-RC1
 )
 
 replace go.opentelemetry.io/otel/bridge/opencensus => ../../../bridge/opencensus
diff --git a/exporters/trace/zipkin/go.mod b/exporters/trace/zipkin/go.mod
index 5ca66d32..f0a68e55 100644
--- a/exporters/trace/zipkin/go.mod
+++ b/exporters/trace/zipkin/go.mod
@@ -11,9 +11,9 @@ require (
 	github.com/google/go-cmp v0.5.6
 	github.com/openzipkin/zipkin-go v0.2.5
 	github.com/stretchr/testify v1.7.0
-	go.opentelemetry.io/otel v0.20.0
-	go.opentelemetry.io/otel/sdk v0.20.0
-	go.opentelemetry.io/otel/trace v0.20.0
+	go.opentelemetry.io/otel v1.0.0-RC1
+	go.opentelemetry.io/otel/sdk v1.0.0-RC1
+	go.opentelemetry.io/otel/trace v1.0.0-RC1
 )
 
 replace go.opentelemetry.io/otel/bridge/opencensus => ../../../bridge/opencensus
diff --git a/exporters/zipkin/doc.go b/exporters/zipkin/doc.go
index 94683a61..37fc646f 100644
--- a/exporters/zipkin/doc.go
+++ b/exporters/zipkin/doc.go
@@ -14,7 +14,6 @@
 
 // Package zipkin contains an OpenTelemetry tracing exporter for Zipkin.
 //
-// This package is currently in a pre-GA phase. Backwards incompatible changes
-// may be introduced in subsequent minor version releases as we work to track
-// the evolving OpenTelemetry specification and user feedback.
+// This package is currently in a Release Candidate phase. Backwards incompatible changes
+// may be introduced prior to v1.0.0, but we believe the current API is ready to stabilize.
 package zipkin // import "go.opentelemetry.io/otel/exporters/zipkin"
diff --git a/exporters/zipkin/go.mod b/exporters/zipkin/go.mod
index 22260e0a..48d289b7 100644
--- a/exporters/zipkin/go.mod
+++ b/exporters/zipkin/go.mod
@@ -6,9 +6,9 @@ require (
 	github.com/google/go-cmp v0.5.6
 	github.com/openzipkin/zipkin-go v0.2.5
 	github.com/stretchr/testify v1.7.0
-	go.opentelemetry.io/otel v0.20.0
-	go.opentelemetry.io/otel/sdk v0.20.0
-	go.opentelemetry.io/otel/trace v0.20.0
+	go.opentelemetry.io/otel v1.0.0-RC1
+	go.opentelemetry.io/otel/sdk v1.0.0-RC1
+	go.opentelemetry.io/otel/trace v1.0.0-RC1
 )
 
 replace go.opentelemetry.io/otel/bridge/opencensus => ../../bridge/opencensus
diff --git a/go.mod b/go.mod
index d2497df1..bcf7a924 100644
--- a/go.mod
+++ b/go.mod
@@ -5,8 +5,8 @@ go 1.15
 require (
 	github.com/google/go-cmp v0.5.6
 	github.com/stretchr/testify v1.7.0
-	go.opentelemetry.io/otel/oteltest v0.20.0
-	go.opentelemetry.io/otel/trace v0.20.0
+	go.opentelemetry.io/otel/oteltest v1.0.0-RC1
+	go.opentelemetry.io/otel/trace v1.0.0-RC1
 )
 
 replace go.opentelemetry.io/otel => ./
diff --git a/internal/metric/go.mod b/internal/metric/go.mod
index c90658c2..fc27d30b 100644
--- a/internal/metric/go.mod
+++ b/internal/metric/go.mod
@@ -4,8 +4,8 @@ go 1.15
 
 require (
 	github.com/stretchr/testify v1.7.0
-	go.opentelemetry.io/otel v0.20.0
-	go.opentelemetry.io/otel/metric v0.20.0
+	go.opentelemetry.io/otel v1.0.0-RC1
+	go.opentelemetry.io/otel/metric v0.21.0
 )
 
 replace go.opentelemetry.io/otel => ../..
diff --git a/metric/go.mod b/metric/go.mod
index 08174635..153ac82d 100644
--- a/metric/go.mod
+++ b/metric/go.mod
@@ -45,8 +45,8 @@ replace go.opentelemetry.io/otel/trace => ../trace
 require (
 	github.com/google/go-cmp v0.5.6
 	github.com/stretchr/testify v1.7.0
-	go.opentelemetry.io/otel v0.20.0
-	go.opentelemetry.io/otel/internal/metric v0.20.0
+	go.opentelemetry.io/otel v1.0.0-RC1
+	go.opentelemetry.io/otel/internal/metric v0.21.0
 )
 
 replace go.opentelemetry.io/otel/example/passthrough => ../example/passthrough
diff --git a/propagation/doc.go b/propagation/doc.go
index 89573f1b..7d56873a 100644
--- a/propagation/doc.go
+++ b/propagation/doc.go
@@ -15,9 +15,8 @@
 /*
 Package propagation contains OpenTelemetry context propagators.
 
-This package is currently in a pre-GA phase. Backwards incompatible changes
-may be introduced in subsequent minor version releases as we work to track the
-evolving OpenTelemetry specification and user feedback.
+This package is currently in a Release Candidate phase. Backwards incompatible changes
+may be introduced prior to v1.0.0, but we believe the current API is ready to stabilize.
 
 OpenTelemetry propagators are used to extract and inject context data from and
 into messages exchanged by applications. The propagator supported by this
diff --git a/sdk/export/metric/go.mod b/sdk/export/metric/go.mod
index a49d4fe7..7a2ca752 100644
--- a/sdk/export/metric/go.mod
+++ b/sdk/export/metric/go.mod
@@ -44,9 +44,9 @@ replace go.opentelemetry.io/otel/trace => ../../../trace
 
 require (
 	github.com/stretchr/testify v1.7.0
-	go.opentelemetry.io/otel v0.20.0
-	go.opentelemetry.io/otel/metric v0.20.0
-	go.opentelemetry.io/otel/sdk v0.20.0
+	go.opentelemetry.io/otel v1.0.0-RC1
+	go.opentelemetry.io/otel/metric v0.21.0
+	go.opentelemetry.io/otel/sdk v1.0.0-RC1
 )
 
 replace go.opentelemetry.io/otel/example/passthrough => ../../../example/passthrough
diff --git a/sdk/go.mod b/sdk/go.mod
index eb3980bd..2bf54dd5 100644
--- a/sdk/go.mod
+++ b/sdk/go.mod
@@ -7,9 +7,9 @@ replace go.opentelemetry.io/otel => ../
 require (
 	github.com/google/go-cmp v0.5.6
 	github.com/stretchr/testify v1.7.0
-	go.opentelemetry.io/otel v0.20.0
-	go.opentelemetry.io/otel/oteltest v0.20.0
-	go.opentelemetry.io/otel/trace v0.20.0
+	go.opentelemetry.io/otel v1.0.0-RC1
+	go.opentelemetry.io/otel/oteltest v1.0.0-RC1
+	go.opentelemetry.io/otel/trace v1.0.0-RC1
 )
 
 replace go.opentelemetry.io/otel/bridge/opencensus => ../bridge/opencensus
diff --git a/sdk/instrumentation/library.go b/sdk/instrumentation/library.go
index 5e54ee48..2c2c9923 100644
--- a/sdk/instrumentation/library.go
+++ b/sdk/instrumentation/library.go
@@ -16,9 +16,8 @@
 Package instrumentation provides an instrumentation library structure to be
 passed to both the OpenTelemetry Tracer and Meter components.
 
-This package is currently in a pre-GA phase. Backwards incompatible changes
-may be introduced in subsequent minor version releases as we work to track the
-evolving OpenTelemetry specification and user feedback.
+This package is currently in a Release Candidate phase. Backwards incompatible changes
+may be introduced prior to v1.0.0, but we believe the current API is ready to stabilize.
 
 For more information see
 [this](https://github.com/open-telemetry/oteps/blob/main/text/0083-component.md).
diff --git a/sdk/metric/go.mod b/sdk/metric/go.mod
index e57aa9c2..1fb1cddc 100644
--- a/sdk/metric/go.mod
+++ b/sdk/metric/go.mod
@@ -45,11 +45,11 @@ replace go.opentelemetry.io/otel/trace => ../../trace
 require (
 	github.com/benbjohnson/clock v1.1.0 // do not upgrade to v1.1.x because it would require Go >= 1.15
 	github.com/stretchr/testify v1.7.0
-	go.opentelemetry.io/otel v0.20.0
-	go.opentelemetry.io/otel/internal/metric v0.20.0
-	go.opentelemetry.io/otel/metric v0.20.0
-	go.opentelemetry.io/otel/sdk v0.20.0
-	go.opentelemetry.io/otel/sdk/export/metric v0.20.0
+	go.opentelemetry.io/otel v1.0.0-RC1
+	go.opentelemetry.io/otel/internal/metric v0.21.0
+	go.opentelemetry.io/otel/metric v0.21.0
+	go.opentelemetry.io/otel/sdk v1.0.0-RC1
+	go.opentelemetry.io/otel/sdk/export/metric v0.21.0
 )
 
 replace go.opentelemetry.io/otel/example/passthrough => ../../example/passthrough
diff --git a/sdk/resource/doc.go b/sdk/resource/doc.go
index fe34f896..846d65bb 100644
--- a/sdk/resource/doc.go
+++ b/sdk/resource/doc.go
@@ -14,9 +14,8 @@
 
 // Package resource provides detecting and representing resources.
 //
-// This package is currently in a pre-GA phase. Backwards incompatible changes
-// may be introduced in subsequent minor version releases as we work to track
-// the evolving OpenTelemetry specification and user feedback.
+// This package is currently in a Release Candidate phase. Backwards incompatible changes
+// may be introduced prior to v1.0.0, but we believe the current API is ready to stabilize.
 //
 // The fundamental struct is a Resource which holds identifying information
 // about the entities for which telemetry is exported.
diff --git a/sdk/trace/doc.go b/sdk/trace/doc.go
index fd6ead86..70212916 100644
--- a/sdk/trace/doc.go
+++ b/sdk/trace/doc.go
@@ -15,9 +15,8 @@
 /*
 Package trace contains support for OpenTelemetry distributed tracing.
 
-This package is currently in a pre-GA phase. Backwards incompatible changes
-may be introduced in subsequent minor version releases as we work to track the
-evolving OpenTelemetry specification and user feedback.
+This package is currently in a Release Candidate phase. Backwards incompatible changes
+may be introduced prior to v1.0.0, but we believe the current API is ready to stabilize.
 
 The following assumes a basic familiarity with OpenTelemetry concepts.
 See https://opentelemetry.io.
diff --git a/semconv/v1.4.0/doc.go b/semconv/v1.4.0/doc.go
index 4451ab22..90184a9f 100644
--- a/semconv/v1.4.0/doc.go
+++ b/semconv/v1.4.0/doc.go
@@ -14,9 +14,8 @@
 
 // Package semconv implements OpenTelemetry semantic conventions.
 //
-// This package is currently in a pre-GA phase. Backwards incompatible changes
-// may be introduced in subsequent minor version releases as we work to track
-// the evolving OpenTelemetry specification and user feedback.
+// This package is currently in a Release Candidate phase. Backwards incompatible changes
+// may be introduced prior to v1.0.0, but we believe the current API is ready to stabilize.
 //
 // OpenTelemetry semantic conventions are agreed standardized naming
 // patterns for OpenTelemetry things. This package represents the conventions
diff --git a/trace/doc.go b/trace/doc.go
index c962f3bc..5cc50500 100644
--- a/trace/doc.go
+++ b/trace/doc.go
@@ -16,9 +16,8 @@
 Package trace provides an implementation of the tracing part of the
 OpenTelemetry API.
 
-This package is currently in a pre-GA phase. Backwards incompatible changes
-may be introduced in subsequent minor version releases as we work to track the
-evolving OpenTelemetry specification and user feedback.
+This package is currently in a Release Candidate phase. Backwards incompatible changes
+may be introduced prior to v1.0.0, but we believe the current API is ready to stabilize.
 
 To participate in distributed traces a Span needs to be created for the
 operation being performed as part of a traced workflow. It its simplest form:
diff --git a/trace/go.mod b/trace/go.mod
index 44a977ef..49bea6d3 100644
--- a/trace/go.mod
+++ b/trace/go.mod
@@ -45,7 +45,7 @@ replace go.opentelemetry.io/otel/trace => ./
 require (
 	github.com/google/go-cmp v0.5.6
 	github.com/stretchr/testify v1.7.0
-	go.opentelemetry.io/otel v0.20.0
+	go.opentelemetry.io/otel v1.0.0-RC1
 )
 
 replace go.opentelemetry.io/otel/example/passthrough => ../example/passthrough
diff --git a/version.go b/version.go
index 81be6f36..69bb4673 100644
--- a/version.go
+++ b/version.go
@@ -16,5 +16,5 @@ package otel // import "go.opentelemetry.io/otel"
 
 // Version is the current release version of OpenTelemetry in use.
 func Version() string {
-	return "0.20.0"
+	return "1.0.0-RC1"
 }
diff --git a/versions.yaml b/versions.yaml
new file mode 100644
index 00000000..1b6152b9
--- /dev/null
+++ b/versions.yaml
@@ -0,0 +1,56 @@
+# Copyright The OpenTelemetry Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+module-sets:
+  stable-v1:
+    version: v1.0.0-RC1
+    modules:
+      - go.opentelemetry.io/otel
+      - go.opentelemetry.io/otel/example/jaeger
+      - go.opentelemetry.io/otel/example/namedtracer
+      - go.opentelemetry.io/otel/example/otel-collector
+      - go.opentelemetry.io/otel/example/passthrough
+      - go.opentelemetry.io/otel/example/zipkin
+      - go.opentelemetry.io/otel/exporters/jaeger
+      - go.opentelemetry.io/otel/exporters/zipkin
+      - go.opentelemetry.io/otel/exporters/otlp/otlptrace
+      - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc
+      - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp
+      - go.opentelemetry.io/otel/exporters/stdout/stdouttrace
+      - go.opentelemetry.io/otel/exporters/trace/jaeger
+      - go.opentelemetry.io/otel/exporters/trace/zipkin
+      - go.opentelemetry.io/otel/oteltest
+      - go.opentelemetry.io/otel/trace
+      - go.opentelemetry.io/otel/sdk
+  experimental-metrics:
+    version: v0.21.0
+    modules:
+      - go.opentelemetry.io/otel/example/prometheus
+      - go.opentelemetry.io/otel/exporters/metric/prometheus
+      - go.opentelemetry.io/otel/exporters/otlp/otlpmetric
+      - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc
+      - go.opentelemetry.io/otel/exporters/prometheus
+      - go.opentelemetry.io/otel/exporters/stdout/stdoutmetric
+      - go.opentelemetry.io/otel/internal/metric
+      - go.opentelemetry.io/otel/metric
+      - go.opentelemetry.io/otel/sdk/export/metric
+      - go.opentelemetry.io/otel/sdk/metric
+  bridge:
+    version: v0.21.0
+    modules:
+      - go.opentelemetry.io/otel/bridge/opencensus
+      - go.opentelemetry.io/otel/bridge/opentracing
+      - go.opentelemetry.io/otel/example/opencensus
+excluded-modules:
+  - go.opentelemetry.io/otel/internal/tools
\ No newline at end of file
diff --git a/website_docs/_index.md b/website_docs/_index.md
index 2000ec01..9201aa37 100644
--- a/website_docs/_index.md
+++ b/website_docs/_index.md
@@ -14,7 +14,7 @@ The current status of the major functional components for OpenTelemetry Go is as
 
 | Tracing | Metrics | Logging |
 | ------- | ------- | ------- |
-| Beta    | Alpha   | Not Yet Implemented |
+| Release Candidate    | Alpha   | Not Yet Implemented |
 
 The current release can be found [here](https://github.com/open-telemetry/opentelemetry-go/releases)
 
diff --git a/website_docs/exporting_data.md b/website_docs/exporting_data.md
index c01dc0c4..bf015293 100644
--- a/website_docs/exporting_data.md
+++ b/website_docs/exporting_data.md
@@ -33,10 +33,11 @@ Resources are a special type of attribute that apply to all spans generated by a
 Resources should be assigned to a tracer provider at its initialization, and are created much like attributes:
 
 ```go
-resources := resource.New(
-	attribute.String("service.name", "myService"),
-	attribute.String("service.version", "1.0.0"),
-	attribute.String("instance.id", "abcdef12345"),
+resources := resource.NewWithAttributes(
+	semconv.SchemaURL,
+	semconv.ServiceNameKey.String("myService"),
+	semconv.ServiceVersionKey.String("1.0.0"),
+	semconv.ServiceInstanceIDKey.String("abcdef12345"),
 )
 
 provider := sdktrace.NewTracerProvider(
@@ -45,9 +46,26 @@ provider := sdktrace.NewTracerProvider(
 )
 ```
 
+Note the use of the `semconv` package to provide conventional names for resource attributes.  This helps ensure that consumers of telemetry produced with these semantic conventions can
+easily discover relevant attributes and understand their meaning.
+
+Resources can also be detected automatically through `resource.Detector` implementations.  These `Detector`s may discover information about the currently running process, the operating
+system it is running on, the cloud provider hosting that operating system instance, or any number of other resource attributes.
+
+```go
+resources := resource.New(context.Background(),
+	// Builtin detectors provide default values and support
+	// OTEL_RESOURCE_ATTRIBUTES and OTEL_SERVICE_NAME environment variables
+	resource.WithBuiltinDetectors(),
+	resource.WithProcess(), // This option configures a set of Detectors that discover process information
+	resource.WithDetectors(thirdparty.Detector{}), // Bring your own external Detector implementation
+	resource.WithAttributes(attribute.String("foo", "bar")), // Or specify resource attributes directly
+)
+```
+
 # OTLP Exporter
 
-OpenTelemetry Protocol (OTLP) is available in the `go.opentelemetry.io/otel/exporters/otlp` package.
+OpenTelemetry Protocol (OTLP) export is available in the `go.opentelemetry.io/otel/exporters/otlp/otlptrace` and `go.opentelemetry.io/otel/exporters/otlp/otlpmetrics` packages.
 
 Please find more documentation on [GitHub](https://github.com/open-telemetry/opentelemetry-go/tree/main/exporters/otlp)
 
diff --git a/website_docs/getting-started.md b/website_docs/getting-started.md
index be35a87b..dce9a429 100644
--- a/website_docs/getting-started.md
+++ b/website_docs/getting-started.md
@@ -15,7 +15,11 @@ To get started with this guide, create a new directory and add a new file named
 
 To install the necessary prerequisites for OpenTelemetry, you'll want to run the following command in the directory with your `go.mod`:
 
-`go get go.opentelemetry.io/otel@v0.20.0 go.opentelemetry.io/otel/sdk@v0.20.0 go.opentelemetry.io/otel/exporters/stdout@v0.20.0`
+`go get go.opentelemetry.io/otel@v1.0.0-RC1 go.opentelemetry.io/otel/sdk@v1.0.0-RC1 go.opentelemetry.io/otel/exporters/stdout/stdouttrace@v1.0.0-RC1`
+
+If you wish to include the experimental metrics support you will need to include a few additional modules:
+
+`go get go.opentelemetry.io/otel/metric@v0.21.0 go.opentelemetry.io/otel/sdk/metric@v0.21.0 go.opentelemetry.io/otel/exporters/stdout/stdoutmetric@v0.21.0`
 
 In your `main.go` file, you'll need to import several packages:
 
@@ -28,17 +32,19 @@ import (
 	"time"
 
 	"go.opentelemetry.io/otel"
+	"go.opentelemetry.io/otel/attribute"
 	"go.opentelemetry.io/otel/baggage"
 	"go.opentelemetry.io/otel/exporters/stdout/stdouttrace"
-	"go.opentelemetry.io/otel/exporters/stdout/stdoutmetric"
-	"go.opentelemetry.io/otel/attribute"
-	"go.opentelemetry.io/otel/metric"
+	sdktrace "go.opentelemetry.io/otel/sdk/trace"
 	"go.opentelemetry.io/otel/propagation"
+	"go.opentelemetry.io/otel/trace"
+
+	// For experimental metrics support, also include:
+	"go.opentelemetry.io/otel/metric"
+	"go.opentelemetry.io/otel/exporters/stdout/stdoutmetric"
 	controller "go.opentelemetry.io/otel/sdk/metric/controller/basic"
 	processor "go.opentelemetry.io/otel/sdk/metric/processor/basic"
 	"go.opentelemetry.io/otel/sdk/metric/selector/simple"
-	sdktrace "go.opentelemetry.io/otel/sdk/trace"
-	"go.opentelemetry.io/otel/trace"
 )
 ```
 
@@ -48,7 +54,7 @@ These packages contain the basic requirements for OpenTelemetry Go - the API its
 
 The SDK requires an exporter to be created. Exporters are packages that allow telemetry data to be emitted somewhere - either to the console (which is what we're doing here), or to a remote system or collector for further analysis and/or enrichment. OpenTelemetry supports a variety of exporters through its ecosystem including popular open source tools like Jaeger, Zipkin, and Prometheus.
 
-To initialize the console exporter, add the following code to the file your `main.go` file -
+To initialize the console exporter, add the following code to the file your `main.go` file:
 
 ```go
 func main() {
@@ -68,7 +74,7 @@ A trace is a type of telemetry that represents work being done by a service. In
 
 OpenTelemetry requires a trace provider to be initialized in order to generate traces. A trace provider can have multiple span processors, which are components that allow for span data to be modified or exported after it's created.
 
-To create a trace provider, add the following code to your `main.go` file -
+To create a trace provider, add the following code to your `main.go` file:
 
 ```go
 	ctx := context.Background()
@@ -87,7 +93,7 @@ A metric is a captured measurement about the execution of a computer program at
 
 OpenTelemetry requires a meter provider to be initialized in order to create instruments that will generate metrics. The way metrics are exported depends on the used system. For example, prometheus uses a pull model, while OTLP uses a push model. In this document we use an stdout exporter which uses the latter. Thus we need to create a push controller that will periodically push the collected metrics to the exporter.
 
-To create a meter provider, add the following code to your `main.go` file -
+To create a meter provider, add the following code to your `main.go` file:
 
 ```go
 	metricExporter, err := stdoutmetric.New(
@@ -121,7 +127,7 @@ Again we create an exporter, this time using the `stdoutmetric` exporter package
 
 When using OpenTelemetry, it's a good practice to set a global tracer provider and a global meter provider. Doing so will make it easier for libraries and other dependencies that use the OpenTelemetry API to easily discover the SDK, and emit telemetry data. In addition, you'll want to configure context propagation options. Context propagation allows for OpenTelemetry to share values across multiple services - this includes trace identifiers, which ensure that all spans for a single request are part of the same trace, as well as baggage, which are arbitrary key/value pairs that you can use to pass observability data between services (for example, sharing a customer ID from one service to the next).
 
-Setting up global options uses the `otel` package - add these options to your `main.go` file as shown -
+Setting up global options uses the `otel` package - add these options to your `main.go` file as shown:
 
 ```go
 	otel.SetTracerProvider(tp)
@@ -141,8 +147,6 @@ Each measurement can be associated with attributes that can later be used by vis
 To set up some metric instruments, add the following code to your `main.go` file -
 
 ```go
-	fooKey := attribute.Key("ex.com/foo")
-	barKey := attribute.Key("ex.com/bar")
 	lemonsKey := attribute.Key("ex.com/lemons")
 	anotherKey := attribute.Key("ex.com/another")
 
@@ -171,10 +175,13 @@ Let's put the concepts we've just covered together, and create a trace and some
 
 ```go
 	tracer := otel.Tracer("ex.com/basic")
-	ctx = baggage.ContextWithValues(ctx,
-		fooKey.String("foo1"),
-		barKey.String("bar1"),
-	)
+
+	// we're ignoring errors here since we know these values are valid,
+	// but do handle them appropriately if dealing with user-input
+	foo, _ := baggage.NewMember("ex.com.foo", "foo1")
+	bar, _ := baggage.NewMember("ex.com.bar", "bar1")
+	bag, _ := baggage.New(foo, bar)
+	ctx = baggage.ContextWithBaggage(ctx, bag)
 
 	func(ctx context.Context) {
 		var span trace.Span
@@ -185,8 +192,6 @@ Let's put the concepts we've just covered together, and create a trace and some
 		span.SetAttributes(anotherKey.String("yes"))
 
 		meter.RecordBatch(
-			// Note: call-site variables added as context Entries:
-			baggage.ContextWithValues(ctx, anotherKey.String("xyz")),
 			commonAttributes,
 
 			valueRecorder.Measurement(2.0),
diff --git a/website_docs/instrumentation.md b/website_docs/instrumentation.md
index 84919e41..c9c3aaf1 100644
--- a/website_docs/instrumentation.md
+++ b/website_docs/instrumentation.md
@@ -11,7 +11,7 @@ Spans are created by tracers, which can be acquired from a Tracer Provider.
 
 ```go
 ctx := context.Background()
-tracer := provider.Tracer("example/main")
+tracer := otel.Tracer("example/main")
 var span trace.Span
 ctx, span = tracer.Start(ctx, "helloWorld")
 defer span.End()
@@ -93,7 +93,7 @@ The metrics API is currently unstable, documentation TBA.
 
 Traces can extend beyond a single process. This requires _context propagation_, a mechanism where identifiers for a trace are sent to remote processes.
 
-In order to propagate trace context over the wire, a propagator must be registered with the OpenTelemetry SDK.
+In order to propagate trace context over the wire, a propagator must be registered with the OpenTelemetry API.
 
 ```go
 import (


Test patch:
diff --git a/oteltest/doc.go b/oteltest/doc.go
index 8711adc4..999cbc42 100644
--- a/oteltest/doc.go
+++ b/oteltest/doc.go
@@ -15,9 +15,8 @@
 /*
 Package oteltest provides testing utilities for the otel package.
 
-This package is currently in a pre-GA phase. Backwards incompatible changes
-may be introduced in subsequent minor version releases as we work to track the
-evolving OpenTelemetry specification and user feedback.
+This package is currently in a Release Candidate phase. Backwards incompatible changes
+may be introduced prior to v1.0.0, but we believe the current API is ready to stabilize.
 
 API Validation
 
diff --git a/oteltest/go.mod b/oteltest/go.mod
index c0081dde..f5ec1a1c 100644
--- a/oteltest/go.mod
+++ b/oteltest/go.mod
@@ -46,8 +46,8 @@ replace go.opentelemetry.io/otel/trace => ../trace
 
 require (
 	github.com/stretchr/testify v1.7.0
-	go.opentelemetry.io/otel v0.20.0
-	go.opentelemetry.io/otel/trace v0.20.0
+	go.opentelemetry.io/otel v1.0.0-RC1
+	go.opentelemetry.io/otel/trace v1.0.0-RC1
 )
 
 replace go.opentelemetry.io/otel/example/passthrough => ../example/passthrough