{"action":"created","comment":{"url":"https://api.github.com/repos/zikichombo/sio/pulls/comments/215505176","pull_request_review_id":152782054,"id":215505176,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxNTUwNTE3Ng==","diff_hunk":"@@ -0,0 +1,145 @@\n+# Porting Guide\n+\n+## Ports' Status\n+The status of ports is kept in the main module [README](README.md).\n+\n+## Overview\n+ZikiChombo sio code has a porting process that is unconventional due to the\n+nature of sound support on host systems.  Usually, to port a system, on takes some\n+desired cross-host functionality, such as a filesystem, and implements it with\n+the OS or OS/hardware combination of interest and that's that (to make a long\n+story short).\n+\n+For sound, the problem is that hosts usually have multiple different software\n+components as entry points to playing and capturing sound, and moreover these\n+entry points have some mutually exclusive properties, such as lower bounds on\n+latency, availability of duplex synchronised by hardware audio clock, ability\n+to be shared accross many users or applications, etc.\n+\n+Although the main CPU hardware architectures can certainly be a concern, it has\n+not been so far in our experience.  So we focus on organizing around host,\n+which is taken to be the value of runtime.GOOS in a Go program.\n+\n+# Hosts\n+A host often has a hardware abstraction layer, hardware drivers, and some\n+levels of interacting with these layers to coordinate and make secure demands\n+related to playing and capturing sound on a device.\n+\n+To simplify the end use case, we want to make all this transparent to the\n+consumer of sio, and let them simply work with sound.{Source,Sink,Duplex}.\n+\n+For each Host, ZikiChombo defines a default entry point to accomplish this.\n+\n+All entry points are available both to the consumer of ZikiChombo and either\n+with ZikiChombo or as 3rd party implementations.  So if you're working with\n+VoIP and have precise duplex echo cancellation needs, or a music app that\n+listens and plays in real time with feedback, or writing a PulseAudio\n+replacement, you're more likely to be interested in using a specialized entry\n+point than the default.\n+\n+There is a directory ZikiChombo/sio/ports/{runtime.GOOS} for each host. \n+\n+# Entry Points\n+An entry point defines a proper subset of the functionality listed in the main\n+[README](README.md).  ZikiChombo defines for each host (runtime.GOOS) a list of\n+entry points which refer to the software layer with which the go program will\n+communicate.  These are named after the respective entry points in the main\n+[README](README.md).\n+\n+Each entry point defines a base set of functionality related to what the entry\n+point supports:  device scanning, device change notifications, playback,\n+capture, duplex.  Note the README excludes some functionality from some\n+entry points and entry points may be incomplete.  \n+\n+The functionality is slightly more rich than implementing\n+sio.{Capture,Play,Player,Duplex} to allow callers to achieve latency or other\n+requirements.  Package sio automatically uses the Entry point to apply defaults\n+so that the caller may simply call sio.{Play,Player,Capture,Duplex}.  Package\n+sio also enforces that only one entry point may be in use at a time in one Go\n+program.\n+\n+Entry points can then be registered by a package implementing them in\n+their init() function.  Consumers of ZikiChombo may optionaly control which \n+package implements a given entry point. The default is chosen by \n+package initialisation order.\n+\n+see [host](http://godoc.org/zikichombo.org/sio/host) for details.","path":"Porting.md","position":66,"original_position":66,"commit_id":"7ef7361d29e748d41a011163749e995662f3b577","original_commit_id":"7ef7361d29e748d41a011163749e995662f3b577","user":{"login":"mewmew","id":1414531,"node_id":"MDQ6VXNlcjE0MTQ1MzE=","avatar_url":"https://avatars1.githubusercontent.com/u/1414531?v=4","gravatar_id":"","url":"https://api.github.com/users/mewmew","html_url":"https://github.com/mewmew","followers_url":"https://api.github.com/users/mewmew/followers","following_url":"https://api.github.com/users/mewmew/following{/other_user}","gists_url":"https://api.github.com/users/mewmew/gists{/gist_id}","starred_url":"https://api.github.com/users/mewmew/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mewmew/subscriptions","organizations_url":"https://api.github.com/users/mewmew/orgs","repos_url":"https://api.github.com/users/mewmew/repos","events_url":"https://api.github.com/users/mewmew/events{/privacy}","received_events_url":"https://api.github.com/users/mewmew/received_events","type":"User","site_admin":false},"body":"Either capitalize see, or move into the previous sentence with a semicolon.\r\n\r\ninitialization order; see [host]...","created_at":"2018-09-06T06:08:47Z","updated_at":"2018-09-06T06:38:12Z","html_url":"https://github.com/zikichombo/sio/pull/8#discussion_r215505176","pull_request_url":"https://api.github.com/repos/zikichombo/sio/pulls/8","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/zikichombo/sio/pulls/comments/215505176"},"html":{"href":"https://github.com/zikichombo/sio/pull/8#discussion_r215505176"},"pull_request":{"href":"https://api.github.com/repos/zikichombo/sio/pulls/8"}}},"pull_request":{"url":"https://api.github.com/repos/zikichombo/sio/pulls/8","id":213451485,"node_id":"MDExOlB1bGxSZXF1ZXN0MjEzNDUxNDg1","html_url":"https://github.com/zikichombo/sio/pull/8","diff_url":"https://github.com/zikichombo/sio/pull/8.diff","patch_url":"https://github.com/zikichombo/sio/pull/8.patch","issue_url":"https://api.github.com/repos/zikichombo/sio/issues/8","number":8,"state":"open","locked":false,"title":"reorganised for many ports","user":{"login":"wsc1","id":19166423,"node_id":"MDQ6VXNlcjE5MTY2NDIz","avatar_url":"https://avatars1.githubusercontent.com/u/19166423?v=4","gravatar_id":"","url":"https://api.github.com/users/wsc1","html_url":"https://github.com/wsc1","followers_url":"https://api.github.com/users/wsc1/followers","following_url":"https://api.github.com/users/wsc1/following{/other_user}","gists_url":"https://api.github.com/users/wsc1/gists{/gist_id}","starred_url":"https://api.github.com/users/wsc1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wsc1/subscriptions","organizations_url":"https://api.github.com/users/wsc1/orgs","repos_url":"https://api.github.com/users/wsc1/repos","events_url":"https://api.github.com/users/wsc1/events{/privacy}","received_events_url":"https://api.github.com/users/wsc1/received_events","type":"User","site_admin":false},"body":"This is a PR requesting review for the reorganisation for porting.  \r\n\r\nSome functionality has not yet been put in place under this re-organisation, namely AUHAL device scanning and ALSACGO.  Wanted to kick-start review, especially w.r.t. {README.md,Porting.md, sio/host, sio} while I get the linux IO back up.\r\n","created_at":"2018-09-05T23:00:42Z","updated_at":"2018-09-06T06:38:12Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c61d26a455c6422475a40272377d38da93858a79","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/zikichombo/sio/pulls/8/commits","review_comments_url":"https://api.github.com/repos/zikichombo/sio/pulls/8/comments","review_comment_url":"https://api.github.com/repos/zikichombo/sio/pulls/comments{/number}","comments_url":"https://api.github.com/repos/zikichombo/sio/issues/8/comments","statuses_url":"https://api.github.com/repos/zikichombo/sio/statuses/7ef7361d29e748d41a011163749e995662f3b577","head":{"label":"wsc1:master","ref":"master","sha":"7ef7361d29e748d41a011163749e995662f3b577","user":{"login":"wsc1","id":19166423,"node_id":"MDQ6VXNlcjE5MTY2NDIz","avatar_url":"https://avatars1.githubusercontent.com/u/19166423?v=4","gravatar_id":"","url":"https://api.github.com/users/wsc1","html_url":"https://github.com/wsc1","followers_url":"https://api.github.com/users/wsc1/followers","following_url":"https://api.github.com/users/wsc1/following{/other_user}","gists_url":"https://api.github.com/users/wsc1/gists{/gist_id}","starred_url":"https://api.github.com/users/wsc1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wsc1/subscriptions","organizations_url":"https://api.github.com/users/wsc1/orgs","repos_url":"https://api.github.com/users/wsc1/repos","events_url":"https://api.github.com/users/wsc1/events{/privacy}","received_events_url":"https://api.github.com/users/wsc1/received_events","type":"User","site_admin":false},"repo":{"id":146760551,"node_id":"MDEwOlJlcG9zaXRvcnkxNDY3NjA1NTE=","name":"sio","full_name":"wsc1/sio","owner":{"login":"wsc1","id":19166423,"node_id":"MDQ6VXNlcjE5MTY2NDIz","avatar_url":"https://avatars1.githubusercontent.com/u/19166423?v=4","gravatar_id":"","url":"https://api.github.com/users/wsc1","html_url":"https://github.com/wsc1","followers_url":"https://api.github.com/users/wsc1/followers","following_url":"https://api.github.com/users/wsc1/following{/other_user}","gists_url":"https://api.github.com/users/wsc1/gists{/gist_id}","starred_url":"https://api.github.com/users/wsc1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wsc1/subscriptions","organizations_url":"https://api.github.com/users/wsc1/orgs","repos_url":"https://api.github.com/users/wsc1/repos","events_url":"https://api.github.com/users/wsc1/events{/privacy}","received_events_url":"https://api.github.com/users/wsc1/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/wsc1/sio","description":"sound I/O","fork":true,"url":"https://api.github.com/repos/wsc1/sio","forks_url":"https://api.github.com/repos/wsc1/sio/forks","keys_url":"https://api.github.com/repos/wsc1/sio/keys{/key_id}","collaborators_url":"https://api.github.com/repos/wsc1/sio/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/wsc1/sio/teams","hooks_url":"https://api.github.com/repos/wsc1/sio/hooks","issue_events_url":"https://api.github.com/repos/wsc1/sio/issues/events{/number}","events_url":"https://api.github.com/repos/wsc1/sio/events","assignees_url":"https://api.github.com/repos/wsc1/sio/assignees{/user}","branches_url":"https://api.github.com/repos/wsc1/sio/branches{/branch}","tags_url":"https://api.github.com/repos/wsc1/sio/tags","blobs_url":"https://api.github.com/repos/wsc1/sio/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/wsc1/sio/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/wsc1/sio/git/refs{/sha}","trees_url":"https://api.github.com/repos/wsc1/sio/git/trees{/sha}","statuses_url":"https://api.github.com/repos/wsc1/sio/statuses/{sha}","languages_url":"https://api.github.com/repos/wsc1/sio/languages","stargazers_url":"https://api.github.com/repos/wsc1/sio/stargazers","contributors_url":"https://api.github.com/repos/wsc1/sio/contributors","subscribers_url":"https://api.github.com/repos/wsc1/sio/subscribers","subscription_url":"https://api.github.com/repos/wsc1/sio/subscription","commits_url":"https://api.github.com/repos/wsc1/sio/commits{/sha}","git_commits_url":"https://api.github.com/repos/wsc1/sio/git/commits{/sha}","comments_url":"https://api.github.com/repos/wsc1/sio/comments{/number}","issue_comment_url":"https://api.github.com/repos/wsc1/sio/issues/comments{/number}","contents_url":"https://api.github.com/repos/wsc1/sio/contents/{+path}","compare_url":"https://api.github.com/repos/wsc1/sio/compare/{base}...{head}","merges_url":"https://api.github.com/repos/wsc1/sio/merges","archive_url":"https://api.github.com/repos/wsc1/sio/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/wsc1/sio/downloads","issues_url":"https://api.github.com/repos/wsc1/sio/issues{/number}","pulls_url":"https://api.github.com/repos/wsc1/sio/pulls{/number}","milestones_url":"https://api.github.com/repos/wsc1/sio/milestones{/number}","notifications_url":"https://api.github.com/repos/wsc1/sio/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/wsc1/sio/labels{/name}","releases_url":"https://api.github.com/repos/wsc1/sio/releases{/id}","deployments_url":"https://api.github.com/repos/wsc1/sio/deployments","created_at":"2018-08-30T14:19:27Z","updated_at":"2018-09-05T23:06:43Z","pushed_at":"2018-09-05T23:06:42Z","git_url":"git://github.com/wsc1/sio.git","ssh_url":"git@github.com:wsc1/sio.git","clone_url":"https://github.com/wsc1/sio.git","svn_url":"https://github.com/wsc1/sio","homepage":null,"size":153,"stargazers_count":0,"watchers_count":0,"language":"Go","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"zikichombo:master","ref":"master","sha":"b8dd06b61de2e1b3ed1d9e3fce871a2c76b85a06","user":{"login":"zikichombo","id":42072079,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQyMDcyMDc5","avatar_url":"https://avatars3.githubusercontent.com/u/42072079?v=4","gravatar_id":"","url":"https://api.github.com/users/zikichombo","html_url":"https://github.com/zikichombo","followers_url":"https://api.github.com/users/zikichombo/followers","following_url":"https://api.github.com/users/zikichombo/following{/other_user}","gists_url":"https://api.github.com/users/zikichombo/gists{/gist_id}","starred_url":"https://api.github.com/users/zikichombo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zikichombo/subscriptions","organizations_url":"https://api.github.com/users/zikichombo/orgs","repos_url":"https://api.github.com/users/zikichombo/repos","events_url":"https://api.github.com/users/zikichombo/events{/privacy}","received_events_url":"https://api.github.com/users/zikichombo/received_events","type":"Organization","site_admin":false},"repo":{"id":143447915,"node_id":"MDEwOlJlcG9zaXRvcnkxNDM0NDc5MTU=","name":"sio","full_name":"zikichombo/sio","owner":{"login":"zikichombo","id":42072079,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQyMDcyMDc5","avatar_url":"https://avatars3.githubusercontent.com/u/42072079?v=4","gravatar_id":"","url":"https://api.github.com/users/zikichombo","html_url":"https://github.com/zikichombo","followers_url":"https://api.github.com/users/zikichombo/followers","following_url":"https://api.github.com/users/zikichombo/following{/other_user}","gists_url":"https://api.github.com/users/zikichombo/gists{/gist_id}","starred_url":"https://api.github.com/users/zikichombo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zikichombo/subscriptions","organizations_url":"https://api.github.com/users/zikichombo/orgs","repos_url":"https://api.github.com/users/zikichombo/repos","events_url":"https://api.github.com/users/zikichombo/events{/privacy}","received_events_url":"https://api.github.com/users/zikichombo/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/zikichombo/sio","description":"sound I/O","fork":false,"url":"https://api.github.com/repos/zikichombo/sio","forks_url":"https://api.github.com/repos/zikichombo/sio/forks","keys_url":"https://api.github.com/repos/zikichombo/sio/keys{/key_id}","collaborators_url":"https://api.github.com/repos/zikichombo/sio/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/zikichombo/sio/teams","hooks_url":"https://api.github.com/repos/zikichombo/sio/hooks","issue_events_url":"https://api.github.com/repos/zikichombo/sio/issues/events{/number}","events_url":"https://api.github.com/repos/zikichombo/sio/events","assignees_url":"https://api.github.com/repos/zikichombo/sio/assignees{/user}","branches_url":"https://api.github.com/repos/zikichombo/sio/branches{/branch}","tags_url":"https://api.github.com/repos/zikichombo/sio/tags","blobs_url":"https://api.github.com/repos/zikichombo/sio/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/zikichombo/sio/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/zikichombo/sio/git/refs{/sha}","trees_url":"https://api.github.com/repos/zikichombo/sio/git/trees{/sha}","statuses_url":"https://api.github.com/repos/zikichombo/sio/statuses/{sha}","languages_url":"https://api.github.com/repos/zikichombo/sio/languages","stargazers_url":"https://api.github.com/repos/zikichombo/sio/stargazers","contributors_url":"https://api.github.com/repos/zikichombo/sio/contributors","subscribers_url":"https://api.github.com/repos/zikichombo/sio/subscribers","subscription_url":"https://api.github.com/repos/zikichombo/sio/subscription","commits_url":"https://api.github.com/repos/zikichombo/sio/commits{/sha}","git_commits_url":"https://api.github.com/repos/zikichombo/sio/git/commits{/sha}","comments_url":"https://api.github.com/repos/zikichombo/sio/comments{/number}","issue_comment_url":"https://api.github.com/repos/zikichombo/sio/issues/comments{/number}","contents_url":"https://api.github.com/repos/zikichombo/sio/contents/{+path}","compare_url":"https://api.github.com/repos/zikichombo/sio/compare/{base}...{head}","merges_url":"https://api.github.com/repos/zikichombo/sio/merges","archive_url":"https://api.github.com/repos/zikichombo/sio/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/zikichombo/sio/downloads","issues_url":"https://api.github.com/repos/zikichombo/sio/issues{/number}","pulls_url":"https://api.github.com/repos/zikichombo/sio/pulls{/number}","milestones_url":"https://api.github.com/repos/zikichombo/sio/milestones{/number}","notifications_url":"https://api.github.com/repos/zikichombo/sio/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/zikichombo/sio/labels{/name}","releases_url":"https://api.github.com/repos/zikichombo/sio/releases{/id}","deployments_url":"https://api.github.com/repos/zikichombo/sio/deployments","created_at":"2018-08-03T16:06:17Z","updated_at":"2018-09-01T12:38:18Z","pushed_at":"2018-09-05T23:06:43Z","git_url":"git://github.com/zikichombo/sio.git","ssh_url":"git@github.com:zikichombo/sio.git","clone_url":"https://github.com/zikichombo/sio.git","svn_url":"https://github.com/zikichombo/sio","homepage":null,"size":76,"stargazers_count":7,"watchers_count":7,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"archived":false,"open_issues_count":3,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":4,"open_issues":3,"watchers":7,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/zikichombo/sio/pulls/8"},"html":{"href":"https://github.com/zikichombo/sio/pull/8"},"issue":{"href":"https://api.github.com/repos/zikichombo/sio/issues/8"},"comments":{"href":"https://api.github.com/repos/zikichombo/sio/issues/8/comments"},"review_comments":{"href":"https://api.github.com/repos/zikichombo/sio/pulls/8/comments"},"review_comment":{"href":"https://api.github.com/repos/zikichombo/sio/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/zikichombo/sio/pulls/8/commits"},"statuses":{"href":"https://api.github.com/repos/zikichombo/sio/statuses/7ef7361d29e748d41a011163749e995662f3b577"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"mewmew"}}