{"action":"created","issue":{"url":"https://api.github.com/repos/opencontainers/image-spec/issues/342","repository_url":"https://api.github.com/repos/opencontainers/image-spec","labels_url":"https://api.github.com/repos/opencontainers/image-spec/issues/342/labels{/name}","comments_url":"https://api.github.com/repos/opencontainers/image-spec/issues/342/comments","events_url":"https://api.github.com/repos/opencontainers/image-spec/issues/342/events","html_url":"https://github.com/opencontainers/image-spec/pull/342","id":178983720,"number":342,"title":"layer: Require ustar (originally from IEEE Std 1003.1-1988 but linking IEEE Std 1003.1-2013)","user":{"login":"wking","id":209920,"avatar_url":"https://avatars.githubusercontent.com/u/209920?v=3","gravatar_id":"","url":"https://api.github.com/users/wking","html_url":"https://github.com/wking","followers_url":"https://api.github.com/users/wking/followers","following_url":"https://api.github.com/users/wking/following{/other_user}","gists_url":"https://api.github.com/users/wking/gists{/gist_id}","starred_url":"https://api.github.com/users/wking/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wking/subscriptions","organizations_url":"https://api.github.com/users/wking/orgs","repos_url":"https://api.github.com/users/wking/repos","events_url":"https://api.github.com/users/wking/events{/privacy}","received_events_url":"https://api.github.com/users/wking/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":14,"created_at":"2016-09-23T22:08:18Z","updated_at":"2016-09-26T21:43:12Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/opencontainers/image-spec/pulls/342","html_url":"https://github.com/opencontainers/image-spec/pull/342","diff_url":"https://github.com/opencontainers/image-spec/pull/342.diff","patch_url":"https://github.com/opencontainers/image-spec/pull/342.patch"},"body":"The idea with a spec like this is to define behavior so that different implementations can interoperate reliably.  When there is an interop problem betweem implementations A and B, it should be clear from the spec whether implementation A is broken, implementation B is broken, or the spec is insufficiently clear.\n\nFor example, pax [defines `g` and `x` typeflags][1] that [aren't part of the older ustar (IEEE Std 1003.1-1988)][2].  Before this commit, if implementation A produced a layer with a `g` or `x` typeflag and implementation B died unpacking it, it was unclear whose fault it was.  With this commit, it is clearly B's fault (because it does not understand the pax typeflag).\n\nIf implementation A had produces a layer with an `S` typeflag (which [GNU uses for sparse files][3]) and implementation B died unpacking it, it is neither party's fault, because pax explicitly makes those values implementation-defined.  Interop around them is up to out of band communication between the layer author and layer consumer, and is not covered by this spec.\n\nThe previous “File Types” section listed sockets, but the pax spec has:\n\n> Attempts to archive a socket using ustar interchange format shall produce a diagnostic message.\n\nAnd I see no socket entry in [Go's set of typeflag constants][4], so I'm not sure how they were supported before.\n\nIt looks like Go has supported pax [since][5] [v1.1][6].\n\nSpun off from discussion in #336.  I don't really care what spec we require here.  Requiring ustar (IEEE Std 1003.1-1988) support would be fine (a lower bar to implement, but does not support path names with more than 100 characters, etc.).  Or requiring support for a number of specifications (e.g. you have to understand both pax *and* GNU records).  But I think we should be requiring something, otherwise interop relies on unspecified, out-of-band agreements on layer format.\n\n[1]: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/pax.html#tag_20_92_13_02\n[2]: https://github.com/libarchive/libarchive/wiki/ManPageTar5#POSIX_ustar_Archives\n[3]: https://github.com/libarchive/libarchive/wiki/ManPageTar5#gnu-tar-archives\n[4]: https://golang.org/pkg/archive/tar/#pkg-constants\n[5]: https://codereview.appspot.com/6700047\n[6]: https://github.com/golang/go/commit/106827990466b9246f9395233882b1e816df398a"},"comment":{"url":"https://api.github.com/repos/opencontainers/image-spec/issues/comments/249706577","html_url":"https://github.com/opencontainers/image-spec/pull/342#issuecomment-249706577","issue_url":"https://api.github.com/repos/opencontainers/image-spec/issues/342","id":249706577,"user":{"login":"stevvooe","id":120601,"avatar_url":"https://avatars.githubusercontent.com/u/120601?v=3","gravatar_id":"","url":"https://api.github.com/users/stevvooe","html_url":"https://github.com/stevvooe","followers_url":"https://api.github.com/users/stevvooe/followers","following_url":"https://api.github.com/users/stevvooe/following{/other_user}","gists_url":"https://api.github.com/users/stevvooe/gists{/gist_id}","starred_url":"https://api.github.com/users/stevvooe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stevvooe/subscriptions","organizations_url":"https://api.github.com/users/stevvooe/orgs","repos_url":"https://api.github.com/users/stevvooe/repos","events_url":"https://api.github.com/users/stevvooe/events{/privacy}","received_events_url":"https://api.github.com/users/stevvooe/received_events","type":"User","site_admin":false},"created_at":"2016-09-26T21:43:12Z","updated_at":"2016-09-26T21:43:12Z","body":"@wking Linking out to a large document can often add more confusion than it provides.\r\n\r\nWe need to be clear, in context, which portion of those specifications matter. For example, handling of sockets or pipes is probably not in scope and that needs to be clear this specification."}}
{"actor":{"display_login":"stevvooe"}}