discussion: clarify Go support policy for secondary ports #53060
Replies: 10 comments 27 replies
-
Port status (WIKI?) includes:
|
Beta Was this translation helpful? Give feedback.
This comment has been hidden.
This comment has been hidden.
-
It is totally understandable for the Go team to reduce their workload and speed up their development process. However, if the "developers" refer to the developers on the Go team, I would argue this proposal may transfer too many responsibilities to the secondary port maintainers and requires too much from the secondary port maintainers.
The responsibility of maintaining a port is not as simple as what is proposed here. Based on some recent stories from @mengzhuo regarding the porting experience of regabi, maintaining a port requires a port maintainer to understand the current development process, plan, and get familiar with the latest design requirements. However, these tasks are generally not easy and strictly bound to the Go team's schedule, and maintainers may only have little impact on them. Most port maintainers are doing the porting work as a hobby in their spare time. Understand the status is already a lot of investments. This is incomparable to the Go team, which is hired dedicatedly for the development, whereas the daily progress of a port maintainer is not tremendous. Furthermore, port maintainers have to comply with and resolve the conflicts in the Go team's development process. With the current high review requirements, if the first-class port grows too fast, "encourage but not required" may prevent other ports stop to working because the work that has been done in a secondary port may simply conflict with the latest tree.
Therefore, this goal may be too strong. I think a possible relaxation maybe: In general, developers on the Go team should make their code work on a secondary port if a corresponding builder is online and functioning. If a builder is offline or broken for an entire development or freeze cycle (3 months), then it is not required to make their code work on that port, and the port may be removed in the future. There may be exceptions: Developers should communicate with the current port maintainers and find consensus regarding if it is reasonable for a chance to work for that port (such as skipping a test on a secondary port builder). |
Beta Was this translation helpful? Give feedback.
-
How does the broken port state interact with the freeze? If a port is broken at the beginning of the freeze, is a freeze exception going to be always approved for unbreaking it, or is it going to be broken in that release? |
Beta Was this translation helpful? Give feedback.
-
In the past it has been common to enable new features under the control of GOEXPERIMENT or something similar, allowing time for secondary ports to do their work after the primaries have completed and are merged. Hopefully any major new features that require significant work to enable on secondary ports can continue to be done in this way where possible. The whole concept of broken ports is very concerning. This means it is possible for someone to make a change that breaks a secondary port right before the freeze, which could take significant time to fix. Then it would be labeled as a "broken port" and removed from the release (not sure what that exactly means -- somehow disabled completely? code completely removed? Sounds quite drastic.)
The ppc64le/ppc64 builders are maintained by the Go team and we don't have access to those machines. There have been several cases where there have been failures on the builders that we can't reproduce on systems here which has made it hard to resolve those issues. Are there any plans to change the maintainers of the builders for some cases or will they continue to be maintained by the Go team? As far as your comments concerning publishing binaries of secondary ports, if that is changed hopefully we could get enough lead time on this so we could set that up, especially if the plan is to do this for Go 1.19. Will the old binaries also be removed as well? |
Beta Was this translation helpful? Give feedback.
-
I suggest that we reverse the priority of those — prefer to open a GitHub issue over sending an email. A GitHub issue makes the problem easier to search (for someone searching duplicates for a bug they've encountered, triaging a test failure, or looking for a fix to contribute) and makes the relevant owners easier to identify (because GitHub will autocomplete the relevant @golang subteam), and in general we expect that Go maintainers will be active in GitHub issue discussions anyway. |
Beta Was this translation helpful? Give feedback.
-
I asked for feedback from our testers and internal users and was told this is a common way to retrieve the binary:
|
Beta Was this translation helpful? Give feedback.
-
I've updated For reference, those builders are:
At this time, I would consider I would also consider ( |
Beta Was this translation helpful? Give feedback.
-
If we could get on to try and reproduce the problems that would be sufficient. |
Beta Was this translation helpful? Give feedback.
-
I've opened a proposal issue for this at #53383. Closing this discussion. |
Beta Was this translation helpful? Give feedback.
-
This is now a proposal at #53383.
This discussion is intended to become a proposal after considering comments.
proposal: clarify Go support policy for secondary ports
Background
Go supports a number of different GOOS/GOARCH targets. We've defined a policy for adding new ports, described at https://go.dev/wiki/PortingPolicy.
Ports are divided into first class ports and secondary ports. The current first class ports are:
The current secondary ports are:
The core Go team maintains the first class ports. It is less clear how the secondary ports are handled.
The existing porting policy says:
However, in practice we do not follow those rules.
The effect is that the work required to maintain secondary ports falls on people who are not familiar with those ports. This was not the goal of the porting policy, and it tends to slow down overall development of the core Go systems and discourages the adoption of new secondary ports.
We propose both loosening and tightening the current porting policy to address these concerns.
Proposal
if runtime.GOOS == "mygoos"
.make.bash
orgo tool dist
is invoked with a new option-force
.Discussion
This is not intended to be a big change to the current process. However, it is intended to be a change. It is intended to take some of the porting load off of the core Go team, while making it easier for port maintainers to make changes. It is intended to make it easier to add new ports to the tree.
In the long run it would be good to support out of tree ports. However, that requires a bunch of technical work, and there is no design for it.
Beta Was this translation helpful? Give feedback.
All reactions