name: Language Change Proposals description: Changes to the language labels: ["Proposal", "v2", "LanguageChange"] title: "proposal: Go 2: proposal title" body: - type: markdown attributes: value: | ## Our process for evaluating language changes can be found [here](https://go.googlesource.com/proposal/+/refs/heads/master#language-changes) - type: dropdown id: author-go-experience attributes: label: "Go Programming Experience" description: "Would you consider yourself a novice, intermediate, or experienced Go programmer?" options: - "Novice" - "Intermediate" - "Experienced" default: 1 - type: input id: author-other-languages-experience attributes: label: "Other Languages Experience" description: "What other languages do you have experience with?" placeholder: "Go, Python, JS, Rust" validations: required: false - type: checkboxes id: related-idea attributes: label: "Related Idea" options: - label: "Has this idea, or one like it, been proposed before?" - label: "Does this affect error handling?" - label: "Is this about generics?" - label: "Is this change backward compatible? Breaking the Go 1 compatibility guarantee is a large cost and requires a large benefit" - type: textarea id: related-proposals attributes: label: Has this idea, or one like it, been proposed before? description: If so, how does this proposal differ? placeholder: | Yes or No If yes, 1. Mention the related proposals 2. then describe how this proposal differs validations: required: true - type: textarea id: error-handling-proposal attributes: label: Does this affect error handling? description: If so, how does this differ from previous error handling proposals? placeholder: | Yes or No If yes, 1.how does this differ from previous error handling proposals? validations: required: true - type: textarea id: generics-proposal attributes: label: Is this about generics? description: If so, how does this relate to the accepted design and other generics proposals? placeholder: | Yes or No If yes, 1. how does this relate to the accepted design and other generics proposals? validations: required: true - type: textarea id: proposal attributes: label: "Proposal" description: "What is the proposed change? Who does this proposal help, and why? Please describe as precisely as possible the change to the language." validations: required: true - type: textarea id: language-spec-changes attributes: label: "Language Spec Changes" description: "What would change in the language spec?" validations: required: false - type: textarea id: informal-change attributes: label: "Informal Change" description: "Please also describe the change informally, as in a class teaching Go." validations: required: false - type: textarea id: go-backwards-compatiblity attributes: label: Is this change backward compatible? description: Breaking the Go 1 compatibility guarantee is a large cost and requires a large benefit. placeholder: | Yes or No If yes, 1. Show example code before and after the change. validations: required: true - type: textarea id: orthogonality attributes: label: "Orthogonality: How does this change interact or overlap with existing features?" description: "Is the goal of this change a performance improvement? If so, what quantifiable improvement should we expect? How would we measure it?" validations: required: false - type: textarea id: learning-curve attributes: label: "Would this change make Go easier or harder to learn, and why?" - type: textarea id: cost-description attributes: label: "Cost Description" description: "What is the cost of this proposal? (Every language change has a cost)" - type: input id: go-toolchain attributes: label: Changes to Go ToolChain description: "How many tools (such as vet, gopls, gofmt, goimports, etc.) would be affected? " validations: required: false - type: input id: perf-costs attributes: label: Performance Costs description: "What is the compile time cost? What is the run time cost? " validations: required: false - type: textarea id: prototype attributes: label: "Prototype" description: "Can you describe a possible implementation?" validations: required: false