Open riandyrn opened 5 months ago
Some may ask how I get the version mapping for the semconv, otel, and Go versions.
I get it from summarizing the repo of the otelchi
sister library, which is otelmux
.
Here is the summary for it:
go version | otelmux version (max) | semconv version (max) | otel version (max) |
---|---|---|---|
1.16 | 1.7.0 | 1.10.0 (source) | 1.7.0 (source) |
1.17 | 1.10.0 | 1.12.0 (source) | 1.10.0 (source) |
1.18 | 1.15.0 | 1.17.0 (source) | 1.14.0 (source) |
1.19 | 1.20.0 | 1.17.0 (source) | 1.19.0 (source) |
1.20 | 1.24.0 | 1.20.0 (source) | 1.24.0 (source) |
At first, we thought that the OpenTelemetry project would eventually slow its development pace and become more backward compatible like many Go libraries.
We intentionally waited for this moment to continue
otelchi
development. However, we were wrong; instead of slowing down, its evolution is becoming much faster. This makesotelchi
quickly obsolete in the OpenTelemetry ecosystem. 😅On the other hand, we cannot just make
otelchi
comply with the latest version of the OpenTelemetry Go library because we need to set the minimum Go requirement to at least1.20
, which will make this library inaccessible for many Go versions (1.16 - 1.19
).Yet, people usually start to implement tracing when their system is already proven to be stable. So changing the minimum Go version of the system to use the latest version of the
otelchi
could lead to many unseen (and possibly catastrophic) consequences.With these constraints in mind, we would like to share the new development strategy for this library:
So, first, we will develop version
0.6.0
by adjusting theotelchi
implementation with the versions ofsemconv
andotel
shown in the table. After version0.6.0
seems stable, we will develop0.7.0
. This cycle repeats until0.10.0
.So what happens if there is a bug in version
0.6.0
? We will patch it and release version0.6.1
. Then, we will merge this patch into all versions after0.6.1
whenever applicable.After these versions are stable enough (no bugs), we will start following the compatibility policy chosen by OpenTelemetry, which is mentioned here.
Update:
March 24, 2024 - 16:05 UTC+7
=> When I was working with #29, I discovered that it is possible to useotel v1.10.0
&semconv v1.12.0
without setting the go version ingo.mod
togo 1.17
. This is why I decided thatotelchi v0.6.0
will covergo 1.15-1.17
.April 29, 2024 - 09:50 UTC+7
=> In https://github.com/riandyrn/otelchi/pull/41, @ProtozoaJr found that by setting minimum go version to1.19
,otelchi
can use otelv1.24.0
& semconvv1.20.0
.