{"action":"created","comment":{"url":"https://api.github.com/repos/resin-io/etcher/pulls/comments/93794340","pull_request_review_id":14331082,"id":93794340,"diff_hunk":"@@ -0,0 +1,344 @@\n+Etcher Extended Archives\n+========================\n+\n+Etcher Extended Archives are ZIP files including an image and a special `.meta`\n+directory including information that describes the image, device type, and\n+vendor in detail, enabling Etcher to make use of such information to deliver\n+advanced features and a more pleasant experience to the user.\n+\n+**WARNING: At the moment of this writing, only a small subset of the features\n+discussed in this document have been implemented in the product.**\n+\n+A typical layout for an extended archive might look something like this:\n+\n+```\n+Raspbian-Jessie.zip\n+├── .meta\n+│   └── manifest.json\n+│   └── instructions.markdown\n+│   └── device-type.jpg\n+│   └── vendor-logo.svg\n+│   └── raspbian-jessie.img.bmap\n+└── raspbian-jessie.img\n+```\n+\n+The actual image file, `raspbian-jessie.img`, lives in the top level of the\n+archive, and a special `.meta` directory contains many files, which will be\n+explained in detail in the remaining of this document.\n+\n+The most important file inside `.meta` is `manifest.json`, which declares\n+information about the image, the target device type, and the vendor, and\n+references all the other files living inside the `.meta` directory. This file\n+may contain the following top level properties:\n+\n+- `vendor`: Information about the image vendor\n+- `device`: Information about the image device type\n+- `image`: Information about the image itself\n+\n+For example:\n+\n+```json\n+{\n+  \"vendor\": { ... },\n+  \"device\": { ... },\n+  \"image\": { ... }\n+}\n+```\n+\n+Each of the top level properties are described in detail below.\n+\n+Vendor\n+------\n+\n+> A vendor represents a manufacturer of a device type and potential publisher\n+  of official images.\n+\n+_Some examples of vendors are: Beagleboard, Raspberry Pi\n+Foundation, Intel, and Tizen._\n+\n+Here's an example of a real-world vendor manifest for Beagleboard:\n+\n+```json\n+{\n+  \"name\": \"Beagleboard\",\n+  \"url\": \"http://beagleboard.org\",\n+  \"supportUrl\": \"http://beagleboard.org/support/\",\n+  \"logoPath\": \"vendor.svg\",\n+  \"colorScheme\": {\n+    \"backgroundColor\": \"#535760\",\n+    \"foregroundColor\": \"#FFFFFF\",\n+    \"primaryColor\": \"#5793db\"\n+  }\n+}\n+```\n+\n+A vendor may be described with any of the following properties:\n+\n+### `name (String)`\n+\n+The display human-friendly name of the vendor.\n+\n+### `url (String)`\n+\n+The main url of the vendor, usually the landing page.\n+\n+### `supportUrl (String)`\n+\n+The vendor url where users can get general support.\n+\n+This could be a link to a forum, IRC room, troubleshooting page, support form,\n+etc.\n+\n+### `logoPath (String)`\n+\n+The path to the vendor's logo in SVG format.\n+\n+The SVG format requirement ensures that the logo looks good in all types of\n+screen resolutions.\n+\n+### `colorScheme (Object)`\n+\n+The vendor specific color scheme, if any.\n+\n+Declaring a vendor-specific color scheme allows a certain degree of branding to\n+be applied to the application on the fly as soon as a vendored image is\n+selected.\n+\n+You may declare the following colors, in hexadecimal format:\n+\n+- `backgroundColor`: The application background color\n+- `foregroundColor`: The application foreground color\n+- `primaryColor`: The application primary color\n+\n+Device\n+------\n+\n+> A device represents a specific device type manufactured by a certain vendor.\n+\n+_Some examples of devices are: Beaglebone Black, Beaglebone Green, Intel Edison,\n+and Raspberry Pi 3._\n+\n+Here's an example of a real-world device manifest for Raspberry Pi 3:\n+\n+```json\n+{\n+  \"displayName\": \"Raspberry Pi 3\",\n+  \"arch\": \"armv7hf\",\n+  \"slug\": \"raspberrypi3\",\n+  \"slugAliases\": [\n+    \"raspberry-pi3\",\n+    \"rpi3\"\n+  ],\n+  \"url\": \"https://www.raspberrypi.org/products/raspberry-pi-3-model-b/\",\n+  \"photoPath\": \"raspberry-pi-3-photo.jpg\"\n+}\n+```\n+\n+A device may be described with any of the following properties:\n+\n+### `displayName (String)`\n+\n+The human-friendly name of the device.\n+\n+### `arch (String[])`\n+\n+The device architecture.\n+\n+The current possible values are: `aarch64`, `amd64`, `armv5e`, `armv7hf`,\n+`i386`, and `rpi`.\n+\n+### `slug (String)`\n+\n+The device slug.\n+\n+### `slugAliases (String[])`\n+\n+The device slug aliases, if any.\n+\n+### `url (String)`\n+\n+The url to the landing page of the device.\n+\n+### `photoPath (String)`:\n+\n+The path to a photo of the device in JPEG format.\n+\n+### `compatibleWith (String[])`\n+\n+An array of the device slugs this device is compatible with.\n+\n+Declaring compatibility allows images that target a specific device to be also\n+used in other device types that are known to work with it.\n+\n+Image\n+-----\n+\n+> An image represents a downloadable operating system image that can be booted\n+  in a device or family of devices.\n+\n+_Some examples of images are: Raspbian Jessie, ResinOS, CoreOS, and Ostro._\n+\n+Here's an example of a real-world image manifest for Raspbian Jessie:\n+\n+```json\n+{\n+  \"displayName\": \"Raspbian Jessie\",\n+  \"version\": \"May 2016\",\n+  \"url\": \"https://www.raspbian.org\",\n+  \"releaseNotesUrl\": \"http://downloads.raspberrypi.org/raspbian/release_notes.txt\",\n+  \"logoPath\": \"image-logo.svg\",\n+  \"checksumType\": \"sha1\",\n+  \"checksum\": \"64c7ed611929ea5178fbb69b5a5f29cc9cc7c157\",\n+  \"recommendedDriveSize\": 4294967296,\n+  \"bmapPath\": \"raspbian-jessie.bmap\",\n+  \"instructionsPath\": \"raspbian-getting-started.markdown\",\n+  \"updateUrl\": \"https://downloads.raspberrypi.org/raspbian_latest\",\n+  \"etag\": \"c0170-53152af2-533d18ef29fc0\",\n+  \"supportedDevices\": [\n+    \"raspberrypi\",\n+    \"raspberrypi2\",\n+    \"raspberrypi3\"\n+  ]\n+}\n+```\n+\n+A image may be described with any of the following properties:\n+\n+### `displayName (String)`\n+\n+The human-friendly name of the image.\n+\n+### `version (String)`\n+\n+The version of the image.\n+\n+### `url (String)`\n+\n+The main url of the image.\n+\n+### `releaseNotesUrl (String)`\n+\n+The url to the image's release notes or CHANGELOG.\n+\n+### `logoPath (String)`\n+\n+The path to the image specific logo in SVG format.\n+\n+The SVG format requirement ensures that the logo looks good in all types of\n+screen resolutions.\n+\n+### `checksumType (String)`\n+\n+The checksum type. The current possible values are: `sha1`, `crc32`, and `md5`.\n+\n+### `checksum (String)`\n+\n+The actual checksum according to the type declared in `checksumType`.\n+","path":"docs/EXTENDED-ARCHIVES.md","position":237,"original_position":237,"commit_id":"bdf920f86459d4ab63e62bd3b380f6c2d336ceac","original_commit_id":"bdf920f86459d4ab63e62bd3b380f6c2d336ceac","user":{"login":"1j01","id":3630663,"avatar_url":"https://avatars.githubusercontent.com/u/3630663?v=3","gravatar_id":"","url":"https://api.github.com/users/1j01","html_url":"https://github.com/1j01","followers_url":"https://api.github.com/users/1j01/followers","following_url":"https://api.github.com/users/1j01/following{/other_user}","gists_url":"https://api.github.com/users/1j01/gists{/gist_id}","starred_url":"https://api.github.com/users/1j01/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/1j01/subscriptions","organizations_url":"https://api.github.com/users/1j01/orgs","repos_url":"https://api.github.com/users/1j01/repos","events_url":"https://api.github.com/users/1j01/events{/privacy}","received_events_url":"https://api.github.com/users/1j01/received_events","type":"User","site_admin":false},"body":"Yeah, I guess it would be the 'fastest one that's still effective checking against for corruption', which might vary per machine given for instance [hardware acceleration of SHA](https://en.wikipedia.org/wiki/Intel_SHA_extensions).\r\nBut also, another image writing tool could want to make use of the metadata and verify the image but doesn't support all the functions that etcher does. Theoretically. Just trying to think of the future. This would probably be one of the main pieces of metadata another program might want to leverage.","created_at":"2016-12-23T19:03:38Z","updated_at":"2016-12-23T19:03:38Z","html_url":"https://github.com/resin-io/etcher/pull/707#discussion_r93794340","pull_request_url":"https://api.github.com/repos/resin-io/etcher/pulls/707","_links":{"self":{"href":"https://api.github.com/repos/resin-io/etcher/pulls/comments/93794340"},"html":{"href":"https://github.com/resin-io/etcher/pull/707#discussion_r93794340"},"pull_request":{"href":"https://api.github.com/repos/resin-io/etcher/pulls/707"}}},"pull_request":{"url":"https://api.github.com/repos/resin-io/etcher/pulls/707","id":85901399,"html_url":"https://github.com/resin-io/etcher/pull/707","diff_url":"https://github.com/resin-io/etcher/pull/707.diff","patch_url":"https://github.com/resin-io/etcher/pull/707.patch","issue_url":"https://api.github.com/repos/resin-io/etcher/issues/707","number":707,"state":"open","locked":false,"title":"docs: etcher extended archives specification","user":{"login":"jviotti","id":2192773,"avatar_url":"https://avatars.githubusercontent.com/u/2192773?v=3","gravatar_id":"","url":"https://api.github.com/users/jviotti","html_url":"https://github.com/jviotti","followers_url":"https://api.github.com/users/jviotti/followers","following_url":"https://api.github.com/users/jviotti/following{/other_user}","gists_url":"https://api.github.com/users/jviotti/gists{/gist_id}","starred_url":"https://api.github.com/users/jviotti/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jviotti/subscriptions","organizations_url":"https://api.github.com/users/jviotti/orgs","repos_url":"https://api.github.com/users/jviotti/repos","events_url":"https://api.github.com/users/jviotti/events{/privacy}","received_events_url":"https://api.github.com/users/jviotti/received_events","type":"User","site_admin":false},"body":"This document aims to describe in detail the structure of an Etcher\nExtended Archive.\n\nSigned-off-by: Juan Cruz Viotti jviotti@openmailbox.org\n","created_at":"2016-09-20T02:29:21Z","updated_at":"2016-12-23T19:03:38Z","closed_at":null,"merged_at":null,"merge_commit_sha":"410319db2ea123348fdcf055530143eb8d989b46","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/resin-io/etcher/pulls/707/commits","review_comments_url":"https://api.github.com/repos/resin-io/etcher/pulls/707/comments","review_comment_url":"https://api.github.com/repos/resin-io/etcher/pulls/comments{/number}","comments_url":"https://api.github.com/repos/resin-io/etcher/issues/707/comments","statuses_url":"https://api.github.com/repos/resin-io/etcher/statuses/bdf920f86459d4ab63e62bd3b380f6c2d336ceac","head":{"label":"resin-io:extended-archives","ref":"extended-archives","sha":"bdf920f86459d4ab63e62bd3b380f6c2d336ceac","user":{"login":"resin-io","id":6157842,"avatar_url":"https://avatars.githubusercontent.com/u/6157842?v=3","gravatar_id":"","url":"https://api.github.com/users/resin-io","html_url":"https://github.com/resin-io","followers_url":"https://api.github.com/users/resin-io/followers","following_url":"https://api.github.com/users/resin-io/following{/other_user}","gists_url":"https://api.github.com/users/resin-io/gists{/gist_id}","starred_url":"https://api.github.com/users/resin-io/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/resin-io/subscriptions","organizations_url":"https://api.github.com/users/resin-io/orgs","repos_url":"https://api.github.com/users/resin-io/repos","events_url":"https://api.github.com/users/resin-io/events{/privacy}","received_events_url":"https://api.github.com/users/resin-io/received_events","type":"Organization","site_admin":false},"repo":{"id":45055693,"name":"etcher","full_name":"resin-io/etcher","owner":{"login":"resin-io","id":6157842,"avatar_url":"https://avatars.githubusercontent.com/u/6157842?v=3","gravatar_id":"","url":"https://api.github.com/users/resin-io","html_url":"https://github.com/resin-io","followers_url":"https://api.github.com/users/resin-io/followers","following_url":"https://api.github.com/users/resin-io/following{/other_user}","gists_url":"https://api.github.com/users/resin-io/gists{/gist_id}","starred_url":"https://api.github.com/users/resin-io/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/resin-io/subscriptions","organizations_url":"https://api.github.com/users/resin-io/orgs","repos_url":"https://api.github.com/users/resin-io/repos","events_url":"https://api.github.com/users/resin-io/events{/privacy}","received_events_url":"https://api.github.com/users/resin-io/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/resin-io/etcher","description":"Flash OS images to SD cards & USB drives, safely and easily.","fork":false,"url":"https://api.github.com/repos/resin-io/etcher","forks_url":"https://api.github.com/repos/resin-io/etcher/forks","keys_url":"https://api.github.com/repos/resin-io/etcher/keys{/key_id}","collaborators_url":"https://api.github.com/repos/resin-io/etcher/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/resin-io/etcher/teams","hooks_url":"https://api.github.com/repos/resin-io/etcher/hooks","issue_events_url":"https://api.github.com/repos/resin-io/etcher/issues/events{/number}","events_url":"https://api.github.com/repos/resin-io/etcher/events","assignees_url":"https://api.github.com/repos/resin-io/etcher/assignees{/user}","branches_url":"https://api.github.com/repos/resin-io/etcher/branches{/branch}","tags_url":"https://api.github.com/repos/resin-io/etcher/tags","blobs_url":"https://api.github.com/repos/resin-io/etcher/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/resin-io/etcher/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/resin-io/etcher/git/refs{/sha}","trees_url":"https://api.github.com/repos/resin-io/etcher/git/trees{/sha}","statuses_url":"https://api.github.com/repos/resin-io/etcher/statuses/{sha}","languages_url":"https://api.github.com/repos/resin-io/etcher/languages","stargazers_url":"https://api.github.com/repos/resin-io/etcher/stargazers","contributors_url":"https://api.github.com/repos/resin-io/etcher/contributors","subscribers_url":"https://api.github.com/repos/resin-io/etcher/subscribers","subscription_url":"https://api.github.com/repos/resin-io/etcher/subscription","commits_url":"https://api.github.com/repos/resin-io/etcher/commits{/sha}","git_commits_url":"https://api.github.com/repos/resin-io/etcher/git/commits{/sha}","comments_url":"https://api.github.com/repos/resin-io/etcher/comments{/number}","issue_comment_url":"https://api.github.com/repos/resin-io/etcher/issues/comments{/number}","contents_url":"https://api.github.com/repos/resin-io/etcher/contents/{+path}","compare_url":"https://api.github.com/repos/resin-io/etcher/compare/{base}...{head}","merges_url":"https://api.github.com/repos/resin-io/etcher/merges","archive_url":"https://api.github.com/repos/resin-io/etcher/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/resin-io/etcher/downloads","issues_url":"https://api.github.com/repos/resin-io/etcher/issues{/number}","pulls_url":"https://api.github.com/repos/resin-io/etcher/pulls{/number}","milestones_url":"https://api.github.com/repos/resin-io/etcher/milestones{/number}","notifications_url":"https://api.github.com/repos/resin-io/etcher/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/resin-io/etcher/labels{/name}","releases_url":"https://api.github.com/repos/resin-io/etcher/releases{/id}","deployments_url":"https://api.github.com/repos/resin-io/etcher/deployments","created_at":"2015-10-27T16:53:23Z","updated_at":"2016-12-23T18:31:54Z","pushed_at":"2016-12-22T14:10:43Z","git_url":"git://github.com/resin-io/etcher.git","ssh_url":"git@github.com:resin-io/etcher.git","clone_url":"https://github.com/resin-io/etcher.git","svn_url":"https://github.com/resin-io/etcher","homepage":"https://etcher.io","size":11356,"stargazers_count":1534,"watchers_count":1534,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":88,"mirror_url":null,"open_issues_count":81,"forks":88,"open_issues":81,"watchers":1534,"default_branch":"master"}},"base":{"label":"resin-io:master","ref":"master","sha":"9c4afa068084d28b26db5c8520d650dffc4ed526","user":{"login":"resin-io","id":6157842,"avatar_url":"https://avatars.githubusercontent.com/u/6157842?v=3","gravatar_id":"","url":"https://api.github.com/users/resin-io","html_url":"https://github.com/resin-io","followers_url":"https://api.github.com/users/resin-io/followers","following_url":"https://api.github.com/users/resin-io/following{/other_user}","gists_url":"https://api.github.com/users/resin-io/gists{/gist_id}","starred_url":"https://api.github.com/users/resin-io/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/resin-io/subscriptions","organizations_url":"https://api.github.com/users/resin-io/orgs","repos_url":"https://api.github.com/users/resin-io/repos","events_url":"https://api.github.com/users/resin-io/events{/privacy}","received_events_url":"https://api.github.com/users/resin-io/received_events","type":"Organization","site_admin":false},"repo":{"id":45055693,"name":"etcher","full_name":"resin-io/etcher","owner":{"login":"resin-io","id":6157842,"avatar_url":"https://avatars.githubusercontent.com/u/6157842?v=3","gravatar_id":"","url":"https://api.github.com/users/resin-io","html_url":"https://github.com/resin-io","followers_url":"https://api.github.com/users/resin-io/followers","following_url":"https://api.github.com/users/resin-io/following{/other_user}","gists_url":"https://api.github.com/users/resin-io/gists{/gist_id}","starred_url":"https://api.github.com/users/resin-io/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/resin-io/subscriptions","organizations_url":"https://api.github.com/users/resin-io/orgs","repos_url":"https://api.github.com/users/resin-io/repos","events_url":"https://api.github.com/users/resin-io/events{/privacy}","received_events_url":"https://api.github.com/users/resin-io/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/resin-io/etcher","description":"Flash OS images to SD cards & USB drives, safely and easily.","fork":false,"url":"https://api.github.com/repos/resin-io/etcher","forks_url":"https://api.github.com/repos/resin-io/etcher/forks","keys_url":"https://api.github.com/repos/resin-io/etcher/keys{/key_id}","collaborators_url":"https://api.github.com/repos/resin-io/etcher/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/resin-io/etcher/teams","hooks_url":"https://api.github.com/repos/resin-io/etcher/hooks","issue_events_url":"https://api.github.com/repos/resin-io/etcher/issues/events{/number}","events_url":"https://api.github.com/repos/resin-io/etcher/events","assignees_url":"https://api.github.com/repos/resin-io/etcher/assignees{/user}","branches_url":"https://api.github.com/repos/resin-io/etcher/branches{/branch}","tags_url":"https://api.github.com/repos/resin-io/etcher/tags","blobs_url":"https://api.github.com/repos/resin-io/etcher/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/resin-io/etcher/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/resin-io/etcher/git/refs{/sha}","trees_url":"https://api.github.com/repos/resin-io/etcher/git/trees{/sha}","statuses_url":"https://api.github.com/repos/resin-io/etcher/statuses/{sha}","languages_url":"https://api.github.com/repos/resin-io/etcher/languages","stargazers_url":"https://api.github.com/repos/resin-io/etcher/stargazers","contributors_url":"https://api.github.com/repos/resin-io/etcher/contributors","subscribers_url":"https://api.github.com/repos/resin-io/etcher/subscribers","subscription_url":"https://api.github.com/repos/resin-io/etcher/subscription","commits_url":"https://api.github.com/repos/resin-io/etcher/commits{/sha}","git_commits_url":"https://api.github.com/repos/resin-io/etcher/git/commits{/sha}","comments_url":"https://api.github.com/repos/resin-io/etcher/comments{/number}","issue_comment_url":"https://api.github.com/repos/resin-io/etcher/issues/comments{/number}","contents_url":"https://api.github.com/repos/resin-io/etcher/contents/{+path}","compare_url":"https://api.github.com/repos/resin-io/etcher/compare/{base}...{head}","merges_url":"https://api.github.com/repos/resin-io/etcher/merges","archive_url":"https://api.github.com/repos/resin-io/etcher/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/resin-io/etcher/downloads","issues_url":"https://api.github.com/repos/resin-io/etcher/issues{/number}","pulls_url":"https://api.github.com/repos/resin-io/etcher/pulls{/number}","milestones_url":"https://api.github.com/repos/resin-io/etcher/milestones{/number}","notifications_url":"https://api.github.com/repos/resin-io/etcher/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/resin-io/etcher/labels{/name}","releases_url":"https://api.github.com/repos/resin-io/etcher/releases{/id}","deployments_url":"https://api.github.com/repos/resin-io/etcher/deployments","created_at":"2015-10-27T16:53:23Z","updated_at":"2016-12-23T18:31:54Z","pushed_at":"2016-12-22T14:10:43Z","git_url":"git://github.com/resin-io/etcher.git","ssh_url":"git@github.com:resin-io/etcher.git","clone_url":"https://github.com/resin-io/etcher.git","svn_url":"https://github.com/resin-io/etcher","homepage":"https://etcher.io","size":11356,"stargazers_count":1534,"watchers_count":1534,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":88,"mirror_url":null,"open_issues_count":81,"forks":88,"open_issues":81,"watchers":1534,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/resin-io/etcher/pulls/707"},"html":{"href":"https://github.com/resin-io/etcher/pull/707"},"issue":{"href":"https://api.github.com/repos/resin-io/etcher/issues/707"},"comments":{"href":"https://api.github.com/repos/resin-io/etcher/issues/707/comments"},"review_comments":{"href":"https://api.github.com/repos/resin-io/etcher/pulls/707/comments"},"review_comment":{"href":"https://api.github.com/repos/resin-io/etcher/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/resin-io/etcher/pulls/707/commits"},"statuses":{"href":"https://api.github.com/repos/resin-io/etcher/statuses/bdf920f86459d4ab63e62bd3b380f6c2d336ceac"}}}}
{"actor":{"display_login":"1j01"}}