[ https://issues.apache.org/jira/browse/THRIFT-4685?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17246349#comment-17246349 ]
Fedor Korotkiy commented on THRIFT-4685: ---------------------------------------- I think it is necessary to explain original problem with thrift in go ecosystem. The issue is related to sem-ver, but it is *not the same* issue. Every go library is uniquely identified by it's import path. You can't link two libraries with the same import path, into a single binary. Current go library for thrift is located at github.com/apache/thrift/lib/go/thrift. Over the years, many other popular go projects started depending on github.com/apache/thrift/lib/go/thrift. For example: - github.com/xitongsys/parquet-go currently depends on thrift v0.13.1 - github.com/jaegertracing/jaeger used thrift 0.9.3 [until recently|https://github.com/jaegertracing/jaeger/pull/2311/files] - github.com/uber/tchannel-go still uses old version https://github.com/uber/tchannel-go/issues/781 When library uses thrift directly, api breakages don't cause any trouble. Libraries pin dependency to particular version, and update at their own pace. *The problem* arises in project, that use multiple libraries, that are in turn use thrift internally. That is classical diamond dependency problem, I'm sure you are all familiar with. Go has a solution for that. Libraries should change import path, when changing API in incompatible ways. Multiple thrift versions can co-exist in the same binary without problems, provided that their import paths don't collide. Each library consumer can gradually update to new version, without coordination with others. After last consumer is updated, old library is no longer needed, and is removed from build. You may change versioning scheme for the whole project, but that is *not required*. In case of thrift, it is better to update go import path manually. That is a preferred way, because you don't want to change it every release. You should update it, only when incompatible change is made to go api. I hope that clarifies the situation. > Support the new golang modules (1.11 or later) > ---------------------------------------------- > > Key: THRIFT-4685 > URL: https://issues.apache.org/jira/browse/THRIFT-4685 > Project: Thrift > Issue Type: Improvement > Components: Go - Library > Affects Versions: 0.12.0 > Environment: golang 1.11 or later > Reporter: James E. King III > Assignee: Duru Can Celasun > Priority: Minor > > Go added new module support in 1.11, see: > https://github.com/golang/go/wiki/Modules > We should move towards it. -- This message was sent by Atlassian Jira (v8.3.4#803005)