Unfortunately, all the code is proprietary at the moment. If you are willing to get your hands dirty, the main thing to realize is that container layers are "just" tar files (see, for instance, this article: https://ochagavia.nl/blog/crafting-container-images-without-...). Contact details are in my profile, in case you'd like to chat ;)
I didn't expect that! It's a pity they don't expose an API for parallel uploads, for those of us who need to maximize throughput and don't mind using something non-standard.
That's true, unfortunately. I'm thinking about ways to somehow support private repos without introducing a proxy in between... Not sure if it will be possible.
Layers are fully independent of each other in the OCI spec (which makes them reusable). They are wired together through a separate manifest file that lists the layers of a specific image.
It's a mystery... Here are the bits of the OCI spec about multipart pushes (https://github.com/opencontainers/distribution-spec/blob/58d...). In short, you can only upload the next chunk after the previous one finishes, because you need to use information from the response's headers.
That's true, but I'd assume the server would like to double-check that the hashes are valid (for robustness / consistency)... That's something my little experiment doesn't do, obviously.
I wonder whether the folks at Cloudflare could take the ideas from the blog post and create a high-performance serverless container registry based on R2. They could call it scrubs, for "serverless container registry using blob storage" :P
Other than backwards-compatibility, I can imagine simplicity being a reason. For instance, sequential pushing makes it easier to calculate the sha256 hash of the layer as it's being uploaded, without having to do it after-the-fact when the uploaded chunks are assembled.
No idea... I asked the same question here (https://news.ycombinator.com/item?id=40943480) and am hoping we'll have a classic HN moment where someone who was involved in the design of the spec will chime in.
Hi HN, author here. If anyone knows why layer pushes need to be sequential in the OCI specification, please tell! Is it merely a historical accident, or is there some hidden rationale behind it?
Edit: to clarify, I'm talking about sequentially pushing a _single_ layer's contents. You can, of course, push multiple layers in parallel.
Aegis should really be more well-known IMO. I installed it on an old phone that didn't have enough storage for Google Authenticator and was really pleased with the app. The fact that it's a community project is also a nice bonus.
Lack of proper types is what killed the joy of programming in Elixir for me (I lasted 6 months, hoping I would somehow adapt, but the experience was so miserable that I decided to move on). I simply can't understand how anyone can be productive in a big codebase without the rigor of static typing, but those people exist, so I guess there must be something about our brains that divides us in the dynamic vs static typing camps.
As someone who once in a while dabbles in Linux systems programming, is there any reason to use signalfd over timerfd when all you want is a timer? The article suggests you can use signals as timers, which left me wondering...
Luckily, there are ways to reduce syscalls (like Generic Segmentation Offload and other tricks[1]). But I agree that not having things run in the kernel makes it more challenging for high-throughput scenarios.
> the nonsense they pick up on blogs and conferences
Thanks for this bit. As I gain more experience, I grow less and less patient with many blogs and conference talks. Often authors are just very excited about a topic, and my general impression is that they tend to propose ideas that are not seriously battle-tested in production.
Your comment left me thinking, so I went to double-check the meaning of the word evidence in a dictionary (after all, I'm not a native English speaker). I found this one as the first entry: "the facts, signs or objects that make you believe that something is true" (source: https://www.oxfordlearnersdictionaries.com/definition/englis...). This is exactly the sense in which I'm using the word. What do you mean by saying it erodes language? Or do you use the word evidence in another sense than this dictionary?
PS: not meaning to start a flamewar or engage in endless discussion, I just want to understand your point ;)
Here's some stuff that falls under overhead: writing blog posts (this one took me at least 10 hours to write), networking, sales conversations, keeping my own knowledge up to date. It's not consistently one day, but I'd say on average it is.
My case was made difficult by the fact that I was only open to 3 days / week contracts. And maybe also because I'm trying to find something outside of full stack development, while at the same time being decently paid.
I'm not going to engage in the eternal atheists vs believers debate, but I'm trusting here that my experience is based upon reality (i.e. I've found convincing evidence). I don't expect what convinces me will convince everyone else, but you and I will die some day and then we'll know (or if it turns out we no longer exist, at least we won't care :P)