-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Description
Expected Behavior
Temporal Server should not be depending on deprecated libraries.
Actual Behavior
AWS SDK for Go v1
- GitHub repo archived on July 31, 2025. Banner reads: "This repository was archived by the owner on Jul 31, 2025" and "This SDK has reached end-of-support... It will not receive further updates."
- Official AWS blog announcement "Announcing end-of-support for AWS SDK for Go (v1) effective July 31, 2025". Maintenance mode began July 31, 2024; end-of-support July 31, 2025.
- AWS SDK version lifecycle matrix shows the v1 Go SDK status
olivere/elastic
- GitHub repo - header displays: "Deprecated: Use the official Elasticsearch client for Go at https://github.com/elastic/go-elasticsearch"
- Issue #1533 - Oliver Eilhard's announcement (July 2022): "Elastic v8 won't happen. I will polish v7 if I have the time and energy, but v8 won't happen."
Steps to Reproduce the Problem
I couldn't decide between a bug and a feature. I'm went the bug direction because these are WAY out of date. So... reproduction steps are to use your eyes?
Specifications
- Version: latest
- Platform: all
Recommendations
- AWS is easy, upgrade to v2
- olivere/elastic is a little more interesting, but probably using the elastic/go-elasticsearch library is the way to go. A combination of AWS+ES would satisfy the original intent of olivere/elastic.
Other deprecated Libs
I was looking at this from a very specific direction, but @claude and I found some other dependencies it would be worth processing:
Tier 1: Archived/Deprecated Direct Dependencies
These libraries are explicitly archived or deprecated and should be migrated.
github.com/pkg/errors v0.9.1 -> stdlib errors/fmt
- Status: Archived by owner (Dec 2021). Read-only, no patches.
- Last release: v0.9.1 (2020)
- Replacement:
fmt.Errorf("context: %w", err)witherrors.Is()/errors.As()(stdlib since Go 1.13) - Effort: High -- likely widespread usage across the codebase.
- Ref: https://github.com/pkg/errors
github.com/mitchellh/mapstructure v1.5.0 -> go-viper/mapstructure/v2
- Status: Archived by Mitchell Hashimoto (Jul 2024). Read-only.
- Replacement:
github.com/go-viper/mapstructure/v2-- the blessed fork maintained by the Viper project. API-compatible. Areplacedirective can be used as an interim step. - Effort: Low-Medium.
- Ref: https://github.com/mitchellh/mapstructure
gopkg.in/validator.v2 v2.0.1 -> go-playground/validator/v10
- Status: Unmaintained. No commits since Apr 2022, open PRs ignored.
- Replacement:
github.com/go-playground/validator/v10-- the de facto standard for Go struct validation (23,000+ importers). - Effort: Medium -- API differences between the two libraries.
- Ref: https://pkg.go.dev/gopkg.in/validator.v2
Tier 2: Major Version Behind (Direct Dependencies)
These dependencies have newer major versions available. The current versions receive security patches at best.
github.com/golang-jwt/jwt/v4 v4.5.2 -> v5
- Status: v4 receives security patches only. All active development is on v5.
- Key changes: Reworked Claims interface,
StandardClaimsremoved (useRegisteredClaims), redesigned error handling. - Migration guide: https://github.com/golang-jwt/jwt/blob/main/MIGRATION_GUIDE.md
- Effort: Medium.
github.com/urfave/cli v1.22.16 -> v3
- Status: v1 is in security-only maintenance mode. v3 is stable (v3.6.1 released Nov 2025).
- Note: The project also uses
urfave/cli/v2. Consider consolidating directly to v3. - Effort: Medium-High -- significant API changes between v1 and v3.
- Ref: https://cli.urfave.org/v3/getting-started/
github.com/gocql/gocql v1.7.0 -> apache/cassandra-gocql-driver/v2
- Status: The original
gocql/gocqlhas been superseded by the Apache Foundation fork. v2.0.0 was released Oct 2025. - Key changes: New import path, dropped protocol v1/v2 support.
- Upgrade guide: https://github.com/apache/cassandra-gocql-driver/blob/trunk/UPGRADE_GUIDE.md
- Effort: Medium-High.
github.com/sony/gobreaker v1.0.0 -> v2
- Status: v2 is actively maintained (v2.4.0, Jan 2026) with generics support and new features (distributed circuit breaker, Redis store). v1 receives no development.
- Effort: Low.
- Ref: https://github.com/sony/gobreaker
github.com/olekukonko/tablewriter v0.0.5 -> v1.1.3+
- Status: v0.0.5 is labeled "legacy" on pkg.go.dev. v1.1.3 is current.
- Key changes:
SetHeader()->Header(),AppendBulk()->Bulk(), constructor uses functional options. - Effort: Medium.
- Ref: https://github.com/olekukonko/tablewriter
github.com/lib/pq v1.10.9 -> remove (pgx already in use)
- Status: Maintenance mode. README says not actively developed. Recommends
jackc/pgx. - Note:
jackc/pgx/v5is already a direct dependency.lib/pqusage can likely be fully migrated to pgx. - Existing issue: Consider switch to jackc/pgx from lib/pq #1775
- Effort: Medium.
github.com/gorilla/mux v1.8.1 -> net/http or go-chi/chi
- Status: Was archived Dec 2022, unarchived mid-2024 under new maintainers, but activity remains minimal. No releases since v1.8.1 (Oct 2023).
- Replacement: Go 1.22+
net/http.ServeMuxnow supports method-based routing and path parameters, covering most gorilla/mux use cases. - Effort: Medium.
github.com/cactus/go-statsd-client/v5 -> v6
- Status: v6.0.0 released Sep 2025. v5 is not deprecated but is behind.
- Effort: Low.
- Ref: https://github.com/cactus/go-statsd-client
Tier 3: Archived/Deprecated Indirect Dependencies
These are transitive dependencies. They can't be directly fixed but should be tracked for awareness and upstream pressure.
| Library | Status | Replacement | Likely Source |
|---|---|---|---|
github.com/gogo/protobuf v1.3.2 |
Deprecated (marked in repo title), last release Jan 2021 | google.golang.org/protobuf |
ringpop-go, tchannel-go |
github.com/golang/mock v1.6.0 |
Archived Jun 2023 | go.uber.org/mock (already a direct dep) |
Transitive |
github.com/opentracing/opentracing-go v1.2.0 |
Archived May 2023, officially deprecated | go.opentelemetry.io/otel (already used) |
ringpop-go |
github.com/json-iterator/go v1.1.12 |
Archived Dec 2025 | encoding/json (stdlib) |
Kubernetes client libs, Uber packages |
github.com/facebookgo/clock |
Archived Mar 2019 | jonboulle/clockwork |
ringpop-go |
github.com/benbjohnson/clock v1.3.5 |
Archived May 2023 | jonboulle/clockwork |
ringpop-go or fx |
github.com/rcrowley/go-metrics |
Archived Apr 2025 | OpenTelemetry or Prometheus client | gocql |
github.com/uber-common/bark v1.3.0 |
Unmaintained since Mar 2020 | go.uber.org/zap (already used) |
ringpop-go, tchannel-go |
github.com/hailocab/go-hostpool |
Unmaintained since Jan 2016 | bitly/go-hostpool |
gocql |
github.com/sirupsen/logrus v1.9.3 |
Maintenance mode per README | log/slog or go.uber.org/zap |
Multiple transitive |
github.com/robfig/cron v1.2.0 |
Unmaintained since Jan 2021 | robfig/cron/v3 (already a direct dep) |
ringpop-go |
Note: Many of these indirect dependencies are pulled in by temporalio/ringpop-go and temporalio/tchannel-go. As Temporal phases out Ringpop (per its README: "This project is no longer under active development"), several of these transitive issues will resolve naturally.