You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add concrete Transaction/Span types
This will allow us to better distinguish between transactions and spans, allowing for stricter typing and only exposing the proper attributes and functions for each type.
Add TransactionContext & SpanContext
The Go SDK lacks abstractions for the context, making it weird to compose transaction/span options. This will also make distributed tracing more robust, as we can properly propagate the parent context during transaction/span creation.
Add getters/setters for all exposed Transaction/Span attributes
This will allow us to make breaking changes to the core data structures more easily.
Remove StartSpannot needed
This method will be entirely replaced by StartTransaction and follows the unified API.
Move Transaction name to the Transaction context
Currently, the transaction name is set on the scope, making it cumbersome to work with it in concurrent environments.
Move all integrations into their own submodules
The sentry-otel module will be the first attempt to solve this issue, leading the way for other integrations to follow.
Performance tracing out of the box
We currently only offer performance tracing for net/http and should expand this to all integrations by default.
Add gRPC integration
available in OTel
gRPC is widely used in Go, so the SDK should ship with a default integration.
Add Fiber support
Fiber is one of Go's biggest frameworks, so the SDK ship with a default integration.
(Stretch goal) Add Buffalo support
A framework that is closer to other languages' frameworks like Ruby on Rails or Laravel.
(Stretch goal) Add support for more logging libraries
TBD
SDK usage in Go routines
The current APIs exposed are insufficient and hard to understand when working with Go routines. We should make it easier to clone and set the Hub/Scope on the context when using Go routines.
go func(ctx *conext.Context) {
// Explicitly set a new Hub on the context
sentry.SetHubOnContext(sentry.GetHubFromContext(ctx).Clone())
...
hub := sentry.GetHubFromContext(ctx)
}
go func() {
// Replaces sentry.GetCurrentHub()
hub := sentry.GetGlobalHub().Clone()
}
Investigate: SDK configuration via functional options
With the current approach (passing ClientOptions to sentry.Init), we can't always say if the configuration option was passed or not (e.g., Golang will initialize all boolean flags to false, if they're not set to true in ClientOptions). Functional options (resource1, resource2) is a pattern that is sometimes used to handle cases like this.
We can first start using it for integration to change the behavior of Repanic which is false by default.
EnableTracing flag might not be necessary if we do this.
Misc
The current transport fails in high throughput environments. We may utilize more than one buffered channel.
Remove the usage of the store endpoint, as it is considered deprecated. We'll use the envelope endpoint exclusively.
Rename captureExcpetion to captureError
Do not swallow panics in integrations by default.
Do not get the release by calling git, as this has unwanted side effects on client-installed binaries.
Go SDK roadmap v1.0.0
Better performance API
Add concrete Transaction/Span types
This will allow us to better distinguish between transactions and spans, allowing for stricter typing and only exposing the proper attributes and functions for each type.
Add TransactionContext & SpanContext
The Go SDK lacks abstractions for the context, making it weird to compose transaction/span options. This will also make distributed tracing more robust, as we can properly propagate the parent context during transaction/span creation.
Add getters/setters for all exposed Transaction/Span attributes
This will allow us to make breaking changes to the core data structures more easily.
Remove StartSpan not needed
This method will be entirely replaced by
StartTransaction
and follows the unified API.Remove SpanOptions
Replaced
TransactionContext/SpanContext
Move Transaction name to the Transaction context
Currently, the transaction name is set on the scope, making it cumbersome to work with it in concurrent environments.
Move all integrations into their own submodules
The sentry-otel module will be the first attempt to solve this issue, leading the way for other integrations to follow.
Performance tracing out of the box
We currently only offer performance tracing for
net/http
and should expand this to all integrations by default.Add gRPC integration
available in OTel
gRPC is widely used in Go, so the SDK should ship with a default integration.
Add Fiber support
Fiber is one of Go's biggest frameworks, so the SDK ship with a default integration.
(Stretch goal) Add Buffalo support
A framework that is closer to other languages' frameworks like Ruby on Rails or Laravel.
(Stretch goal) Add support for more logging libraries
TBD
SDK usage in Go routines
The current APIs exposed are insufficient and hard to understand when working with Go routines. We should make it easier to clone and set the Hub/Scope on the context when using Go routines.
Investigate: SDK configuration via functional options
With the current approach (passing
ClientOptions
tosentry.Init
), we can't always say if the configuration option was passed or not (e.g., Golang will initialize all boolean flags tofalse
, if they're not set totrue
inClientOptions
). Functional options (resource1, resource2) is a pattern that is sometimes used to handle cases like this.Repanic
which isfalse
by default.Misc
captureExcpetion
tocaptureError
captureMethods()
should not return anEventID
Road to Performance and OTEL
Performance feature Parity
Misc:
The text was updated successfully, but these errors were encountered: