logoalt Hacker News

shykes • today at 4:02 AM • 3 replies • view on HN

I was inspired by Go's use of URI as a namespace for user packages, and short names for the standard library. I thought it was an elegant way to allow everyone to host anywhere, and dodge a lot of complicated namespacing issues.

One design principle that was very important to me, was portability and avoiding fragmentation. I wanted every image name to have the same meaning in every engine, so that when writing a Dockerfile, you could have confidence that it would actually behave the same on every docker installation. In this we disagreed with other platforms (like Red Hat) who sought to "embrace and extend" Docker by changing the meaning of short names. We always fought this to avoid fragmentation of the platform. This did not make sense from Red Hat's perspective, since they were the platform - who cared about fragmenting Docker? That led to some negativity which is probably what you're remembering.

At the same time early Docker users wanted the ability to host their own images without being forced to use our central registry. Using Go's system solved both problems at once.


Replies

ryan29 • today at 5:46 AM

Thank you for taking the time to reply. Yes, it was the short names and the way people were trying to run local mirrors that I remember.

I personally never use the short names and have really come to like your solution. I host my own registry and I can glance at a build or compose file and immediately know if I’m depending on any external resources that I shouldn’t be.

I originally disliked it, but it’s been my favorite namespace solution for a long time now.

jacques_chester • today at 5:33 AM

Did it though? The amount of grief I've had because `foo/bar` gets silently expanded to `docker.io/foo/bar` is extensive.

Shorn • today at 4:26 AM

Any regrets about the namespacing or things you’d do differently with it now looking back?

➕ show 1 reply