{"action":"created","issue":{"url":"https://api.github.com/repos/ros/ros_comm/issues/1085","repository_url":"https://api.github.com/repos/ros/ros_comm","labels_url":"https://api.github.com/repos/ros/ros_comm/issues/1085/labels{/name}","comments_url":"https://api.github.com/repos/ros/ros_comm/issues/1085/comments","events_url":"https://api.github.com/repos/ros/ros_comm/issues/1085/events","html_url":"https://github.com/ros/ros_comm/issues/1085","id":238669528,"node_id":"MDU6SXNzdWUyMzg2Njk1Mjg=","number":1085,"title":"Proposal: message to support both Protobuf and original ROS message","user":{"login":"quning78","id":8507314,"node_id":"MDQ6VXNlcjg1MDczMTQ=","avatar_url":"https://avatars3.githubusercontent.com/u/8507314?v=4","gravatar_id":"","url":"https://api.github.com/users/quning78","html_url":"https://github.com/quning78","followers_url":"https://api.github.com/users/quning78/followers","following_url":"https://api.github.com/users/quning78/following{/other_user}","gists_url":"https://api.github.com/users/quning78/gists{/gist_id}","starred_url":"https://api.github.com/users/quning78/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/quning78/subscriptions","organizations_url":"https://api.github.com/users/quning78/orgs","repos_url":"https://api.github.com/users/quning78/repos","events_url":"https://api.github.com/users/quning78/events{/privacy}","received_events_url":"https://api.github.com/users/quning78/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":10,"created_at":"2017-06-26T21:05:48Z","updated_at":"2018-10-12T14:59:01Z","closed_at":null,"author_association":"NONE","body":"Hi, All,\r\n\r\nI did some research and find out there were some discussion/research on this topic, as links listed below:\r\n\r\nhttp://wiki.ros.org/sig/NextGenerationROS/MessageFormats\r\nhttps://discourse.ros.org/t/optional-fields-in-message/991/9\r\nhttp://design.ros2.org/articles/serialization.html\r\n\r\nProtobuf did has its pro side and people has intention to use it somehow in ROS message. I would like to raise this discussion again to see if we can have some common ground to move further.\r\n\r\nFor Protobuf, we are using it in a large project with a lot of pieces moving very quickly. So the rosbag was used to be a big problem because when we add new field in the message, it will fails on all the previous collected rosbag. We can convert them, but conversion itself is time consuming, not mentioning the complexity of version control. That's one of top reason we would like to use protobuf. \r\n\r\nHowever, we know there are some drawbacks for probobuf mentioned in the first link listed above. So, we are thinking maybe it's a good idea to have ROS support both of them natively. By natively, I mean, just like the current ros message, people can pub the message in pb or original ros msg format, and the subscriber will adapt to it depending on the published format. Also, all the tools can support both of them as well. \r\n\r\nSo, with large raw data, such as some sensor data, we can still keep them in original ros message format. for other control plane message, they can be in pb format, so any future changes won't break any run on previous collected rosbag data.\r\n\r\nAny idea if this is acceptable?  "},"comment":{"url":"https://api.github.com/repos/ros/ros_comm/issues/comments/429355335","html_url":"https://github.com/ros/ros_comm/issues/1085#issuecomment-429355335","issue_url":"https://api.github.com/repos/ros/ros_comm/issues/1085","id":429355335,"node_id":"MDEyOklzc3VlQ29tbWVudDQyOTM1NTMzNQ==","user":{"login":"mikepurvis","id":944666,"node_id":"MDQ6VXNlcjk0NDY2Ng==","avatar_url":"https://avatars0.githubusercontent.com/u/944666?v=4","gravatar_id":"","url":"https://api.github.com/users/mikepurvis","html_url":"https://github.com/mikepurvis","followers_url":"https://api.github.com/users/mikepurvis/followers","following_url":"https://api.github.com/users/mikepurvis/following{/other_user}","gists_url":"https://api.github.com/users/mikepurvis/gists{/gist_id}","starred_url":"https://api.github.com/users/mikepurvis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mikepurvis/subscriptions","organizations_url":"https://api.github.com/users/mikepurvis/orgs","repos_url":"https://api.github.com/users/mikepurvis/repos","events_url":"https://api.github.com/users/mikepurvis/events{/privacy}","received_events_url":"https://api.github.com/users/mikepurvis/received_events","type":"User","site_admin":false},"created_at":"2018-10-12T14:59:01Z","updated_at":"2018-10-12T14:59:01Z","author_association":"MEMBER","body":"Yes, the rosbag Python API generates message definitions on the fly based on what's stored in the bag file itself. This can be a source of headaches as the `type` of such a message instance is not a match for the regular message type, and you also can't pickle/unpickle those types. You'll also run into trouble (obviously) if you try to play those messages into a binary which uses updated definitions— the MD5s won't match and the subscription will fail.\r\n\r\nHowever, this scheme _is_ what enables bag migration to work, since you can have an active python environment with awareness of both the old and new type. See: http://wiki.ros.org/rosbag/migration"}}
{"actor":{"display_login":"mikepurvis"}}