cmd/go:遥测数据不应该在$XDG_CONFIG_HOME中,

ttcibm8c  于 4个月前  发布在  Go
关注(0)|答案(5)|浏览(74)

Go版本

go版本 go1.23.0 linux/amd64

在你的模块/工作区中的go env的输出:

GO111MODULE=''
GOARCH='amd64'
GOBIN=''
GOCACHE='/home/andrew/.cache/go-build'
GOENV='/home/andrew/.config/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFLAGS='-modcacherw'
GOHOSTARCH='amd64'
GOHOSTOS='linux'
GOINSECURE=''
GOMODCACHE='/home/andrew/.go/pkg/mod'
GONOPROXY=''
GONOSUMDB=''
GOOS='linux'
GOPATH='/home/andrew/.go'
GOPRIVATE=''
GOPROXY='https://proxy.golang.org,direct'
GOROOT='/opt/golang/go1.23.0'
GOSUMDB='sum.golang.org'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/opt/golang/go1.23.0/pkg/tool/linux_amd64'
GOVCS=''
GOVERSION='go1.23.0'
GODEBUG=''
GOTELEMETRY='off'
GOTELEMETRYDIR='/home/andrew/.config/go/telemetry'
GCCGO='gccgo'
GOAMD64='v1'
AR='ar'
CC='gcc'
CXX='g++'
CGO_ENABLED='0'
GOMOD='/dev/null'
GOWORK=''
CGO_CFLAGS='-O2 -g'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
PKG_CONFIG='pkg-config'
GOGCCFLAGS='-fPIC -m64 -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build2289507740=/tmp/go-build -gno-record-gcc-switches'

你做了什么?

  1. 升级到Go 1.23.0
  2. 使用Go几天

你看到了什么发生?

我的 $XDG_CONFIG_HOME/go/telemetry 目录( $HOME/.config/go/telemetry )现在充满了数据文件,违反了 XDG Base Directory Specification ,该配置保留了 $XDG_CONFIG_HOME

你期望看到什么?

我期望遥测数据存储在 $XDG_STATE_HOME 中。

wlzqhblo

wlzqhblo1#

相关问题和文档

(如果觉得有帮助或无帮助,请给表情投票;欢迎在 this discussion 提供更详细的反馈。)

aiqt4smr

aiqt4smr2#

CC @golang/telemetry

nnvyjq4y

nnvyjq4y3#

谢谢。我的理解是,os.UserConfigDir 之所以被选择,是因为它的便携性以及将所有遥测数据集中到一个地方。然而,我们可能可以在POSIX系统上使用更合适的目录。
顺便说一下,选择$XDG_STATE_HOME而不是$XDG_DATA_HOME的原因是,后者的数据不可移植,并且与特定的应用程序状态有关。如果是这样的话,那么$XDG_STATE_HOME可能最适合用于计数器文件和日志,而$XDG_DATA_HOME则最适合用于整合每周的JSON摘要(本地或上传的报告)。

u0njafvf

u0njafvf4#

$XDG_STATE_HOME 用于应用程序状态,而 $XDG_DATA_HOME 用于诸如字体或图标文件(在 /usr/share 中找到的那种东西)之类的事物,尽管许多应用程序将其状态放在那里,因为 $XDG_STATE_HOME 并不总是存在。因此,所有遥测数据,包括每周的 JSON 摘要,都属于 $XDG_STATE_HOME
有关背景信息,请参阅 https://lists.freedesktop.org/archives/xdg/2016-December/013803.htmlhttps://wiki.debian.org/XDGBaseDirectorySpecificationhttps://www.reddit.com/r/linux/comments/ny34vs/new_xdg_state_home_in_xdg_base_directory_spec/

8nuwlpux

8nuwlpux5#

我们会议讨论这个问题的注意事项:

  • 有人指出,XDG_STATE_HOME相对较新,来自2021年规范的0.8版本。因此,它可能在原始设计中没有被考虑。
  • 不幸的是,似乎我们不是唯一违规的人。在我的~/.config中搜索发现了许多应用程序的数据文件。尽管如此,如果可能的话,我们希望成为好公民。
  • 现在更改这个可能会带来相当大的干扰。例如,所有我们的文档和关于遥测数据的历史讨论都变得过时了,go env GOTELEMETRYDIR也是如此。
  • 能够将os.UserConfigDir作为数据存储位置的定义是一个优势。具有更复杂启发式的复杂性可能会损害我们文档的清晰度。
  • 粗略调查表明,Mac或Windows上没有类似的概念(例如这个Rust库)。
  • 我们还不确定是否有必要将更自然地配置的数据(例如modeweekends文件)与有状态的数据(计数器和报告)分开。实际上,将状态放在一个单独的目录中可能会更干净,这样clean操作就变得简单了。

所以,我目前的感受是,虽然XDG_STATE_HOME可能是Linux上更合适的目录,但现在做出这个改变的好处是否抵消了缺点还不清楚。如果有类似os.UserStateDir的东西,那么缺点就会大大减少,但是如果Windows(甚至Mac?)上没有好的对应物,这样的API是否有意义呢?

相关问题