718 karma · joined September 5, 2017
For example, you may isolate a specific customer to bare metal so an escape doesn't compromise other customers. But within that bare metal, you may run containers because they make it easier to work with a read only root filesystem that's also trivial to upgrade. You can also add on user namespaces and seccomp in the container to minimize the risk of a container escape. And then the application may have its own sandbox that limits individual capabilities and which API calls it can run.
Every use case is different, and some layers may not be available depending on that use case. But rather than picking one point on the spectrum, one should pick a list of technologies that best solve each use case.
The other thing I've noticed lately is a strong push to get non-programming questions off StackOverflow, and on to other sites like SuperUser, ServerFault, DevOps, etc.
Unfortunately, what's left is so small I don't think there's enough to sustain a community. Without questions to answer, contributors providing the answers disappear, leaving the few questions there often unanswered.
And my favorite project for inspecting layers is Jon's https://oci.dag.dev/.
2. Your software needs to be distributed with a license that is compatible with your dependencies. You can't add restrictions if your dependencies forbid that.
3. No one will use your project if it doesn't have an OSI license. It's not worth the time and effort to read every license and get it approved for use by the legal team. If you're doing anything useful, someone will make an alternative with an OSI license and the community will ignore your project.
1. Work two jobs until you burn out.
2. Quit your paying job and hope you have you don't go broke.
3. Scale back or quit maintaining OSS projects.
I think companies, governments, and societies could do a better job funding this work. But since this is a "tragedy of the commons" problem, I'm not holding my breath that this will happen before the public experiences a lot more pain from failures.
In this case, the words from the LLM have no genuine appreciation, it's mocking or impersonating that appreciation. Do the people that created the prompt have some genuine appreciation for Rob Pike's work? Not directly, if they did they would have written it themselves.
It's not unlike when the CEO of a multi-national thanks all the employees for their hard work at boosting the company's profits, with a letter you know was sent by secretaries that have no idea who you really are, while the news has stories of your CEO partying on his yacht from a massive bonus, and a number of your coworkers just got laid off.
I'd also avoid loading the result back into the docker daemon unless you really need it there. Buildkit can output directly to a registry, or an OCI Layout, each of which will maintain the image digest and support multi-platform images (admittedly, those problems go away with the containerd storage changes happening, but it's still an additional export/import that can be skipped).
All that said, I think caching is often the wrong goal. Personally, I want reproducible builds, and those should bypass any cache to verify each step always has the same output. Also, when saving the cache, every build caches every step, even if they aren't used in future builds. As a result, for my own projects, the net result of adding a cache could be slower builds.
Instead of catching the image build steps, I think where we should be spending a lot more effort is in creating local proxies of upstream dependencies, removing the network overhead of pulling dependencies on every build. Compute intensive build steps would still be slow, but a significant number of image builds could be sped up with a proxy at the CI server level without tuning builds individually.
I'm the author of one of those off the shelf tools, and the rules_oci decision here always struck me as a bit unusual. OCI is a relatively easy spec with a number of libraries that implement it. Instead of creating a custom build command that leveraged those libraries to be an efficient build tool, they found commands that could be leveraged even if image building wasn't their design.
It looks like rules_img is taking that other path with their own build command based on the go-containerregistry library. I wish them all the best with their effort.
That said, if all you need to do is add a layer to an existing base, there are tools like crane [0] and regctl [1] that do that today.
The reason other build tools typically pull the base image first is to support "RUN" build steps that execute a command inside of a container and store the filesystem changes in a new layer. If that functionality is ever added to rules_img, I expect it to have the same performance as other build tools.
[0]: https://github.com/google/go-containerregistry/blob/main/cmd...
[0]: https://www.datacenters.com/providers/amazon-aws/data-center...
1. Lots of external references to the GitHub repository would need to be updated. (I probably should have used a vanity URL for the Go module name, but it's a bit late for that now.) 2. They haven't started charging for open source projects yet. (Not that other behaviors of GitHub make me happy.) 3. Some of my usage involves projects where I'm a maintainer but not the project owner.
Wealth moves in lots of ways. Yes, as has been pointed out, we over value stock assets. When you own a significant percentage of a company, you can't just sell that ownership at the last trading price (the stock price would quickly crash). Wealth is also moved between national borders, allowing the wealthy to shop for the lowest tax location to stash their funds. Property can't be moved, but it can be financed with debt, making it taxed at effectively 0%. And the other side of that debt may just be an overseas shell company. There will be entire industries formed around avoiding a wealth tax, funded by the wealthy.
But probably the most capital efficient way to avoid the wealth tax is to buy politicians, influence the elections, and invest in lobbyist, which the wealthy do in the US to avoid taxes. Until money is removed from politics, I'm not holding out any hope that we'll find a way to tax the wealthy.
My best guess is that it will be integrated in the center tube. Buoyancy ensures the center of the ball is usually above water, and one end of the tube would always be above water.
I think the JS developers could take a lesson from the Go proverb. I often write something from scratch to avoid a dependency because of the overhead of maintaining dependencies (or dealing with dependencies that cease to be maintained). If I only need a half dozen lines of code, I'm not going to import a dependency with a couple hundred lines of code, including lots of features I don't need.
The "rule of three" helps avoid premature abstractions. Put the code directly in your project instead of in a library the first time. The second time, copy what you need. And the third time, figure out what's common between all the uses, and then build the abstraction that fits all the projects. The avoids over-optimizing on a single use case and refactoring/deprecating APIs that are already in use.
[1]: https://go-proverbs.github.io/ [2]: https://en.wikipedia.org/wiki/Rule_of_three_(computer_progra...