{"action":"created","issue":{"url":"https://api.github.com/repos/NebulousLabs/Sia/issues/163","labels_url":"https://api.github.com/repos/NebulousLabs/Sia/issues/163/labels{/name}","comments_url":"https://api.github.com/repos/NebulousLabs/Sia/issues/163/comments","events_url":"https://api.github.com/repos/NebulousLabs/Sia/issues/163/events","html_url":"https://github.com/NebulousLabs/Sia/issues/163","id":51951676,"number":163,"title":"Updating","user":{"login":"lukechampine","id":3344749,"avatar_url":"https://avatars.githubusercontent.com/u/3344749?v=3","gravatar_id":"","url":"https://api.github.com/users/lukechampine","html_url":"https://github.com/lukechampine","followers_url":"https://api.github.com/users/lukechampine/followers","following_url":"https://api.github.com/users/lukechampine/following{/other_user}","gists_url":"https://api.github.com/users/lukechampine/gists{/gist_id}","starred_url":"https://api.github.com/users/lukechampine/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lukechampine/subscriptions","organizations_url":"https://api.github.com/users/lukechampine/orgs","repos_url":"https://api.github.com/users/lukechampine/repos","events_url":"https://api.github.com/users/lukechampine/events{/privacy}","received_events_url":"https://api.github.com/users/lukechampine/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":{"login":"lukechampine","id":3344749,"avatar_url":"https://avatars.githubusercontent.com/u/3344749?v=3","gravatar_id":"","url":"https://api.github.com/users/lukechampine","html_url":"https://github.com/lukechampine","followers_url":"https://api.github.com/users/lukechampine/followers","following_url":"https://api.github.com/users/lukechampine/following{/other_user}","gists_url":"https://api.github.com/users/lukechampine/gists{/gist_id}","starred_url":"https://api.github.com/users/lukechampine/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lukechampine/subscriptions","organizations_url":"https://api.github.com/users/lukechampine/orgs","repos_url":"https://api.github.com/users/lukechampine/repos","events_url":"https://api.github.com/users/lukechampine/events{/privacy}","received_events_url":"https://api.github.com/users/lukechampine/received_events","type":"User","site_admin":false},"milestone":null,"comments":4,"created_at":"2014-12-15T05:58:42Z","updated_at":"2015-01-16T17:15:55Z","closed_at":"2015-01-16T08:41:08Z","body":"We need a way for users to automatically update. This would be especially helpful during closed/open beta: instead of publishing each new release and asking people to update, we could just push out an update and be confident that everyone saw it.\r\n\r\nThere's a service I saw a while ago called [Equinox](https://equinox.io), which might be our best bet, though I don't fully know how it works. The alternative would be to roll our own updater.\r\n\r\nEDIT: Equinox is a paid service. It basically just provides servers for users to download from. The actually update library is called [go-update](https://github.com/inconshreveable/go-update). Incidentally, it looks like the binary patching algorithm used by go-update was designed by Colin Percival.\r\n\r\nI wonder how Bitcoin handles updates. Having people download updates from (our) centralized servers seems reasonable for the beta, but after that we'll probably want something more decentralized. I can imagine nodes sharing updates (signed, of course) with their peers."},"comment":{"url":"https://api.github.com/repos/NebulousLabs/Sia/issues/comments/70287445","html_url":"https://github.com/NebulousLabs/Sia/issues/163#issuecomment-70287445","issue_url":"https://api.github.com/repos/NebulousLabs/Sia/issues/163","id":70287445,"user":{"login":"lukechampine","id":3344749,"avatar_url":"https://avatars.githubusercontent.com/u/3344749?v=3","gravatar_id":"","url":"https://api.github.com/users/lukechampine","html_url":"https://github.com/lukechampine","followers_url":"https://api.github.com/users/lukechampine/followers","following_url":"https://api.github.com/users/lukechampine/following{/other_user}","gists_url":"https://api.github.com/users/lukechampine/gists{/gist_id}","starred_url":"https://api.github.com/users/lukechampine/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lukechampine/subscriptions","organizations_url":"https://api.github.com/users/lukechampine/orgs","repos_url":"https://api.github.com/users/lukechampine/repos","events_url":"https://api.github.com/users/lukechampine/events{/privacy}","received_events_url":"https://api.github.com/users/lukechampine/received_events","type":"User","site_admin":false},"created_at":"2015-01-16T17:15:55Z","updated_at":"2015-01-16T17:15:55Z","body":"There are quite a few more features I'd like to implement before considering this \"closed.\" I can just make new issues for them if that makes more sense though."}}