{"action":"created","issue":{"url":"https://api.github.com/repos/MarlinFirmware/Marlin/issues/2014","labels_url":"https://api.github.com/repos/MarlinFirmware/Marlin/issues/2014/labels{/name}","comments_url":"https://api.github.com/repos/MarlinFirmware/Marlin/issues/2014/comments","events_url":"https://api.github.com/repos/MarlinFirmware/Marlin/issues/2014/events","html_url":"https://github.com/MarlinFirmware/Marlin/issues/2014","id":72985643,"number":2014,"title":"[Request] Stop changing serial commands and messages on a whim","user":{"login":"foosel","id":83657,"avatar_url":"https://avatars.githubusercontent.com/u/83657?v=3","gravatar_id":"","url":"https://api.github.com/users/foosel","html_url":"https://github.com/foosel","followers_url":"https://api.github.com/users/foosel/followers","following_url":"https://api.github.com/users/foosel/following{/other_user}","gists_url":"https://api.github.com/users/foosel/gists{/gist_id}","starred_url":"https://api.github.com/users/foosel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/foosel/subscriptions","organizations_url":"https://api.github.com/users/foosel/orgs","repos_url":"https://api.github.com/users/foosel/repos","events_url":"https://api.github.com/users/foosel/events{/privacy}","received_events_url":"https://api.github.com/users/foosel/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":12,"created_at":"2015-05-04T10:24:31Z","updated_at":"2015-05-04T23:25:28Z","closed_at":null,"body":"Case in point, [this specific change](https://github.com/MarlinFirmware/Marlin/commit/d43cc2dd5f52c9b71b486e7778d7fb44ea67fad6#diff-744b3dbd56ea076f353b4ed94eb96271L125). Also the recent change to the behaviour of `G28` that thankfully got rolled back again.\r\n\r\nWe do not have a proper transport protocol in place here (the GCODE RepRap Wiki page is NOT a well defined protocol definition!). That means that as a firmware you have to be very very careful when making backwards incompatible adjustments to your external interface, which your serial interface is. Host software has to work with what is there in terms of a \"protocol\". Changing messages like the one in the commit linked above (especially if hidden like that in an unrelated commit) can have consequences beyond Marlin. \r\n\r\n\"But the hosts do very ugly things they shouldn't be doing!\" - I agree! And I hate it too! But do you know the reason? Because there is no proper transport protocol so host developers have to constantly depend on workarounds and dirty tricks to make the more sophisticated functionality requested and expected by the users work at all without them having to understand G and M commands and even touch a serial terminal (and btw - make all that work across firmwares, so not only with Marlin but also with Repetier, Smoothie, etc). Changing commands or messages on the serial interface out of the blue like this does NOT help in making our job easier, so please be a bit more considerate! At the *very least* stop hiding stuff like this in the mix and start documenting it properly. \r\n\r\nThanks in advance!"},"comment":{"url":"https://api.github.com/repos/MarlinFirmware/Marlin/issues/comments/98883660","html_url":"https://github.com/MarlinFirmware/Marlin/issues/2014#issuecomment-98883660","issue_url":"https://api.github.com/repos/MarlinFirmware/Marlin/issues/2014","id":98883660,"user":{"login":"clefranc","id":4294448,"avatar_url":"https://avatars.githubusercontent.com/u/4294448?v=3","gravatar_id":"","url":"https://api.github.com/users/clefranc","html_url":"https://github.com/clefranc","followers_url":"https://api.github.com/users/clefranc/followers","following_url":"https://api.github.com/users/clefranc/following{/other_user}","gists_url":"https://api.github.com/users/clefranc/gists{/gist_id}","starred_url":"https://api.github.com/users/clefranc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/clefranc/subscriptions","organizations_url":"https://api.github.com/users/clefranc/orgs","repos_url":"https://api.github.com/users/clefranc/repos","events_url":"https://api.github.com/users/clefranc/events{/privacy}","received_events_url":"https://api.github.com/users/clefranc/received_events","type":"User","site_admin":false},"created_at":"2015-05-04T23:25:28Z","updated_at":"2015-05-04T23:25:28Z","body":"@foosel Can we take a look at your protocol?\r\n\r\nHow should it work? A simple protocol definition or a complete implementation, abstraction, supporting all processors, 3D printers, hosts? Should it be only for serial communications? A Web API or any other board connectivity? A separate repository or let firmware coders follow the guideline?\r\n\r\nStill thinking out loud..."}}