{"action":"created","issue":{"url":"https://api.github.com/repos/johnny-morrice/godelbrot/issues/13","repository_url":"https://api.github.com/repos/johnny-morrice/godelbrot","labels_url":"https://api.github.com/repos/johnny-morrice/godelbrot/issues/13/labels{/name}","comments_url":"https://api.github.com/repos/johnny-morrice/godelbrot/issues/13/comments","events_url":"https://api.github.com/repos/johnny-morrice/godelbrot/issues/13/events","html_url":"https://github.com/johnny-morrice/godelbrot/issues/13","id":151806604,"number":13,"title":"Plugins","user":{"login":"johnny-morrice","id":10660403,"avatar_url":"https://avatars.githubusercontent.com/u/10660403?v=3","gravatar_id":"","url":"https://api.github.com/users/johnny-morrice","html_url":"https://github.com/johnny-morrice","followers_url":"https://api.github.com/users/johnny-morrice/followers","following_url":"https://api.github.com/users/johnny-morrice/following{/other_user}","gists_url":"https://api.github.com/users/johnny-morrice/gists{/gist_id}","starred_url":"https://api.github.com/users/johnny-morrice/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/johnny-morrice/subscriptions","organizations_url":"https://api.github.com/users/johnny-morrice/orgs","repos_url":"https://api.github.com/users/johnny-morrice/repos","events_url":"https://api.github.com/users/johnny-morrice/events{/privacy}","received_events_url":"https://api.github.com/users/johnny-morrice/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/johnny-morrice/godelbrot/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"open","locked":false,"assignee":{"login":"johnny-morrice","id":10660403,"avatar_url":"https://avatars.githubusercontent.com/u/10660403?v=3","gravatar_id":"","url":"https://api.github.com/users/johnny-morrice","html_url":"https://github.com/johnny-morrice","followers_url":"https://api.github.com/users/johnny-morrice/followers","following_url":"https://api.github.com/users/johnny-morrice/following{/other_user}","gists_url":"https://api.github.com/users/johnny-morrice/gists{/gist_id}","starred_url":"https://api.github.com/users/johnny-morrice/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/johnny-morrice/subscriptions","organizations_url":"https://api.github.com/users/johnny-morrice/orgs","repos_url":"https://api.github.com/users/johnny-morrice/repos","events_url":"https://api.github.com/users/johnny-morrice/events{/privacy}","received_events_url":"https://api.github.com/users/johnny-morrice/received_events","type":"User","site_admin":false},"assignees":[{"login":"johnny-morrice","id":10660403,"avatar_url":"https://avatars.githubusercontent.com/u/10660403?v=3","gravatar_id":"","url":"https://api.github.com/users/johnny-morrice","html_url":"https://github.com/johnny-morrice","followers_url":"https://api.github.com/users/johnny-morrice/followers","following_url":"https://api.github.com/users/johnny-morrice/following{/other_user}","gists_url":"https://api.github.com/users/johnny-morrice/gists{/gist_id}","starred_url":"https://api.github.com/users/johnny-morrice/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/johnny-morrice/subscriptions","organizations_url":"https://api.github.com/users/johnny-morrice/orgs","repos_url":"https://api.github.com/users/johnny-morrice/repos","events_url":"https://api.github.com/users/johnny-morrice/events{/privacy}","received_events_url":"https://api.github.com/users/johnny-morrice/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/johnny-morrice/godelbrot/milestones/1","html_url":"https://github.com/johnny-morrice/godelbrot/milestones/0.0.1","labels_url":"https://api.github.com/repos/johnny-morrice/godelbrot/milestones/1/labels","id":1617430,"number":1,"title":"0.0.1","description":null,"creator":{"login":"johnny-morrice","id":10660403,"avatar_url":"https://avatars.githubusercontent.com/u/10660403?v=3","gravatar_id":"","url":"https://api.github.com/users/johnny-morrice","html_url":"https://github.com/johnny-morrice","followers_url":"https://api.github.com/users/johnny-morrice/followers","following_url":"https://api.github.com/users/johnny-morrice/following{/other_user}","gists_url":"https://api.github.com/users/johnny-morrice/gists{/gist_id}","starred_url":"https://api.github.com/users/johnny-morrice/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/johnny-morrice/subscriptions","organizations_url":"https://api.github.com/users/johnny-morrice/orgs","repos_url":"https://api.github.com/users/johnny-morrice/repos","events_url":"https://api.github.com/users/johnny-morrice/events{/privacy}","received_events_url":"https://api.github.com/users/johnny-morrice/received_events","type":"User","site_admin":false},"open_issues":7,"closed_issues":19,"state":"open","created_at":"2016-03-02T10:02:23Z","updated_at":"2016-07-11T21:11:29Z","due_on":null,"closed_at":null},"comments":3,"created_at":"2016-04-29T07:13:21Z","updated_at":"2016-07-31T21:14:07Z","closed_at":null,"body":"While godelbrot is flexible in terms of its internal engineering, for true flexibility fractal render algorithms ought to be external code that implement a plugin interface.\r\n\r\nA likely plugin provider is\r\n\r\nhttps://github.com/hashicorp/go-plugin\r\n\r\nWe assume in any case where the user is getting bored, the complexity of rendering a fractal dwarfs the time to copy output over the loopback interface. :)"},"comment":{"url":"https://api.github.com/repos/johnny-morrice/godelbrot/issues/comments/236457033","html_url":"https://github.com/johnny-morrice/godelbrot/issues/13#issuecomment-236457033","issue_url":"https://api.github.com/repos/johnny-morrice/godelbrot/issues/13","id":236457033,"user":{"login":"johnny-morrice","id":10660403,"avatar_url":"https://avatars.githubusercontent.com/u/10660403?v=3","gravatar_id":"","url":"https://api.github.com/users/johnny-morrice","html_url":"https://github.com/johnny-morrice","followers_url":"https://api.github.com/users/johnny-morrice/followers","following_url":"https://api.github.com/users/johnny-morrice/following{/other_user}","gists_url":"https://api.github.com/users/johnny-morrice/gists{/gist_id}","starred_url":"https://api.github.com/users/johnny-morrice/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/johnny-morrice/subscriptions","organizations_url":"https://api.github.com/users/johnny-morrice/orgs","repos_url":"https://api.github.com/users/johnny-morrice/repos","events_url":"https://api.github.com/users/johnny-morrice/events{/privacy}","received_events_url":"https://api.github.com/users/johnny-morrice/received_events","type":"User","site_admin":false},"created_at":"2016-07-31T21:14:07Z","updated_at":"2016-07-31T21:14:07Z","body":"Working on this today, I realised that shelling out has many of the same problems as RPC.  Even though it's a lot simpler.\r\n\r\nThe core issue is that serializing/deserializing over process/language/codebase boundaries is difficult.\r\n\r\nLet's face it: fractal fans have already written all kinds of toy renderers.  They aren't going to rearchitect their systems to match Godelbrot's expectations.  They aren't going to learn Golang.  They don't want to pollute their path or their network in wrappers/shims/DCOM style RPC bollocks.\r\n\r\n# NEW PLAN\r\n\r\nIt is the plugin author's responsibility to invoke their plugin in the appropriate manner.\r\n\r\nTo facilitate this without making it suck for developers, Godelbrot will embed Lua.\r\n\r\nA plugin is a Lua function that receives an object representation of Godelbrot's json config format.\r\n\r\nThe function writes the fractal render image to stdout and any warnings or errors to stdin.\r\n\r\nPlugin authors are free to shell out from Lua to invoke their program, or a shim that calls their service, or or or or...."}}
{"actor":{"display_login":"johnny-morrice"}}