Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

proposal: Go 1.15 to be a "Go Green" release #36859

Closed
mibes opened this issue Jan 29, 2020 · 5 comments
Closed

proposal: Go 1.15 to be a "Go Green" release #36859

mibes opened this issue Jan 29, 2020 · 5 comments

Comments

@mibes
Copy link

mibes commented Jan 29, 2020

With thanks to @griesemer for laying out the proposals for Go 1.15 in his recent blog post.

Since "...we concluded that it is better to hold off with major changes this time...", maybe we can use this release to put the focus on any optimisations and changes that would help our worldwide community to reduce their carbon (CO2) footprint:

  • Using less memory, means less VirtualMachines are needed.
  • Using less CPU cycles, means less power and cooling are needed.
  • Smaller binaries use less disk space, which means fewer storage is needed.

A so called "Go Green" release.

These changes are likely part of an ongoing effort to improve Go one version to the next.

The proposal for 1.15 is to prioritise some of these issues over others, and to highlight the improvements made in this area. Maybe put some nice marketing around it, to increase the awareness of Go in the wider development community.

@agnivade
Copy link
Contributor

Hello @mibes - do you have any specific proposal in an area where you want it to be optimized ? If so, it would be good to have that mentioned here. Otherwise, I think this is better discussed in other forums like golang-dev since there isn't any concrete action item.

@mibes
Copy link
Author

mibes commented Jan 29, 2020

There are currently 419 open issues tagged with the "Performance" label. Maybe some of them can be (re)evaluated in light of the initiative and prioritised accordingly.

@mvdan
Copy link
Member

mvdan commented Jan 29, 2020

There are a lot of priorities at play in any one Go release, and the Go team already have their hands full working on important stuff (modules, language features, generics, gopls, the thousands of bugs to be squashed...).

Asking them to shift considerable resources to something else will ultimately mean that existing important stuff won't be done. For example, would you stop work on modules for a release, just to try to make binaries a bit smaller?

I agree with your goals there, and they are being worked on - but on a continuous basis over many releases. They will only get a significant focus for one release if someone volunteers considerable amounts of hours over many weeks. So, unless such a team of volunteer appears, I don't think there's anything actionable here.

@beoran
Copy link

beoran commented Jan 30, 2020

To go further on what @mvdan said, it is a fundamental principle of justice that the fruits of all labor belong to the workers themselves. The Go language team, who have worked incessantly on Go for the last 10 years are the rightful owners of Go. They have to work on many important issues, and, as they rightfully own Go, it is up to them to decide on their own priorities, and whether or not issues will be accepted or rejected.

However, Go is free and open source. If you would like more performance optimizations than the Go team can provide for, then you can implement them yourself, or find other people who are able and willing to implement them. So I would encourage you to try to build that team of volunteers for this job. Or, even better, why not start a fund drive and pay people for optimizing Go? That's likely going to be the most efficient way to get people involved.

@cagedmantis cagedmantis changed the title Proposal for Go 1.15 to be a "Go Green" release proposal: Go 1.15 to be a "Go Green" release Feb 3, 2020
@gopherbot gopherbot added this to the Proposal milestone Feb 3, 2020
@rsc
Copy link
Contributor

rsc commented Feb 26, 2020

This proposal has no concrete actionable suggestions. We work every release to make Go use less memory, less CPU, and less disk space. In some releases other concerns like functionality or correctness are judged more important than those. But for the most part Go does get more efficient with each release.

The most actionable suggestion would be to "put some nice marketing" around performance improvements as good for the environment. That's not the kind of gimmick we typically do.

It is not even clear to me that using less memory, less CPU, and less disk space necessarily translates into less environmental impact. Perhaps if those go down people just write programs that hold more data, do more computation, and have more code in the binary. Certainly that's the trend over time. It's probably more effective to make sure that the CPU etc that you do pay for is carbon-neutral. If you are interested in that topic, see https://cloud.google.com/sustainability for what Google does, both for itself and Google Cloud usage.

I'm going to close this issue as not actionable, but thanks for raising it. I agree that it's important to consider what role we can play, and it's nice to think that our never-ending efficiency work serves a purpose of making computing greener. Here's hoping (and remembering that carbon-neutral energy is also important).

@rsc rsc closed this as completed Feb 26, 2020
@golang golang locked and limited conversation to collaborators Feb 25, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

6 participants