ROS Backwards Compatibility in Distributed System
I'm helping to develop an industrial robotics system that uses ROS. The system will be distributed amongst several embedded devices, perhaps some more powerful machines for the complicated algorithms, and a few consoles. The roscore will be running on one of the more powerful machines/consoles.
After we get our system working, we plan to continue improving it, adding more devices as necessary. On the new devices we'll probably want to use the new awesomeFeatureX from the new version of ROS that'll be out then. I don't want to have to update each node on each embedded machine in service because something might break with all those updates, and there's no reason to fix something that isn't broken. It would also be a pain to have two different ROS systems running side by side, and doing so would defeat one of the reasons for using ROS in the first place. On the other hand, the system will have been working and will be depended upon, so we can't break anything by just updating the master, either.
So my question is: what would happen to a working, distributed system if a new ROS version were installed on the machine running the master?
Or basically, what it boils down to is: In the foreseeable future, will communication between a master of the future and nodes of the past still be the same format? Or perhaps devices programmed with new code can communicate with an old master?
Thanks in advance.