The first version of the programming language Go was released more than six years ago on March 28, 2012. While the team has made many updates to the language since then, they have yet to declare a version 2.0.
As the team begins to figure out what the future of Go looks like, it has been informally calling this future Go 2. However, instead of being a major release, they say it will arrive in incremental steps.
“A major difference between Go 1 and Go 2 is who is going to influence the design and how decisions are made. Go 1 was a small team effort with modest outside influence; Go 2 will be much more community-driven. After almost 10 years of exposure, we have learned a lot about the language and libraries that we didn’t know in the beginning, and that was only possible through feedback from the Go community,” the Robert Griesemer, developer of the Go programming language, wrote in a post.
Currently, there are 120 open issues for Go 2 proposals. According to the team, each open issue contains a significant library or language change. While the team has been working up to clean up the issues, ideas from remaining proposals will influence Go 2’s libraries and languages, the team explained. “Two major themes have emerged early on: support for better error handling, and generics,” Griesemer wrote. “But what about the rest? We are constrained by the fact that we now have millions of Go programmers and a large body of Go code, and we need to bring it all along, lest we risk a split ecosystem. That means we cannot make many changes, and the changes we are going to make need to be chosen carefully.”
To address this, the team has implemented a new proposal evaluation process. It will include: proposal selection, proposal feedback, implementation, implementation of feedback and launch decision. The purpose of this is to collect feedback in two rounds to prevent feature creep and keep the language clean.
The proposal selection part of the evaluation process is mean to reduce the amount of Go 2 proposals. To be accepted, the proposal must address an important issue, have minimal impact and come with a clear solution, the team explained.
“We feel that this is a good plan that should serve us well but it is important to understand that this is only a starting point. As the process is used we will discover the ways in which it fails to work well and we will refine it as needed. The critical part is that until we use it in practice we won’t know how to improve it,” Griesemer wrote.
The next steps for Go 2 will include a 3-month development cycle from February to March 2019 and a repo freeze on May 1, 2019.