# Proposing Changes to Go
## Introduction
The Go project's development process is design-driven.
Significant changes to the language, libraries, or tools
(which includes API changes in the main repo and all golang.org/x repos,
as well as command-line changes to the `go` command)
must be first discussed, and sometimes formally documented,
before they can be implemented.
This document describes the process for proposing, documenting, and
implementing changes to the Go project.
To learn more about Go's origins and development process, see the talks
[How Go Was Made](https://talks.golang.org/2015/how-go-was-made.slide),
[The Evolution of Go](https://talks.golang.org/2015/gophercon-goevolution.slide),
and [Go, Open Source, Community](https://blog.golang.org/open-source)
from GopherCon 2015.
## The Proposal Process
The proposal process is the process for reviewing a proposal and reaching
a decision about whether to accept or decline the proposal.
1. The proposal author [creates a brief issue](https://golang.org/issue/new) describing the proposal.\
Note: There is no need for a design document at this point.\
Note: A non-proposal issue can be turned into a proposal by simply adding the proposal label.\
Note: [Language changes](#language-changes) should follow a separate [template](go2-language-changes.md)
2. A discussion on the issue tracker aims to triage the proposal into one of three outcomes:
- Accept proposal, or
- decline proposal, or
- ask for a design doc.
If the proposal is accepted or declined, the process is done.
Otherwise the discussion is expected to identify concerns that
should be addressed in a more detailed design.
3. The proposal author writes a [design doc](#design-documents) to work out details of the proposed
design and address the concerns raised in the initial discussion.
4. Once comments and revisions on the design doc wind down, there is a final
discussion on the issue, to reach one of two outcomes:
- Accept proposal or
- decline proposal.
After the proposal is accepted or declined (whether after step 2 or step 4),
implementation work proceeds in the same way as any other contribution.
## Detail
### Goals
- Make sure that proposals get a proper, fair, timely, recorded evaluation with
a clear answer.
- Make past proposals easy to find, to avoid duplicated effort.
- If a design doc is needed, make sure contributors know how to write a good one.
### Definitions
- A **proposal** is a suggestion filed as a GitHub issue, identified by having
the Proposal label.
- A **design doc** is the expanded form of a proposal, written when the
proposal needs more careful explanation and consideration.
### Scope
The proposal process should be used for any notable change or addition to the
language, libraries and tools.
“Notable” includes (but is not limited to):
- API changes in the main repo and all golang.org/x repos.
- Command-line changes to the `go` command.
- Any visible behavior changes that need a [GODEBUG setting](https://go.dev/doc/godebug) for compatibility.
- Any other visible behavior changes in existing functionality.
- Adoption or use of new protocols, protocol versions, cryptographic algorithms, and the like,
even in an implementation.
Such changes are externally visible and require discussion and probably a GODEBUG setting.
Since proposals begin (and will often end) with the filing of an issue, even
small changes can go through the proposal process if appropriate.
Deciding what is appropriate is matter of judgment we will refine through
experience.
If in doubt, file a proposal.
There is a short list of changes that are typically not in scope for the proposal process:
- Making API changes in internal packages, since those APIs are not publicly visible.
- Making API or command-line changes in golang.org/x/build, since that is code to run the Go project, not for users to import and depend on.
- Adding new system call numbers or direct system call wrappers (`//sys` lines) in golang.org/x/sys.
- Adding new C-equivalent data structures to support those system calls.
Again, if in doubt, file a proposal.
### Compatibility
Programs written for Go version 1.x must continue to compile and work with
future versions of Go 1.
The [Go 1 compatibility document](https://golang.org/doc/go1compat) describes
the promise we have made to Go users for the future of Go 1.x.
Any proposed change must not break this promise.
### Language changes
In 2018 we started a Go 2 process during which we may change the
language, as described on [the Go
blog](https://blog.golang.org/go2-here-we-come).
Language changes should follow the proposal process described here.
As explained in the blog entry, language change proposals should
- address an important issue for many people,
- have minimal impact on everybody else, and
- come with a clear and well-understood solution.
Proposals should follow the [Go 2 template](go2-language-changes.md).
See the [Go 2 review minutes](https://golang.org/issue/33892)
and the [release notes](https://golang.org/doc/devel/release.html) for
examples of recent language changes.
### Design Documents
As noted above, some (but not all) proposals need to be elaborated in a design document.
- The design doc should be checked in to [the proposal repository](https://github.com/golang/proposal/) as `design/NNNN-shortname.md`,
where `NNNN` is the GitHub issue number and `shortname` is a short name
(a few dash-separated words at most).
Clone this repository with `git clone https://go.googlesource.com/proposal`
and follow the usual [Gerrit workflow for Go](https://golang.org/doc/contribute.html#Code_review).
- The design doc should follow [the template](design/TEMPLATE.md).
- The design doc should address any specific concerns raised during the initial discussion.
- It is expected that the design doc may go through multiple checked-in revisions.
New design doc authors may be paired with a design doc "shepherd" to help work on the doc.
- For ease of review with Gerrit, design documents should be wrapped around the
80 column mark.
[Each sentence should start on a new line](http://rhodesmill.org/brandon/2012/one-sentence-per-line/)
so that comments can be made accurately and the diff kept shorter.
- In Emacs, loading `fill.el` from this directory will make `fill-paragraph` format text this way.
- Comments on Gerrit CLs should be restricted to grammar, spelling,
or procedural errors related to the preparation of the proposal itself.
All other comments should be addressed to the related GitHub issue.
### Quick Start for Experienced Committers
Experienced committers who are certain that a design doc will be
required for a particular proposal
can skip steps 1 and 2 and include the design doc with the initial issue.
In the worst case, skipping these steps only leads to an unnecessary design doc.
### Proposal Review
A group of Go team members holds “proposal review meetings”
approximately weekly to review pending proposals.
The principal goal of the review meeting is to make sure that proposals
are receiving attention from the right people,
by cc'ing relevant developers, raising important questions,
pinging lapsed discussions, and generally trying to guide discussion
toward agreement about the outcome.
The discussion itself is expected to happen on the issue tracker,
so that anyone can take part.
The proposal review meetings also identify issues where
consensus has been reached and the process can be
advanced to the next step (by marking the proposal accepted
or declined or by asking for a design doc).
Minutes are posted to [golang.org/s/proposal-minutes](https://golang.org/s/proposal-minutes)
after the conclusion of the weekly meeting, so that anyone
interested in which proposals are under active consideration
can follow that issue.
Proposal issues are tracked in the
[Proposals project](https://github.com/orgs/golang/projects/17) on the Go issue tra
没有合适的资源?快使用搜索试试~ 我知道了~
Go 项目设计文档.zip
共272个文件
md:126个
png:123个
svg:5个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 117 浏览量
2024-12-02
19:12:48
上传
评论
收藏 5.46MB ZIP 举报
温馨提示
Go 项目设计文档提出修改建议介绍Go 项目的开发过程是设计驱动的。语言、库或工具的重大变更(包括主仓库和所有 golang.org/x 仓库中的 API 变更,以及命令的命令行变更go)必须先进行讨论,有时还需要正式记录,然后才能实施。本文档描述了提出、记录和实施 Go 项目变更的过程。要了解有关 Go 的起源和发展过程的更多信息,请参阅2015 年 GopherCon 上的演讲《 Go 的诞生》、 《Go 的演变》和《Go、开源、社区》 。提案流程提案流程是审查提案并决定是否接受或拒绝提案的过程。提案作者创建一个简短的问题来描述该提案。注意此时不需要设计文档。注意只需添加提案标签,即可将非提案问题转变为提案。注意语言更改应遵循单独的模板问题跟踪器上的讨论旨在将提案分类为以下三种结果之一接受提议,或拒绝提议,或索取设计文档。如果提案被接受或拒绝,流程就完成了。否则,讨论将确定在更详细的设计中应解决的问题。提案作者撰写设计文档来制定拟议设计的细节并解决初步讨论中提出的问题。一旦对设计文档的评论和修订结束,就会对该问题进行最后的讨
资源推荐
资源详情
资源评论
收起资源包目录
Go 项目设计文档.zip (272个子文件)
svg2png.bash 205B
svg2png.bash 205B
spinbit.cfg 184B
codereview.cfg 21B
convert 125B
fill.el 2KB
slicebench_test.go 6KB
impver.graffle 7KB
ssh.html 267KB
agent.html 36KB
knownhosts.html 18KB
LICENSE 1KB
43651-type-parameters.md 138KB
go2draft-contracts.md 91KB
56345-structured-logging.md 70KB
12914-monotonic.md 68KB
2013-12-type-params.md 62KB
6282-table-data.md 53KB
70257-memory-regions.md 49KB
60773-execution-tracer-overhaul.md 46KB
60078-loopvar.md 46KB
27935-unbounded-queue-package.md 46KB
go2draft-generics-overview.md 45KB
51082-godocfmt.md 43KB
44167-gc-pacer-redesign.md 40KB
gc-pacer-redesign.src.md 40KB
45713-workspace.md 40KB
draft-embed.md 39KB
17503-eliminate-rescan.md 37KB
51430-revamp-code-coverage.md 36KB
12750-localization.md 35KB
32437-try-builtin.md 34KB
35112-scaling-the-page-allocator.md 32KB
19308-number-literals.md 30KB
28221-go2-transitions.md 30KB
37112-unstable-runtime-metrics.md 30KB
25530-sumdb.md 29KB
2013-10-gen.md 29KB
24301-versioned-go.md 28KB
36460-lazy-module-loading.md 27KB
12166-subtests.md 26KB
18802-percpu-sharded.md 26KB
55022-pgo-implementation.md 25KB
40724-register-calling.md 25KB
2011-03-gen.md 25KB
draft-iofs.md 25KB
go2draft-error-handling.md 24KB
40276-go-install.md 24KB
24543-non-cooperative-preemption.md 23KB
48409-soft-memory-limit.md 23KB
2010-06-type-functions.md 23KB
draft-fuzzing.md 23KB
36606-64-bit-field-alignment.md 23KB
soft-memory-limit.src.md 23KB
generics-implementation-dictionaries-go1.18.md 23KB
14386-zip-package-archives.md 22KB
44309-user-configurable-memory-target.md 21KB
30333-smarter-scavenging.md 21KB
go2draft-error-values-overview.md 21KB
18130-type-alias.md 20KB
55022-pgo.md 20KB
13073-code-of-conduct.md 20KB
68723-crypto-ssh-v2.md 19KB
draft-gobuild.md 19KB
14313-benchmark-format.md 19KB
12800-sweep-free-alloc.md 19KB
19348-midstack-inlining.md 19KB
16339-alias-decls.md 19KB
27539-internal-abi.md 19KB
26903-simplify-mark-termination.md 18KB
2016-09-compile-time-functions.md 18KB
22080-dwarf-inlining.md 17KB
generics-implementation-dictionaries.md 17KB
57001-gotoolchain.md 17KB
34481-opencoded-defers.md 17KB
56986-godebug.md 16KB
README.md 15KB
go2draft-error-handling-overview.md 15KB
47916-parameterized-go-types.md 15KB
generics-implementation-gcshape.md 14KB
29934-error-values.md 14KB
14951-soft-heap-limit.md 14KB
43810-go-pmem.md 13KB
17505-concurrent-rescan.md 13KB
go2draft-error-printing.md 13KB
59960-heap-hugepage-util.md 12KB
68578-mutex-spinbit.md 12KB
go2draft-error-inspection.md 12KB
11502-securitypolicy.md 12KB
go13compiler.md 11KB
48815-custom-fuzz-input-types.md 11KB
13432-mobile-audio.md 11KB
12416-cgo-pointers.md 11KB
2981-go-test-json.md 10KB
go-generate.md 10KB
16085-conversions-ignore-tags.md 10KB
generics-implementation-stenciling.md 10KB
15292-generics.md 10KB
11970-decentralized-gc.md 10KB
6977-overlapping-interfaces.md 9KB
共 272 条
- 1
- 2
- 3
资源评论
徐浪老师
- 粉丝: 8288
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 洗衣机检测42-YOLO(v5至v9)、COCO、CreateML、Darknet、Paligemma、TFRecord、VOC数据集合集.rar
- Kaoshi.java
- 在 GitHub Actions 中使用 Redis.zip
- 数据库原理与应用-实训10-索引.doc
- exFAT格式与NTFS格式在Centos8.5系统中的依赖
- 系统管理数据库字典文档.doc
- 另一个用 Golang 编写的与 Redis 兼容的分布式容错键值数据库 .zip
- PostgreSQL12中pg-resetwal命令用于误删数据恢复的技术指南
- 汇川控制层选型表-PLC HMI PAC CNC
- PostgreSQL数据库内核分析-逻辑备份与恢复机制详解
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功