-
Notifications
You must be signed in to change notification settings - Fork 14.5k
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
Go workspaces blog post #45358
Go workspaces blog post #45358
Conversation
✅ Pull request preview available for checkingBuilt without sensitive environment variables
To edit notification comments on pull requests, go to your Netlify site configuration. |
How about making this an article on https://k8s.dev/blog/ |
Instead of this? I don't know the mechanics of the blog-publishing pipeline :) |
Keep this PR, and use it to make a mirror copy of the canonical article. |
I hope to get this documented (by which I specifically mean: I hope to coach someone else to write it up). |
I have a very first draft up. I don't know how intersting it will be to non-contributors, but feedback is very welcome. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've done a sweep of this for grammar/punctuation and did some suggesting for that, I hope that's alright in terms of review etiquette. I've also added a couple of comments, so feel free to address those when you get the chance.
@natalisucks What I could do most with is a high-level feeling - is it on the right track? Is it vaguely interesting? Is it too long or too short? Are there "beats" I need to hit that are missing? Do I need to throw it away and start over?
I think this article does really well to spell out how you/the project has dealt with some technical debt and that even big projects like Kubernetes can benefit from often "thankless" work. My one ask would be to sort of weave in a call to action for folks to get more involved, since we always need some extra hands. You definitely don't need to throw this away or start over 😸
/hold pending assignment of publication date |
--- | ||
layout: blog | ||
title: 'Using Go workspaces in Kubernetes' | ||
date: 2024-03-19 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@thockin: When would you like this published? Is there a particular time during the day that is good for publication?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No particular.
Re-pushed with all comments addressed (I think) |
@sftim Regarding publication date, I'll check in with our Release Comms lead on how she'd like to start organizing the feature blogs for this release and get back to you. As a note, we have nine feature blogs in the editing pipeline currently, and are in the midst of writing the release blog as well. This feature blog has had technical review (aside from the author itself), and now Release Comms review. If we're comfortable to call this ready to publish (barring the decided date) @sftim, let me know, or feel free to do another review as you wish. /lgtm |
LGTM label has been added. Git tree hash: 8378b185bf7ee4fbedbe797927b63c5bb9516754
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll make a branch of https://github.com/kubernetes/contributor-site with my suggestions already in, and I'll see about getting that reviewed.
deal with a certain amount of constant low-grade pain. Our custom `staging` | ||
mechanism let us bend the rules of Go; it was a little clunky, but when it | ||
worked (which was most of the time) it worked pretty well. When it failed, the | ||
errors were inscrutable and un-Googleable -- nobody else was doing the silly |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(nit) I'd use a real em dash:
errors were inscrutable and un-Googleable -- nobody else was doing the silly | |
errors were inscrutable and un-Googleable — nobody else was doing the silly |
mechanism let us bend the rules of Go; it was a little clunky, but when it | ||
worked (which was most of the time) it worked pretty well. When it failed, the | ||
errors were inscrutable and un-Googleable -- nobody else was doing the silly | ||
things we were doing. Usually the fix was to re-run one or more of the update-* |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(nit
things we were doing. Usually the fix was to re-run one or more of the update-* | |
things we were doing. Usually the fix was to re-run one or more of the `update-*` |
1) Most of the time it only hurt a little (punctuated with short moments of | ||
more acute pain). | ||
2) Kubernetes was still growing in popularity - we all had other, more urgent | ||
things to work on. | ||
3) The fix was not obvious, and whatever we came up with was going to be both | ||
hard and tedious. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, a request: please use a Markdown ordered list here.
|
||
Along the way, the Go language team saw what we (and others) were doing and | ||
didn't love it. They designed a new way of stitching multiple modules together | ||
into a new "workspace" concept. Once enrolled in a workspace, Go tools had |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
into a new "workspace" concept. Once enrolled in a workspace, Go tools had | |
into a new _workspace_ concept. Once enrolled in a workspace, Go tools had |
didn't love it. They designed a new way of stitching multiple modules together | ||
into a new "workspace" concept. Once enrolled in a workspace, Go tools had | ||
enough information to work in any directory structure and across modules, | ||
without GOPATH or symlinks or other dirty tricks. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(nit)
without GOPATH or symlinks or other dirty tricks. | |
without `GOPATH` or symlinks or other dirty tricks. |
1) Those parsing libraries didn't understand modules or workspaces. | ||
2) GOPATH allowed us to pretend that Go "package paths" and directories on | ||
disk were interchangeable in trivial ways. They are not. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
1) Those parsing libraries didn't understand modules or workspaces. | |
2) GOPATH allowed us to pretend that Go "package paths" and directories on | |
disk were interchangeable in trivial ways. They are not. | |
1. Those parsing libraries didn't understand modules or workspaces. | |
2. `GOPATH` allowed us to pretend that Go _package paths_ and directories on | |
disk were interchangeable in trivial ways. They are not. |
|
||
One unfortunate result of this work was that I had to break compatibility. The | ||
gengo library simply did not have enough information to process packages | ||
outside of GOPATH. After discussion with gengo and Kubernetes maintainers, we |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(nit)
outside of GOPATH. After discussion with gengo and Kubernetes maintainers, we | |
outside of `GOPATH`. After discussion with gengo and Kubernetes maintainers, we |
Co-Authored-By: Tim Bannister <[email protected]>
This mirrors kubernetes/contributor-site#484 /lgtm |
LGTM label has been added. Git tree hash: fa3cb7f053864d2b54fa44fa0b9d1fcd1c9b7294
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: sftim The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
D'oh - forgot to unhold this one. |
A blog post on Go workspaces in k/k