ROS is shit. In every possible way. It's a set of semi-related components, most of which can be done far better by doing it the normal way or writing it yourself. Nobody wants a "DDS" to simply send bits across and nobody wants their build system and nobody wants their half-assed protobuf reimplementation. And so on.