blog: we already have go 2 #5
Loading…
Reference in New Issue
No description provided.
Delete Branch "we-have-go-2"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Signed-off-by: Xe Iaso me@christine.website
http://100.78.40.86:3030/blog/we-have-go-2
84de1020a7
to3e61345805
3e61345805
toc5ff939007
@ -0,0 +615,4 @@
library that uses contexts to store [contextually relevant log
fields](https://pkg.go.dev/within.website/ln) as a way to make logs easier to
correlate between.
Arguably you could make the case that people are misusing the
delete this, use
<br>
First half of first editing pass
@ -0,0 +8,4 @@
- modules
---
I've been using Go since Go 1.4. Since I started using Go so long ago, I’ve
s/I started using Go so long ago/then/
s/I started using Go so long ago/then/
@ -0,0 +12,4 @@
seen the language evolve significantly. The Go I write today is roughly the same
Go as the Go I wrote back when I was still learning the language, but overall
it’s evolved and changed into something similar yet different feeling in
practice. Thinking back over the years, here are some of the biggest ticket
This doesn't make sense. Saying that it's rougly the same but has overall changed into something that feels different in practice doesn't mean much to me. This sentence could be removed completely.
Alternatively, it could be replaced with something like "syntactically/stylistically Go today is roughly the same, but the tooling and semantic additions make it feel much nicer to use."
@ -0,0 +27,4 @@
have gotten as lucky as I have as consistently as I have.
Releasing a "Go 2" has become a philosophical and political challenge due to the
forces that be. "Go 2" has kind of gotten the feeling of “this is never going to
I dare you to make a "Go 2 Considered Harmful" pun.
@ -0,0 +31,4 @@
happen, is it?” with how the political forces within and without the Go team are
functioning. They seem to have been incrementally releasing new features and
using version gating in `go.mod` to make it easier on people instead of a big
semver-breaking release.
define "semver-breaking"
According to semver, the only thing you need to increment a major version for is for the removal of public API features. For example, in Go making something that was previously valid code invalid code.
Until that happens, semver doesn't actually require naming it Go 2. In fact, naming it Go 2 would be a misstep in semver unless it has such a breaking change.
@ -0,0 +42,4 @@
design and I do not pretend to be one on TV. I am also not a member of the Go
team nor do I pretend to be one or see myself becoming one in the
future. <br /><br />If you are on the Go team and think that something I said
here was observably wrong, please [contact me](/contact) so I can correct it. I
observably, objectively, demonstrably.
This is probably not quite the right word for the connotation you wanted here.
@ -0,0 +48,4 @@
This is a look back at the huge progress that has been made since Go 1 released
and what I'd consider to be the headline features of Go 2. Most of this is a
whirlwind tour of over a half-decade of improvments to the Go compiler, toolchain
Combine these two sentences. Example
This is a whirlwind tour of the huge progress in improvement to the Go compiler, toolchain, and standard library, including what I'd consider to be the headline features of Go 2
@ -0,0 +59,4 @@
of either it being written in C or the design around all the tools it was
shelling out to, it wasn’t easy to cross compile Go programs. If you were
building windows programs on a Mac you needed to do a separate install of Go
from source with other targets enabled. This worked, it wasn’t the default
s/This worked, it wasn’t the default though/This worked, but it wasn't the default/
@ -0,0 +169,4 @@
they changed this to default to `~/go` (with an easy to use command to influence
the defaults without having to set an environment variable). I don't personally
understand the arguments people have for wanting to keep their home directory
"clean", but the arguments are valid regardless.</xeblog-conv>
perhaps this should be rephrased to "their preferences are valid regardless"
@ -0,0 +198,4 @@
off of GitHub is that when you import from a monorepo with a GOPATH in it, you
need to be sure to import the repository path and not the path used inside the
repository. This sounds weird but this is the difference between importing
`github.com/Xe/x/src/github.com/Xe/x/markov` and `github.com/Xe/x/markov`. This
for go noobs, you should rephrase just a little bit to make it clear which is which, for example "this means importing X rather than Y"
@ -0,0 +322,4 @@
Companies could run their own Go module proxy and then use that to provide
offline access to Go code fetched from the internet.
<xeblog-conv name="Mara" mood="hmm">Wait, couldn't this allow Google to see the
You didn't set up/foreshadow this connection well enough.
cryptographic checksumming alone doesn't mean phoning home, and you don't explain how that avoids shelling out to git, or what the go module proxy is. This shouldn't be a big explanation, just like one missing sentence or a couple transitional phrases.
@ -0,0 +404,4 @@
release a version `1.x.x` of a Go project to avoid the “v2 landmine”. The Go
team claims that the right bit of tooling can help ease the pain, but this
tooling never really made it out into the public. I bet it works great inside
google3 though!</xeblog-conv>
add something to indicate that google3 isn't a typo for people who've never heard of it, like backticks or something.
@ -0,0 +438,4 @@
Overall though, Go modules has been a net positive for the community and for
people wanting to create reliable software in Go. It’s just such a big semantic
break in how the toolchain works that I almost think it would have been easier
for the to accept if _that_ was Go 2. Especially since the semantic of how the
s/semantic/semantics/