{"action":"created","issue":{"url":"https://api.github.com/repos/kubernetes/kubernetes/issues/17922","labels_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/17922/labels{/name}","comments_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/17922/comments","events_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/17922/events","html_url":"https://github.com/kubernetes/kubernetes/pull/17922","id":119395507,"number":17922,"title":"WIP - Split codec from scheme","user":{"login":"smarterclayton","id":1163175,"avatar_url":"https://avatars.githubusercontent.com/u/1163175?v=3","gravatar_id":"","url":"https://api.github.com/users/smarterclayton","html_url":"https://github.com/smarterclayton","followers_url":"https://api.github.com/users/smarterclayton/followers","following_url":"https://api.github.com/users/smarterclayton/following{/other_user}","gists_url":"https://api.github.com/users/smarterclayton/gists{/gist_id}","starred_url":"https://api.github.com/users/smarterclayton/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/smarterclayton/subscriptions","organizations_url":"https://api.github.com/users/smarterclayton/orgs","repos_url":"https://api.github.com/users/smarterclayton/repos","events_url":"https://api.github.com/users/smarterclayton/events{/privacy}","received_events_url":"https://api.github.com/users/smarterclayton/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/cla:%20yes","name":"cla: yes","color":"bfe5bf"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/needs-rebase","name":"needs-rebase","color":"BDBDBD"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/size/XXL","name":"size/XXL","color":"ee0000"}],"state":"open","locked":false,"assignee":{"login":"lavalamp","id":647318,"avatar_url":"https://avatars.githubusercontent.com/u/647318?v=3","gravatar_id":"","url":"https://api.github.com/users/lavalamp","html_url":"https://github.com/lavalamp","followers_url":"https://api.github.com/users/lavalamp/followers","following_url":"https://api.github.com/users/lavalamp/following{/other_user}","gists_url":"https://api.github.com/users/lavalamp/gists{/gist_id}","starred_url":"https://api.github.com/users/lavalamp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lavalamp/subscriptions","organizations_url":"https://api.github.com/users/lavalamp/orgs","repos_url":"https://api.github.com/users/lavalamp/repos","events_url":"https://api.github.com/users/lavalamp/events{/privacy}","received_events_url":"https://api.github.com/users/lavalamp/received_events","type":"User","site_admin":false},"milestone":null,"comments":20,"created_at":"2015-11-29T23:25:15Z","updated_at":"2015-12-08T00:32:28Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/17922","html_url":"https://github.com/kubernetes/kubernetes/pull/17922","diff_url":"https://github.com/kubernetes/kubernetes/pull/17922.diff","patch_url":"https://github.com/kubernetes/kubernetes/pull/17922.patch"},"body":"Move all codec responsibilities out of the scheme. Separate serialization\nresponsibilities of codec from versioning responsibilities of codec.\nEnforce that all objects have a version (add __internal and\n__unversioned to represent those).  Remove runtime.EmbeddedObject in favor\nof pure runtime.Object -> runtime.RawExtension.\n\nAllow schemes to be specialized with additional conversions - since the act\nof converting from __internal -> v1 may result in runtime.Object being\nconverted to bytes, we need to allow conversion to perform serialization,\nbut abstracted.\n\nDramatically reduce the signature for Codec. On Decode, pass a GVK tuple that\nrepresents the desired decoding. Return from the decode the actual origin type\nthat the user presented (will allow resthandler to do checking orthogonal to\nbehavior in codec). Serializer and Codec look the same - the Codec type is \nfor cases where conversion is in play, the serializer is where only raw wire\nformat is considered. Decode now returns enough info to make the right \ndecisions at both levels\n\n@lavalamp I want to touch base with this prior to your client changes\n\n@deads2k for overlap with your changes to GVK.\n\nBegins addressing #7111 and required to support protobuf #17854 (cannot\nassume only one serialization type and 1 codec per version)"},"comment":{"url":"https://api.github.com/repos/kubernetes/kubernetes/issues/comments/162715319","html_url":"https://github.com/kubernetes/kubernetes/pull/17922#issuecomment-162715319","issue_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/17922","id":162715319,"user":{"login":"smarterclayton","id":1163175,"avatar_url":"https://avatars.githubusercontent.com/u/1163175?v=3","gravatar_id":"","url":"https://api.github.com/users/smarterclayton","html_url":"https://github.com/smarterclayton","followers_url":"https://api.github.com/users/smarterclayton/followers","following_url":"https://api.github.com/users/smarterclayton/following{/other_user}","gists_url":"https://api.github.com/users/smarterclayton/gists{/gist_id}","starred_url":"https://api.github.com/users/smarterclayton/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/smarterclayton/subscriptions","organizations_url":"https://api.github.com/users/smarterclayton/orgs","repos_url":"https://api.github.com/users/smarterclayton/repos","events_url":"https://api.github.com/users/smarterclayton/events{/privacy}","received_events_url":"https://api.github.com/users/smarterclayton/received_events","type":"User","site_admin":false},"created_at":"2015-12-08T00:32:28Z","updated_at":"2015-12-08T00:32:28Z","body":"I think group defaulting mostly solved this - at scheme registration time\nthe group default is declared - that's then part of decoding.  For really\nsimple schemes (like scheduler policy or client config) do we really need a\ngroup?\n\nOn Dec 7, 2015, at 7:28 PM, Daniel Smith <notifications@github.com> wrote:\n\nWell, I can't control what people do in non-kube repos. (not that I can\ncontrol anything the kube repo, either ;) )\n\nOn Mon, Dec 7, 2015 at 7:19 AM, David Eads <notifications@github.com> wrote:\n\n> Group is optional, and it has been. You don't need groups if you aren't\n> part of the core Kube body. If you have groups, great. But empty group is\n> itself a group - it's the group of resources that don't care about other\n> people's namespace. We can't force a unified namespace for all use cases.\n>\n> This conflicts with @lavalamp <https://github.com/lavalamp>'s assertion\n> that the only set of kinds that will ever have group=\"\" is the legacy\n> kube types.\n>\n> —\n> Reply to this email directly or view it on GitHub\n> <\nhttps://github.com/kubernetes/kubernetes/pull/17922#issuecomment-162554883>\n> .\n>\n\n—\nReply to this email directly or view it on GitHub\n<https://github.com/kubernetes/kubernetes/pull/17922#issuecomment-162714673>\n.\n"}}