Work on the next major version of Google’s language has already begun with around 120 open proposals candidate to be reviewed for Go 2, writes Google engineer Robert Griesemer. Google also intends to make the Go 2 process much more community-driven.
The existing proposals are mostly the results of the process Google used to manage Go evolution. In short, whenever a proposal was submitted that did not satisfy Go 1 compatibility guarantees, the proposal was postponed and labeled Go 2. Now, the Go team has started categorizing the proposals and rejecting all those that appear out of the scope of Go, or are not actionable. The proposals that will survive this review process are the ones that have a chance to influence the language and its standard library.
As already reported by InfoQ, two major themes for Go 2 are generics and better error handling. The rest of possible new features, though, will have to balance in that there are already millions of Go programmers and large code bases. This makes the process that will lead to Go 2 significantly different than the process that led to Go 1.0. The risk here, according to the Go team, is splitting up the community if the new language does not arise from an inclusive process where each change is carefully chosen.
To prevent this risk, Google is implementing a new proposal evaluation process. Until now, all change proposals were evaluated by a committee of senior Go team members. From now on, the Go team will submit the proposals they deem interesting to the community. Based on community feedback, the Go team will then decide what changes to implement. Within the bounds of Go three-month development cycle, both the Go team and the community at large will experiment with the new features and provide additional feedback, which will inform the final decision whether to ship the new feature or not.
Additionally, the process that will lead to Go 2 will be an incremental process, where features are added to Go 1 releases. In fact, the Go team has already selected a few Go 2 proposals that are candidate for inclusion in Go 1.13, the next planned release for Go. Those are adding support for Unicode identifiers, adding binary integer literals, and improving shift expressions.
Now it’s the time for the community to provide their feedback. If they pass this screening, the features listed above should make it into the language by Feb 1, 2019. From that moment the Go team and the community will have a chance to experiment with the new features and decide whether to keep or abandon them.