{"action":"created","issue":{"url":"https://api.github.com/repos/openthread/openthread/issues/1435","repository_url":"https://api.github.com/repos/openthread/openthread","labels_url":"https://api.github.com/repos/openthread/openthread/issues/1435/labels{/name}","comments_url":"https://api.github.com/repos/openthread/openthread/issues/1435/comments","events_url":"https://api.github.com/repos/openthread/openthread/issues/1435/events","html_url":"https://github.com/openthread/openthread/issues/1435","id":212521718,"number":1435,"title":"settings: handling compatibility between different versions","user":{"login":"jwhui","id":16142208,"avatar_url":"https://avatars0.githubusercontent.com/u/16142208?v=3","gravatar_id":"","url":"https://api.github.com/users/jwhui","html_url":"https://github.com/jwhui","followers_url":"https://api.github.com/users/jwhui/followers","following_url":"https://api.github.com/users/jwhui/following{/other_user}","gists_url":"https://api.github.com/users/jwhui/gists{/gist_id}","starred_url":"https://api.github.com/users/jwhui/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jwhui/subscriptions","organizations_url":"https://api.github.com/users/jwhui/orgs","repos_url":"https://api.github.com/users/jwhui/repos","events_url":"https://api.github.com/users/jwhui/events{/privacy}","received_events_url":"https://api.github.com/users/jwhui/received_events","type":"User","site_admin":false},"labels":[{"id":355043113,"url":"https://api.github.com/repos/openthread/openthread/labels/enhancement","name":"enhancement","color":"84b6eb","default":true},{"id":397568778,"url":"https://api.github.com/repos/openthread/openthread/labels/P2","name":"P2","color":"DF8F00","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/openthread/openthread/milestones/1","html_url":"https://github.com/openthread/openthread/milestone/1","labels_url":"https://api.github.com/repos/openthread/openthread/milestones/1/labels","id":1775078,"number":1,"title":"0.01.00 (Initial Official Release)","description":"First official release.","creator":{"login":"darconeous","id":686678,"avatar_url":"https://avatars3.githubusercontent.com/u/686678?v=3","gravatar_id":"","url":"https://api.github.com/users/darconeous","html_url":"https://github.com/darconeous","followers_url":"https://api.github.com/users/darconeous/followers","following_url":"https://api.github.com/users/darconeous/following{/other_user}","gists_url":"https://api.github.com/users/darconeous/gists{/gist_id}","starred_url":"https://api.github.com/users/darconeous/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/darconeous/subscriptions","organizations_url":"https://api.github.com/users/darconeous/orgs","repos_url":"https://api.github.com/users/darconeous/repos","events_url":"https://api.github.com/users/darconeous/events{/privacy}","received_events_url":"https://api.github.com/users/darconeous/received_events","type":"User","site_admin":false},"open_issues":19,"closed_issues":1060,"state":"open","created_at":"2016-05-18T22:19:18Z","updated_at":"2017-03-07T19:10:07Z","due_on":null,"closed_at":null},"comments":0,"created_at":"2017-03-07T18:40:06Z","updated_at":"2017-03-07T19:41:17Z","closed_at":null,"body":"As raised by @nibanks in #1423, we need to establish some method for handling different versions of settings stored using the `otPlatSettings*` API.  This issue is solicit thoughts around what method to use.\r\n\r\nAs a starting point, it seems like backward compatibility is required to allow migration from an older version of OpenThread to a newer version.  However, is forward compatibility also required - to allow migration from a newer version of OpenThread back to an older version?\r\n\r\nIf both forward and backward compatibility is required, I'd argue that in most cases, settings structures are only allowed to add fields by appending to the end.  Fields should generally not be removed."},"comment":{"url":"https://api.github.com/repos/openthread/openthread/issues/comments/284835918","html_url":"https://github.com/openthread/openthread/issues/1435#issuecomment-284835918","issue_url":"https://api.github.com/repos/openthread/openthread/issues/1435","id":284835918,"user":{"login":"pvanhorn","id":7153743,"avatar_url":"https://avatars1.githubusercontent.com/u/7153743?v=3","gravatar_id":"","url":"https://api.github.com/users/pvanhorn","html_url":"https://github.com/pvanhorn","followers_url":"https://api.github.com/users/pvanhorn/followers","following_url":"https://api.github.com/users/pvanhorn/following{/other_user}","gists_url":"https://api.github.com/users/pvanhorn/gists{/gist_id}","starred_url":"https://api.github.com/users/pvanhorn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pvanhorn/subscriptions","organizations_url":"https://api.github.com/users/pvanhorn/orgs","repos_url":"https://api.github.com/users/pvanhorn/repos","events_url":"https://api.github.com/users/pvanhorn/events{/privacy}","received_events_url":"https://api.github.com/users/pvanhorn/received_events","type":"User","site_admin":false},"created_at":"2017-03-07T19:41:17Z","updated_at":"2017-03-07T19:41:17Z","body":"We can never be sure what the life cycle of a product will require, but I think its fair to imagine that some product will have a need for forward compatibility. Perhaps it needed to revert a distribution and that might entail forward compatibility support.  I think your rule about never removing structures is spot on. If we are storing sequence numbers we may also need to store those in multiple locations for the sake of forwards compatibility.  Also, we should ensure that the NVM code can safely traverse any records that it doesn't recognize."}}
{"actor":{"display_login":"pvanhorn"}}